Erkunden der sicheren DevOps-Pipeline
Ziel einer Secure DevOps-Pipeline ist es, Entwicklungsteams zu ermöglichen, schnell zu arbeiten, ohne unerwünschte Sicherheitsrisiken in ihre Projekte einzuführen. Dieses Gleichgewicht zwischen Geschwindigkeit und Sicherheit erfordert das Einbetten von Sicherheitspraktiken in der gesamten Pipeline, anstatt die Sicherheit als separate Phase zu behandeln.
Sicherer DevOps-Pipelineworkflow
Eine umfassende Secure DevOps-Pipeline integriert Sicherheitsprüfungen in mehreren Phasen des Softwarebereitstellungsprozesses:
Der Workflow stellt sicher, dass die Sicherheitsüberprüfung kontinuierlich vom Code commit über die Produktionsbereitstellung erfolgt. Jede Phase enthält geeignete Sicherheitskontrollen, die automatisch ausgeführt werden, ohne dass ein manueller Eingriff für Routineprüfungen erforderlich ist.
Wesentliche Sicherheitsfeatures jenseits von Standardpipelinen
Sichere DevOps-Pipelines enthalten zusätzliche Sicherheitsfeatures, die in der Regel nicht in standardmäßigen CI/CD-Pipelines gefunden werden. Diese Features behandeln häufige Sicherheitsrisiken, die herkömmliche Pipelines verpassen:
Paketverwaltung mit Sicherheitsgenehmigung
Die Herausforderung: Moderne Anwendungen sind von zahlreichen Drittanbieterpaketen, Bibliotheken und Komponenten abhängig. Diese Abhängigkeiten führen zu Sicherheitsrisiken:
- Bekannte Sicherheitsrisiken: Drittanbieterpakete enthalten möglicherweise bekannte Sicherheitsrisiken, die Angreifer ausnutzen können.
- Bösartige Pakete: Angreifer veröffentlichen manchmal bösartige Pakete mit Namen, die beliebten Paketen ähneln, und hoffen, dass Entwickler sie versehentlich installieren (Typosquatting).
- Lieferkettenangriffe: Kompromittierte Paketrepositorys oder Wartungskonten können dazu führen, dass bösartiger Code über legitime Updatekanäle verteilt wird.
- Lizenzcompliance: Einige Paketlizenzen sind möglicherweise nicht mit Ihrer beabsichtigten Verwendung kompatibel, wodurch rechtliche Risiken entstehen.
- Nicht gewartete Pakete: Pakete, die nicht mehr gepflegt werden, erhalten keine Sicherheitsupdates, was langfristige Sicherheitslücken zur Folge hat.
Die Lösung: Die Paketverwaltung mit Genehmigungsprozessen fügt Sicherheitsgates für Abhängigkeiten hinzu:
Genehmigungsworkflowschritte:
- Paketanforderung: Entwickler fordern eine Genehmigung an, um neue Pakete hinzuzufügen oder vorhandene pakete zu aktualisieren.
- Sicherheitsüberprüfung: Automatisierte Tools scannen Pakete für bekannte Sicherheitsrisiken mithilfe von Sicherheitsrisikodatenbanken wie CVE (Allgemeine Sicherheitsrisiken und Gefährdungen) und NVD (National Vulnerability Database).
- Lizenzüberprüfung: Automatisierte Tools überprüfen Paketlizenzen anhand von Organisationsrichtlinien.
- Abhängigkeitsanalyse: Tools analysieren transitive Abhängigkeiten (Abhängigkeiten von Abhängigkeiten) für Sicherheitsprobleme.
- Manuelle Überprüfung: Das Sicherheitsteam überprüft Hochrisikopakete oder Pakete, die erhöhte Berechtigungen anfordern.
- Genehmigung oder Ablehnung: Pakete werden zur Verwendung genehmigt, abgelehnt oder vor der Genehmigung zur Behebung markiert.
- Kontinuierliche Überwachung: Genehmigte Pakete werden kontinuierlich auf neu entdeckte Sicherheitsrisiken überwacht.
Vorteile der Früherkennung: Diese Schritte sollten frühzeitig in der Pipeline implementiert werden, um Probleme schneller im Entwicklungszyklus zu identifizieren:
- Probleme, die frühzeitig gefunden wurden, sind weniger teuer zu beheben als die probleme, die in der Produktion gefunden wurden.
- Entwickler können alternative Pakete auswählen, bevor Sie wichtige Funktionen für anfällige Abhängigkeiten erstellen.
- Sicherheitsüberprüfungen werden nicht zu Engpässen, wenn sie inkrementell und nicht alle gleichzeitig vor der Veröffentlichung auftreten.
Beispieltools:
- Azure Artifacts: Stellt die Paketverwaltung mit upstream-Quellen und Sicherheitsrisikoüberprüfungen bereit.
- GitHub Dependabot: Erkennt automatisch anfällige Abhängigkeiten und erstellt Pullanforderungen, um sie zu aktualisieren.
- Snyk: Überprüft Abhängigkeiten auf Sicherheitsrisiken und Lizenzprobleme.
- WhiteSource: Stellt Eine Softwarekompositionsanalyse für Open Source-Komponenten bereit.
Überprüfung der Quellcodesicherheit
Die Herausforderung: Anwendungsquellcode kann Sicherheitsrisiken enthalten, die während der Entwicklung nicht sofort offensichtlich sind:
- Einfügungsfehler: SQL Injection, Command Injection und andere Einfügungsrisiken.
- Authentifizierungsprobleme: Schwache Authentifizierungsmechanismen, hartcodierte Anmeldeinformationen oder falsche Sitzungsverwaltung.
- Gefährdung vertraulicher Daten: Versehentliche Einbeziehung von geheimen Schlüsseln, API-Schlüsseln oder persönlichen Informationen in Code.
- Sicherheitsfehler: Unsichere Standardkonfigurationen, nicht benötigte Features, die aktiviert sind, oder fehlende Sicherheitspatches.
- Verwenden von Komponenten mit bekannten Sicherheitsrisiken: Veraltete Bibliotheken oder Frameworks mit Sicherheitsproblemen.
- Unzureichende Protokollierung und Überwachung: Mangel an ausreichender Sicherheitsereignisprotokollierung für die Erkennung und Reaktion auf Vorfälle.
Die Lösung: Die Quellcodeüberprüfung fügt dem Buildprozess eine automatisierte Sicherheitsanalyse hinzu:
Statische Anwendungssicherheitstests (SAST):
- Analysiert den Quellcode, ohne ihn auszuführen.
- Identifiziert potenzielle Sicherheitsrisiken im Code.
- Erkennt allgemeine Sicherheitsrisikomuster wie SQL Injection, cross-site scripting (XSS) und Pufferüberläufe.
- Enthält spezifische Codespeicherorte und Anleitungen zur Behebung.
- Wird schnell genug ausgeführt, um während des Buildvorgangs Feedback zu geben.
Geheimes Scannen:
- Erkennt versehentlich zugesicherte geheime Schlüssel wie API-Schlüssel, Kennwörter und Zertifikate.
- Verhindert, dass Anmeldeinformationen in der Produktion bereitgestellt werden.
- Entwickler werden sofort benachrichtigt, wenn sensible Daten erkannt werden.
- Kann erkannte Anmeldeinformationen automatisch widerrufen, wenn sie in geheime Verwaltungssysteme integriert sind.
Codequalitätsanalyse:
- Identifiziert Codequalitätsprobleme, die zu Sicherheitsrisiken führen können.
- Erkennt komplexe Codepfade, die schwer zu sichern sind.
- Hebt Bereiche hervor, die zusätzliche Sicherheitsüberprüfung benötigen.
Scandauer: Die Quellcodeüberprüfung erfolgt nach der Erstellung der Anwendung, aber vor der Veröffentlichung und vor dem Testen der Vorabversion:
- Nach dem Build: Der vollständige Anwendungscode ist für die Analyse einschließlich generierter Code verfügbar.
- Vor dem Testen: Sicherheitsrisiken werden identifiziert, bevor Sicherheitstestressourcen investiert werden.
- Vor der Bereitstellung: Probleme werden erfasst, bevor sie die Staging- oder Produktions-Umgebungen erreichen.
Vorteile der Früherkennung:
- Die Quellüberprüfung identifiziert Sicherheitsrisiken weiter oben im Entwicklungszyklus.
- Entwickler erhalten sofortiges Feedback zu Sicherheitsproblemen in ihrem Code.
- Sicherheitsprobleme werden behoben, während der Code in den Köpfen der Entwickler neu ist.
- Die Kosten für die Behebung von Sicherheitsrisiken sind wesentlich niedriger als die Behebung dieser Sicherheitsrisiken in der Produktion.
Beispieltools:
- GitHub CodeQL: Semantischer Codeanalysemodul, das Sicherheitsrisiken in einer Codebasis erkennt.
- SonarQube: Kontinuierliches Inspektionstool, das Fehler, Codegeruch und Sicherheitsrisiken erkennt.
- Checkmarx: Statische Anwendungssicherheitstestplattform.
- Veracode: Sicherheitsanalyseplattform mit SAST-Funktionen.
- Microsoft Security Code Analysis: Erweiterung für Azure DevOps, die Sicherheitsanalysetools ausführt.
Integration mit fortlaufender Lieferung
Sowohl die Paketverwaltungsgenehmigung als auch die Quellcodeüberprüfung lassen sich nahtlos in fortlaufende Übermittlungspipelinen integrieren:
Automatisierte Kontrollpunkte: Sicherheitskontrollen werden zu automatisierten Pipelinekontrollpunkten, die erfüllt werden müssen, bevor die Pipeline fortgesetzt wird. Fehlgeschlagene Sicherheitsüberprüfungen verhindern, dass unsicherer Code voranschreitet.
Schnelles Feedback: Entwickler erhalten Sicherheitsfeedback innerhalb weniger Minuten als Tage oder Wochen. Dieses schnelle Feedback ermöglicht schnelle Korrekturen, bevor der Kontext verloren geht.
Sichtbarkeit der Sicherheit: Sicherheitsteams erhalten Einblicke in alle Code- und Abhängigkeiten, die bereitgestellt werden, ohne jede Änderung manuell überprüfen zu müssen.
Compliancedokumentation: Automatisierte Sicherheitsüberprüfungen erstellen Audit-Trails, die die Sicherheitsvalidierung in jeder Phase der Pipeline dokumentieren.
Adressierung des gesamten Lebenszyklus
In den folgenden Abschnitten dieses Moduls untersuchen wir diese wesentlichen Sicherheitsfeatures im Detail:
- Wichtige Überprüfungspunkte, an denen Sicherheitsprüfungen durchgeführt werden sollen.
- Kontinuierliche Strategien zur Sicherheitsüberprüfung.
- Implementierungsansätze für verschiedene Pipelinetypen.
- Tools und Techniken für eine effektive Sicherheitsautomatisierung.
- Wie man die Gründlichkeit in der Sicherheitsprüfung mit der Geschwindigkeit der Lieferung in Einklang bringt.