Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
DevSecOps, auch als Secure DevOps bezeichnet, baut auf der Praxis von DevOps auf, indem sicherheit in verschiedenen Phasen eines herkömmlichen DevOps-Lebenszyklus integriert wird. Zu den Vorteilen der Erstellung von Sicherheit in DevOps-Praktiken gehören:
- Machen Sie Ihre Anwendungen und Systeme sicherer, indem Sie Einblicke in Sicherheitsbedrohungen bieten und verhindern, dass Sicherheitsrisiken bereitgestellte Umgebungen erreichen.
- Erhöhen des Sicherheitsbewusstseins mit Ihren Entwicklungs- und Betriebsteams
- Integrieren automatisierter Sicherheitsprozesse in Ihren Softwareentwicklungslebenszyklus
- Reduzierung der Kosten zur Behebung durch frühzeitiges Auffinden von Sicherheitsproblemen in Entwicklungs- und Entwurfsphasen
Wenn DevSecOps auf Azure Kubernetes Service (AKS) angewendet wird, können unterschiedliche Organisationsrollen unterschiedliche Überlegungen zur Implementierung der Sicherheit haben. Beispiele für diese verschiedenen Organisationsrollen sind:
- Entwickler, die sichere Anwendungen erstellen, die auf AKS ausgeführt werden
- Cloud-Techniker erstellen sichere AKS-Infrastruktur
- Verschiedene Betriebsteams, die Cluster steuern oder Sicherheitsprobleme überwachen können
Dieser Artikel ist in verschiedene DevOps-Lebenszyklusphasen unterteilt und enthält Überlegungen und Empfehlungen für das Einbetten von Sicherheitskontrollen und bewährten Methoden für die Sicherheit. Dieser Leitfaden enthält allgemeine Prozesse und Tools für die Integration in kontinuierliche Integrations- und Bereitstellungspipelines (CI/CD), wobei nach Möglichkeit benutzerfreundliche integrierte Tools verwendet werden.
Als Voraussetzung für diesen Artikel empfehlen wir, Die Erstellung und Bereitstellung von Apps auf AKS mithilfe von DevOps und GitOps zu überprüfen.
Prozessablauf
Laden Sie eine Visio-Datei dieser Architektur herunter.
Hinweis
Während dieser Artikel auf AKS und GitHub verweist, gelten diese Empfehlungen für alle Container-Orchestrierungs- oder CI/CD-Plattformen. Während die Implementierungsdetails variieren können, sind die meisten in den einzelnen Phasen erwähnten Konzepte und Praktiken weiterhin relevant und anwendbar.
- Microsoft Entra ID wird als Identitätsanbieter für GitHub konfiguriert. Konfigurieren Sie die mehrstufige Authentifizierung (Multifactor Authentication, MFA), um zusätzliche Authentifizierungssicherheit bereitzustellen.
- Entwickler verwenden Visual Studio Code oder Visual Studio mit Sicherheitserweiterungen, mit denen ihr Code proaktiv auf Sicherheitsrisiken analysiert werden kann.
- Entwickler commiten Anwendungscode in ein unternehmenseigenes und verwaltetes GitHub Enterprise-Repository.
- GitHub Enterprise integriert die automatische Sicherheits- und Abhängigkeitsüberprüfung über GitHub Advanced Security.
- Pull-Anforderungen lösen fortlaufende Integration (CI)-Builds und automatisierte Tests über GitHub Actions aus.
- Der CI-Buildworkflow über GitHub Actions generiert ein Docker-Containerimage, das in Azure Container Registry gespeichert ist.
- Sie können manuelle Genehmigungen für Bereitstellungen in bestimmten Umgebungen, wie der Produktionsumgebung, als Teil des CD-Workflows (Kontinuierliche Bereitstellung) in GitHub Actions einrichten.
- GitHub Actions cd to AKS aktivieren. Verwenden Sie GitHub Advanced Security, um geheime Schlüssel, Anmeldeinformationen und andere vertrauliche Informationen in Ihren Anwendungsquell- und Konfigurationsdateien zu erkennen.
- Microsoft Defender wird verwendet, um Azure Container Registry, AKS-Cluster und Azure Key Vault auf Sicherheitsrisiken zu überprüfen.
- Microsoft Defender für Container überprüft das Containerimage auf bekannte Sicherheitsrisiken, beim Hochladen in den Container Registry.
- Sie können Defender for Containers auch verwenden, um Scans Ihrer AKS-Umgebung durchzuführen und Laufzeitschutz vor Bedrohungen für Ihre AKS-Cluster bereitzustellen.
- Microsoft Defender für Key Vault erkennt schädliche und ungewöhnliche, verdächtige Versuche, auf key vault Konten zuzugreifen.
- Azure Policy kann auf Container Registry und Azure Kubernetes Service (AKS) zur Einhaltung und Durchsetzung von Richtlinien angewendet werden. Allgemeine Sicherheitsrichtlinien für die Containerregistrierung und AKS sind für die schnelle Aktivierung integriert.
- Azure Key Vault wird verwendet, um geheime Schlüssel und Anmeldeinformationen zur Laufzeit sicher in eine Anwendung einzufügen und vertrauliche Informationen von Entwicklern zu trennen.
- Das AKS-Netzwerkrichtlinienmodul ist so konfiguriert, dass der Datenverkehr zwischen Anwendungs pods mithilfe von Kubernetes-Netzwerkrichtlinien gesichert wird.
- Die kontinuierliche Überwachung des AKS-Clusters kann mithilfe von Azure Monitor und Container insights eingerichtet werden, um Leistungsmetriken aufzunehmen und Anwendungs- und Sicherheitsprotokolle zu analysieren.
- Container-Insights erfassen Leistungsmetriken sowie Anwendungs- und Cluster-Logs.
- Diagnose- und Anwendungsprotokolle werden in einen Azure Log Analytics Arbeitsbereich abgerufen, um Protokollabfragen auszuführen.
- Microsoft Sentinel, bei dem es sich um eine SIEM-Lösung (Security Information and Event Management) handelt, können verwendet werden, um die AKS-Clusterprotokolle für alle Sicherheitsbedrohungen basierend auf definierten Mustern und Regeln zu erfassen und weiter zu analysieren.
- Open-Source Tools wie Zed Attack Proxy (ZAP) (ZAP) können verwendet werden, um Penetrationstests für Webanwendungen und Dienste durchzuführen.
- Defender für DevOps, ein in Defender für Cloud verfügbarer Dienst, ermöglicht Sicherheitsteams die Verwaltung der DevOps-Sicherheit in mehreren Pipelineumgebungen, einschließlich GitHub und Azure DevOps.
Übersicht und Verantwortlichkeiten von Teammitgliedern
Erwägen Sie die Verwaltung der Komplexität von DevSecOps bei Kubernetes-basierten Lösungsbereitstellungen als Trennung von Verantwortlichkeiten. Welches Team in einer Unternehmensumgebung sollte sich mit jedem Aspekt der Bereitstellung befassen? Welche Tools und Prozesse sollten ein Team einsetzen, um ihre Ziele am besten zu erreichen? In diesem Abschnitt werden die allgemeinen Rollen von Entwicklern, Anwendungsoperatoren (Websitezuverlässigkeitsingenieuren), Clusteroperatoren und Sicherheitsteams erläutert.
Entwickler
Entwickler sind für das Schreiben des Anwendungscodes verantwortlich. Sie sind auch für das Commit ihres Codes an das angegebene Repository verantwortlich. Eine der wichtigen Verantwortlichkeiten von Entwicklern umfasst auch das Erstellen und Ausführen von Skripts für automatisierte Tests, um sicherzustellen, dass ihr Code wie beabsichtigt funktioniert und nahtlos in den Rest der Anwendung integriert wird. Sie definieren und skripten auch das Erstellen von Containerimages als Teil der Automatisierungspipeline.
Anwendungsoperatoren (Techniker der Standortsicherheit)
Das Erstellen von Anwendungen in der Cloud mithilfe von Containern und Kubernetes kann die Anwendungsentwicklung, Bereitstellung und Skalierbarkeit vereinfachen. Diese Entwicklungsansätze schaffen aber auch zunehmend verteilte Umgebungen, die die Verwaltung erschweren. Websitezulässigkeitstechniker erstellen Lösungen, um die Aufsicht über große Softwaresysteme zu automatisieren. Sie dienen als Brücke zwischen Entwicklungs- und Clusterbetreiberteams und helfen bei der Einrichtung und Überwachung von Zielen und Fehlerbudgets auf Serviceebene. Auf diese Weise helfen sie beim Verwalten von Anwendungsbereitstellungen und schreiben häufig Kubernetes-Manifestdateien (YAML).
Clusteroperatoren
Clusteroperatoren sind für die Konfiguration und Verwaltung der Clusterinfrastruktur verantwortlich. Sie verwenden häufig Best Practices für Infrastructure as Code (IaC) und Frameworks wie GitOps, um ihre Cluster bereitzustellen und zu verwalten. Sie verwenden verschiedene Überwachungstools wie Azure Monitor Containereinblicke und Prometheus/Grafana, um die Gesamtintegrität des Clusters zu überwachen. Sie sind für Patching, Clusterupgrades, Berechtigungen und rollenbasierte Zugriffssteuerung auf dem Cluster verantwortlich. In DevSecOps-Teams stellen sie sicher, dass die Cluster die Sicherheitsanforderungen des Teams erfüllen und mit dem Sicherheitsteam zusammenarbeiten, um diese Standards zu erstellen.
Sicherheitsteam
Das Sicherheitsteam ist für die Entwicklung von Sicherheitsstandards und deren Durchsetzung verantwortlich. Einige Teams sind möglicherweise für das Erstellen und Auswählen von Azure-Richtlinien verantwortlich, die in Abonnements und Ressourcengruppen, die Cluster enthalten, durchgesetzt werden. Sie überwachen Sicherheitsprobleme und stellen zusammen mit den anderen Teams sicher, dass die Sicherheit in den Vordergrund jedes Schritts des DevSecOps-Prozesses gestellt wird.
DevSecOps-Lebenszyklusphasen
Sicherheitskontrollen werden in jeder Phase des Softwareentwicklungslebenszyklus (SDLC) implementiert. Diese Implementierung ist ein wichtiger Bestandteil einer DevSecOps-Strategie und des Shift-left-Ansatzes.
Laden Sie eine Visio-Datei dieser Architektur herunter.
Planungsphase
Die Planphase weist in der Regel die geringste Automatisierung auf, hat aber wichtige Sicherheitsauswirkungen, die sich erheblich auf spätere DevOps-Lebenszyklusphasen auswirken. Diese Phase umfasst die Zusammenarbeit zwischen Sicherheits-, Entwicklungs- und Betriebsteams. Die Einbeziehung von Sicherheitsbeteiligten in diese Phase des Entwerfens und Planens stellt sicher, dass Sicherheitsanforderungen und Sicherheitsprobleme angemessen berücksichtigt oder abgemildert werden.
Best Practice – Entwerfen einer sichereren Anwendungsplattform
Das Erstellen einer sichereren AKS-gehosteten Plattform ist ein wichtiger Schritt, um sicherzustellen, dass die Sicherheit auf jeder Ebene in das System integriert ist, beginnend mit der Plattform selbst. Die Plattform kann sowohl interne Komponenten für den Cluster (z. B. Laufzeitsicherheits- und Richtlinien-Agents) als auch Komponenten enthalten, die sich außerhalb von AKS befinden (z. B. Netzwerkfirewalls und Containerregistrierungen). Weitere Informationen finden Sie unter AKS in einer Anwendungslandungszone, die wichtige Entwurfsbereiche wie Sicherheit, Identität und Netzwerktopologie umfasst.
Best Practice – Bedrohungsmodellierung in Ihren Prozess integrieren
- Die Bedrohungsmodellierung ist in der Regel eine manuelle Aktivität, die Sicherheits- und Entwicklungsteams umfasst. Es wird verwendet, um Bedrohungen in einem System zu modellieren und zu finden, damit Sicherheitsrisiken vor der Codeentwicklung oder Änderungen an einem System behoben werden können. Bedrohungsmodellierung kann zu unterschiedlichen Zeiten auftreten, ausgelöst durch Ereignisse wie eine erhebliche Softwareänderung, Lösungsarchitekturänderung oder Sicherheitsvorfälle.
- Es wird empfohlen, das STRIDE-Bedrohungsmodell zu verwenden. Diese Methodik beginnt mit einem Datenflussdiagramm und verwendet die Bedrohungskategorien STRIDE mnemonic (Spoofing, Tampering, Info Disclosure, Repudiation, Denial of Service und Rechteerweiterungen), um Teams die Möglichkeit zu geben, Risiken zu identifizieren, zu mindern und zu überprüfen. Außerdem enthält es ein Modellierungstool zum Notieren und Visualisieren von Systemkomponenten, Datenflüssen und Sicherheitsgrenzen. Das Erstellen von Bedrohungsmodellierung in Ihre SDLC-Prozesse führt zu neuen Prozessen und mehr Arbeit, um aktualisierte Bedrohungsmodelle aufrechtzuerhalten. Sie trägt jedoch dazu bei, die Sicherheit frühzeitig zu gewährleisten, was dazu beiträgt, die potenziellen Kosten für den Umgang mit Sicherheitsproblemen zu reduzieren, die in späteren SDLC-Phasen gefunden werden.
Best Practice – Anwenden Azure Well Architect Framework (WAF)
- Wenden Sie bewährte Methoden für WAF-Sicherheitspfeiler an, die Anleitungen für Identitätsverwaltung, Anwendungssicherheit, Infrastrukturschutz, Datumssicherheit und DevOps bereitstellen, da sie für cloudeigene Umgebungen gelten.
- Wenden Sie die bewährten Methoden von WAF an, da sie für DevSecOps und die Überwachung Ihrer Produktionsumgebungen gilt.
Entwicklungsphase
"Das Prinzip des 'links Verschieben' ist ein wesentlicher Bestandteil der DevSecOps-Denkweise." Dieser Prozess beginnt, bevor code sogar in ein Repository eingesichert und über eine Pipeline bereitgestellt wird. Wenn Sie bewährte Methoden für sicheres Codieren einführen und IDE-Tools und Plug-Ins für die Codeanalyse während der Entwicklungsphase verwenden, können Sie sicherheitsrelevante Probleme früher im Entwicklungslebenszyklus beheben, wenn sie einfacher zu beheben sind.
Best Practice – Erzwingen von Standards für sicheres Codieren
- Indem Sie bewährte Methoden und Prüflisten für sicheres Codieren verwenden, können Sie Ihren Code vor gängigen Sicherheitsrisiken wie Einfügung und unsicheren Design schützen. Die OWASP Foundation veröffentlicht Branchenstandardempfehlungen für sicheres Codieren, die Sie beim Schreiben von Code übernehmen sollten. Diese Richtlinien sind besonders wichtig beim Entwickeln öffentlich zugänglicher Webanwendungen oder Dienste.
- Zusätzlich zu allgemeinen bewährten Methoden für die Sicherheit sollten Sie auch sichere Codierungsmethoden für Ihre spezifischen Programmiersprachenlaufzeiten wie Java und .NET überprüfen.
- Sie können Protokollierungsstandards erzwingen, um vertrauliche Informationen vor einem Verlust in Anwendungsprotokolle zu schützen. Die beliebtesten Protokollierungsframeworks, z. B. log4j und log4net, stellen Filter und Plug-Ins bereit, um vertrauliche Informationen wie Kontonummern oder persönliche Daten zu maskieren.
Bewährte Methode – Verwenden von IDE-Tools und Plug-Ins zum Automatisieren von Sicherheitsprüfungen
Die beliebtesten IDEs wie Visual Studio, Visual Studio Code, IntelliJ IDEA und Eclipse unterstützen Erweiterungen, die Sie verwenden können, um sofortiges Feedback und Empfehlungen für potenzielle Sicherheitsprobleme zu erhalten, die Sie beim Schreiben von Anwendungscode möglicherweise eingeführt haben.
- SonarLint ist ein IDE-Plug-In, das für die meisten gängigen Sprachen und Entwicklerumgebungen verfügbar ist. SonarLint liefert wertvolles Feedback und scannt Ihren Code automatisch auf häufige Programmierfehler und potenzielle Sicherheitsprobleme.
- Andere kostenlose und kommerzielle Plug-Ins konzentrieren sich auf sicherheitsspezifische Elemente, z. B. die OWASP Top 10 gängige Sicherheitsanfälligkeiten. Das Synk-Plug-In überprüft beispielsweise auch Ihre Anwendungsquelle und Abhängigkeiten von Drittanbietern und benachrichtigt Sie, wenn Sicherheitsrisiken gefunden werden.
- Mit dem Static Analysis Results Interchange Format (SARIF)-Plugin für Visual Studio und Visual Studio Code können Sie Sicherheitsrisiken von beliebten Tools für statische Anwendungssicherheitstests (Static Application Security Testing, SAST) auf intuitive und leicht verständliche Weise anzeigen, anstatt Ergebnisse aus rohen JSON-Ausgabedateien zu interpretieren.
Bewährte Methode – Einrichten von Steuerelementen für Ihre Quellcoderepositorys
- Richten Sie eine Branching-Strategie ein, damit die Verzweigung im gesamten Unternehmen konsistent genutzt wird. Methodologien wie Release flow und GitHub flow verfügen über strukturierte Richtlinien dazu, wie Branches verwendet werden sollten, um Team- und Parallelentwicklung zu unterstützen. Diese Methoden können Teams dabei helfen, Standards und Kontrollmechanismen für Code-Commits und -Zusammenführungen innerhalb Ihres CI/CD-Workflows einzurichten.
- Bestimmte Verzweigungen, z. B. Hauptzweige, sind langanhaltende Verzweigungen, die die Integrität des Quellcodes Ihrer Anwendung beibehalten. Diese Zweige sollten Merge-Richtlinien einrichten, bevor Änderungen zusammengeführt oder übertragen werden können. Zu den bewährten Methoden gehören:
- Verhindern Sie, dass andere Entwickler Code direkt in Ihren Main-Branch einpflegen.
- Richten Sie einen Peer-Review-Prozess ein, und erfordern Sie eine Mindestanzahl von Genehmigungen, bevor Änderungen mit einer Hauptzweigung zusammengeführt werden können. Sie können diese Steuerelemente ganz einfach mit GitHub konfigurieren und erzwingen. GitHub ermöglicht es Ihnen auch, Gruppen von autorisierten Genehmigungsberechtigten festzulegen, wenn dies für geschützte Umgebungen erforderlich ist.
- Verwenden Sie Pre-Commit-Hooks , um in Ihrem Anwendungsquellcode nach vertraulichen Informationen zu suchen und zu verhindern, dass ein Commit auftritt, wenn ein Sicherheitsproblem gefunden wird.
- Verwenden Sie die GitHub bereitgestellten, integrierten Pre-Commit-Hooks, die einfach für ein bestimmtes Projekt konfiguriert werden können. Beispielsweise gibt es vordefinierte Hooks, um nach geheimen Schlüsseln, privaten Schlüsseln und Anmeldeinformationen zu suchen und einen Commit zu verhindern, wenn eines dieser Probleme gefunden wird.
- Richten Sie die rollenbasierte Zugriffssteuerung innerhalb Ihres Versionssteuerungssystems ein.
- Erstellen Sie klar definierte Rollen mithilfe des Prinzips der geringsten Berechtigungen. Eine CI/CD-Pipeline ist Ihre Lieferkette für Produktionsimplementierungen.
- Wenden Sie etablierte Benutzer - oder Gruppenrollen innerhalb Ihrer Organisation an. Rollen wie Administrator, Entwickler, Sicherheitsadministrator und Operator müssen erstellt werden, um Einzelpersonen basierend auf ihrer spezifischen Rolle und Funktion in Bezug auf Ihre CI/CD-Workflows zu gruppieren.
- Aktivieren Sie die Überwachung Ihrer Workflows, sodass Transparenz und Rückverfolgbarkeit für die Konfiguration und andere Änderungen in Bezug auf Ihre CI/CD-Pipelines vorhanden sind.
Bewährte Methode – Sichern Ihrer Containerimages
- Verwenden Sie einfache Bilder mit minimalem Betriebssystembedarf, um den gesamten Oberflächenangriffsbereich zu reduzieren. Betrachten Sie minimale Images wie Alpine oder sogar distroless Images, die nur Ihre Anwendung und die zugehörige Laufzeit enthalten. Mariner, die Open Source Linux-Verteilung von Microsoft, ist eine einfache, gehärtete Verteilung, die für AKS zum Hosten von containerisierten Workloads entwickelt wurde.
- Verwenden Sie beim Erstellen Ihrer Container nur vertrauenswürdige Basisimages. Diese Basisimages sollten aus einer privaten Registrierung abgerufen werden, die häufig auf Sicherheitsrisiken überprüft wird.
- Verwenden Sie Entwicklertools, um Imagerisiken lokal auszuwerten.
- Trivy ist ein Beispiel für ein Open-Source-Tool, mit dem Sie Sicherheitsrisiken in Ihren Containerimages analysieren können.
- Verhindern des Stammbenutzerzugriffs/-kontexts für ein Bild. Standardmäßig werden Container als Root ausgeführt.
- Für Container, die erhöhte Sicherheit erfordern, ziehen Sie in Betracht, ein AppArmor-Profil in Ihrem Kubernetes-Cluster zu nutzen, um die Sicherheit Ihrer laufenden Container weiter zu unterstützen.
Build-Phase
Während der Buildphase arbeiten Entwickler mit den Zuverlässigkeitstechnikern und Sicherheitsteams der Website zusammen, um automatisierte Scans ihrer Anwendungsquelle in ihre CI-Buildpipelines zu integrieren. Die Pipelines sind so konfiguriert, dass Sicherheitspraktiken wie SAST, SCA und geheime Überprüfungen mithilfe der Sicherheitstools und Erweiterungen der CI/CD-Plattform aktiviert werden.
Bewährte Methode – Ausführen statischer Code Analysis (SAST) zum Auffinden potenzieller Sicherheitsrisiken in Ihrem Anwendungsquellcode
- Verwenden Sie GitHub Advanced Security-Scanfunktionen zum Scannen von Code und CodeQL.
- Code scanning ist ein Feature, mit dem Sie den Code in einem GitHub Repository analysieren, um Sicherheitsrisiken und Codierungsfehler zu finden. Alle von der Analyse identifizierten Probleme werden in GitHub Enterprise Cloud angezeigt.
- Wenn beim Scannen von Code eine potenzielle Sicherheitsanfälligkeit oder ein Fehler im Code gefunden wird, zeigt GitHub eine Warnung im Repository an.
- Sie können auch Branch-Regeln für erforderliche Statusprüfungen konfigurieren, um beispielsweise zu erzwingen, dass ein Feature-Branch mit dem Basiszweig auf dem neuesten Stand ist, bevor neuer Code zusammengeführt wird. Diese Vorgehensweise stellt sicher, dass Ihr Branch immer mit dem neuesten Code getestet wurde.
- Verwenden Sie Tools wie kube-score , um Ihre Kubernetes-Bereitstellungsobjekte zu analysieren.
- kube-score ist ein Tool, das statische Codeanalyse Ihrer Kubernetes-Objektdefinitionen durchführt.
- Die Ausgabe ist eine Liste der Empfehlungen, die Sie verbessern können, um Ihre Anwendung sicherer und robuster zu machen.
Bewährte Methode – Durchführung einer Geheimnisüberprüfung, um die betrügerische Nutzung von Geheimnissen zu verhindern, die versehentlich in ein Repository eingegeben wurden
- Wenn Secret scanning für ein Repository aktiviert ist, überprüft GitHub den Code auf Muster, die Geheimnisse identifizieren, die von vielen Dienstanbietern genutzt werden.
- GitHub führt außerdem regelmäßig einen vollständigen Git-Verlaufsscan von vorhandenen Inhalten in Repositorys aus und sendet Benachrichtigungen.
- Für Azure DevOps verwendet Defender für Cloud Secret-Scanning, um Anmeldeinformationen, Geheimnisse, Zertifikate und andere vertrauliche Inhalte in Ihrem Quellcode und der Buildausgabe zu erkennen.
- Geheime Überprüfung kann als Teil der Microsoft Security DevOps für Azure DevOps Erweiterung ausgeführt werden.
Bewährte Methode – Verwenden von Tools zur Softwarekompositionsanalyse (SCA), um Open-Source-Komponenten in der Codebasis nachzuverfolgen und Sicherheitsrisiken in Abhängigkeiten zu erkennen
- Mit der Abhängigkeitsüberprüfung können Sie unsichere Abhängigkeiten abfangen, bevor Sie sie in Ihre Umgebung einführen und Informationen zu Lizenz, Abhängigen und Alter von Abhängigkeiten bereitstellen. Es bietet eine leicht verständliche Visualisierung von Abhängigkeitsänderungen mit einem umfassenden Diff im Tab "Dateien geändert" eines Pull-Requests.
- Dependabot führt eine Überprüfung durch, um unsichere Abhängigkeiten zu erkennen und Dependabot-Benachrichtigungen zu senden, wenn der GitHub Advisory Database eine neue Empfehlung hinzugefügt wird oder wenn abhängigkeitsdiagramm für ein Repository geändert wird.
Bewährte Methode – Aktivieren von Sicherheitsüberprüfungen von Infrastruktur-as-Code-Vorlagen (IaC), um Cloud-Fehlkonfigurationen zu minimieren, die Produktionsumgebungen erreichen
- Proaktive Überwachung der Konfigurationen von Cloudressourcen während des gesamten Entwicklungslebenszyklus.
- Microsoft Defender für DevOps unterstützt sowohl GitHub als auch Azure DevOps Repositorys.
Bewährte Methode – Scannen Sie Ihre Workloadimages in Containerregistrierungen, um bekannte Sicherheitsrisiken zu identifizieren.
- Defender für Container überprüft die Container in container Registry und Amazon AWS Elastic Container Registry (ECR), um Sie zu benachrichtigen, wenn bekannte Sicherheitsrisiken in Ihren Images vorhanden sind.
- Azure Policy kann aktiviert werden, um eine Sicherheitsrisikobewertung für alle in der Containerregistrierung gespeicherten Images zu erledigen und detaillierte Informationen zu den einzelnen Ermittlungen bereitzustellen.
Best Practice – Automatisiertes Erstellen neuer Images bei Aktualisierung des Basisimages
- Azure Container Registry Tasks ermittelt beim Erstellen eines Containerimages dynamisch Basisimageabhängigkeiten. Dadurch kann erkannt werden, wenn das Basisimage eines Anwendungsimages aktualisiert wird. Mit einer vorkonfigurierten Buildaufgabe können Containerregistrierungsaufgaben automatisch jedes Anwendungsimage neu erstellen, das auf das Basisimage verweist.
Bewährte Methode – Verwenden der Containerregistrierung, Azure Key Vault und Notation, um Ihre Containerimages digital zu signieren und AKS-Cluster so zu konfigurieren, dass nur validierte Images zulässig sind
- Azure Key Vault speichert einen Signaturschlüssel, der von notation mit dem Notation Key Vault Plugin (azure-kv) verwendet werden kann, um Containerimages und andere Artefakte zu signieren und zu überprüfen. Mit der Containerregistrierung können Sie diese Signaturen mithilfe der Azure CLI Befehle anfügen.
- Mit den signierten Containern können Benutzer sicherstellen, dass Bereitstellungen aus einer vertrauenswürdigen Entität erstellt werden und überprüfen, ob ein Artefakt seit seiner Erstellung nicht manipuliert wurde. Das signierte Artefakt stellt Integrität und Authentizität sicher, bevor der Benutzer ein Artefakt in jede Umgebung zieht, wodurch Angriffe vermieden werden.
- Mit Ratify können Kubernetes-Cluster Artefaktesicherheitsmetadaten vor der Bereitstellung überprüfen und nur für die Bereitstellung zulassen, die einer von Ihnen erstellten Zulassungsrichtlinie entsprechen.
Bereitstellungsphase
Während der Bereitstellungsphase arbeiten Entwickler, Anwendungsoperatoren und Clusteroperatorenteams zusammen daran, die richtigen Sicherheitskontrollen für die kontinuierlichen Bereitstellungspipelinen (CD) einzurichten, um Code in einer Produktionsumgebung sicherer und automatisierter bereitzustellen.
Bewährte Methode – Steuern des Zugriffs und des Workflows der Bereitstellungspipeline
- Sie können wichtige Branches schützen, indem Sie Branchschutzregeln festlegen. Diese Regeln legen fest, ob Mitwirkende die Verzweigung löschen oder einen erzwungenen Push durchführen können. Sie legen auch Anforderungen für alle Pushs an den Branch fest, wie zum Beispiel erfolgreich bestandene Statusprüfungen oder einen linearen Commit-Verlauf.
- Mithilfe von Umgebungen für die Bereitstellung können Sie Umgebungen mit Schutzregeln und geheimen Schlüsseln konfigurieren.
- Sie können das Feature "Genehmigungen und Gates " nutzen, um den Workflow der Bereitstellungspipeline zu steuern. Sie können z. B. manuelle Genehmigungen von einem Sicherheits- oder Betriebsteam vor einer Bereitstellung in einer Produktionsumgebung anfordern.
Bewährte Methode – Sichere Bereitstellungsanmeldeinformationen
- OpenID Connect (OIDC) ermöglicht es Ihren GitHub-Aktions-Workflows, auf Ressourcen in Azure zuzugreifen, ohne die Azure-Anmeldeinformationen als langlebige GitHub-Geheimnisse speichern zu müssen.
- Mithilfe von Umgebungen für die Bereitstellung können Sie Umgebungen mit Schutzregeln und geheimen Schlüsseln konfigurieren.
- Durch einen pullbasierten Ansatz für CI/CD mit GitOps können Sie Sicherheitsanmeldeinformationen in Ihren Kubernetes-Cluster verschieben, wodurch die Sicherheits- und Risikooberfläche reduziert wird, indem Anmeldeinformationen aus der Speicherung in Ihrem externen CI-Tool entfernt werden. Sie können auch die zulässigen eingehenden Verbindungen reduzieren und den Zugriff auf Administratorebene auf Ihre Kubernetes-Cluster beschränken.
Bewährte Methode– Führen Sie dynamische Anwendungssicherheitstests (DAST) aus, um Sicherheitsrisiken in Ihrer ausgeführten Anwendung zu finden.
- Verwenden Sie GitHub Actions in Bereitstellungsworkflows, um tests für dynamische Anwendungssicherheitstests (DAST) auszuführen.
- Verwenden Sie Open-Source-Tools wie ZAP , um Penetrationstests für gängige Webanwendungsrisiken durchzuführen.
Bewährte Methode – Bereitstellen von Containerimages nur aus vertrauenswürdigen Registrierungen
- Verwenden Sie Defender für Container, um Azure Policy Add-On für Kubernetes zu aktivieren.
- Aktivieren Sie Azure Policy, damit Containerimages nur aus vertrauenswürdigen Registrierungen bereitgestellt werden können.
Betriebsphase
Während dieser Phase werden Aufgaben zur Betriebsüberwachung und Sicherheitsüberwachung durchgeführt, um potenzielle Sicherheitsvorfälle proaktiv zu überwachen, zu analysieren und zu benachrichtigen. Produktions-Observability-Tools wie Azure Monitor und Microsoft Sentinel werden verwendet, um die Einhaltung von Unternehmenssicherheitsstandards zu überwachen und sicherzustellen.
Bewährte Methode – Verwenden von Microsoft Defender für die Cloud, um automatisiertes Scannen und Überwachen Ihrer Produktionskonfigurationen zu ermöglichen
- Führen Sie kontinuierliche Überprüfung durch, um Abweichung im Sicherheitsrisikozustand Ihrer Anwendung zu erkennen und einen Prozess zum Patchen und Ersetzen der anfälligen Bilder zu implementieren.
- Implementieren sie die automatisierte Konfigurationsüberwachung für Betriebssysteme.
- Verwenden Sie Microsoft Defender for Cloud Containerempfehlungen (unter dem Abschnitt Compute und apps), um Basisüberprüfungen für Ihre AKS-Cluster durchzuführen. Erhalten Sie Benachrichtigungen im dashboard Microsoft Defender for Cloud, wenn Konfigurationsprobleme oder Sicherheitsrisiken gefunden werden.
- Verwenden Sie Microsoft Defender for Cloud und folgen Sie den Empfehlungen zum Netzwerkschutz, um die Netzwerkressourcen Ihrer AKS-Cluster abzusichern.
- Führen Sie eine Sicherheitsrisikobewertung für bilder aus, die in der Containerregistrierung gespeichert sind.
- Implementieren Sie kontinuierliche Scans für laufende Images in der Containerregistrierung, indem Sie Defender für Container aktivieren.
Bewährte Methode – Halten Sie Ihre Kubernetes-Cluster auf dem neuesten Stand
- Kubernetes-Versionen werden häufig veröffentlicht. Es ist wichtig, eine Strategie für das Lebenszyklusmanagement zu haben, um sicherzustellen, dass Sie nicht zurückfallen und weiterhin unterstützt werden. AKS ist ein verwaltetes Angebot, das Ihnen Tools und Flexibilität zum Verwalten dieses Upgradeprozesses bietet. Sie können die geplanten Wartungsfunktionen der AKS-Plattform verwenden, um mehr Kontrolle über Wartungsfenster und Upgrades zu haben.
- AKS-Arbeitsknoten sollten häufiger aktualisiert werden. Wir stellen wöchentliche Betriebssystem- und Laufzeitupdates bereit, die automatisch über den unbeaufsichtigten Modus oder über die Azure CLI angewendet werden können, um mehr Kontrolle und umfassende Updates zu erhalten.
Bewährte Methode – Verwenden von Azure Policy zum Sichern und Steuern Ihrer AKS-Cluster
- Nach der Installation des Azure Policy-Add-Ons für AKS können Sie einzelne Richtliniendefinitionen oder Gruppen von Richtliniendefinitionen, die als Initiativen (auch als Richtliniensätze bezeichnet) bezeichnet werden, auf Ihren Cluster anwenden.
- Verwenden Sie Built-In-Azure-Richtlinien für häufige Szenarien wie das Verhindern der Ausführung privilegierter Container oder nur die Genehmigung zugelassener externer IPs. Sie können auch benutzerdefinierte Richtlinien für bestimmte Anwendungsfälle erstellen.
- Wenden Sie Richtliniendefinitionen auf Ihren Cluster an, und überprüfen Sie, ob diese Zuordnungen erzwungen werden.
- Verwenden Sie Gatekeeper, um einen Zulassungscontroller zu konfigurieren, der Bereitstellungen basierend auf den angegebenen Regeln zulässt oder verweigert. Azure Policy erweitert Gatekeeper.
- Sichern Sie den Datenverkehr zwischen Workload-Pods mithilfe von Netzwerkrichtlinien in AKS.
- Installieren Sie das Netzwerkrichtlinienmodul, und erstellen Sie Kubernetes-Netzwerkrichtlinien , um den Datenverkehr zwischen Pods in AKS zu steuern. Netzwerkrichtlinie kann für Linux-basierte oder Windows-basierte Knoten und Pods in AKS verwendet werden.
Bewährte Methode – Verwenden von Azure Monitor für kontinuierliche Überwachung und Warnung
- Verwenden Sie Azure Monitor, um Protokolle und Metriken von AKS zu sammeln. Sie erhalten Einblicke in die Verfügbarkeit und Leistung Ihrer Anwendung und Infrastruktur. Außerdem erhalten Sie Zugriff auf Signale, um die Integrität Ihrer Lösung zu überwachen und ungewöhnliche Aktivitäten frühzeitig zu erkennen.
- Kontinuierliche Überwachung mit Azure Monitor erweitert Freigabepipelines, um auf Basis von Überwachungsdaten Releases zu steuern oder zurückzusetzen. Azure Monitor nimmt auch Sicherheitsprotokolle ein und kann auf verdächtige Aktivitäten aufmerksam machen.
- Integrieren Sie Ihre AKS-Instanzen in Azure Monitor und konfigurieren Sie Diagnoseeinstellungen für Ihren Cluster.
Bewährte Methode – Verwenden von Microsoft Defender for Cloud für die aktive Bedrohungsüberwachung
- Microsoft Defender for Cloud bietet aktive Bedrohungsüberwachung auf Knotenebene im AKS (VM-Bedrohungen) und für interne Vorgänge.
- Defender für DevOps sollte für eine umfassende Sichtbarkeit verwendet werden und bietet Sicherheits- und Betreiberteams ein zentrales Dashboard für alle Ihre CI/CD-Pipelines. Diese Funktionalität ist besonders nützlich, wenn Sie Multi-Pipeline-Plattformen wie Azure DevOps und GitHub verwenden oder Pipelines in öffentlichen Clouds ausführen.
- Defender für Key Vault kann verwendet werden, um ungewöhnliche, verdächtige Versuche, auf key vault Konten zuzugreifen, zu erkennen und Administratoren basierend auf der Konfiguration zu benachrichtigen.
- Defender für Container kann über Sicherheitsrisiken in Ihren in der Container-Registrierung gespeicherten Containerimages informieren.
Best Practice – Aktivieren der zentralisierten Protokollüberwachung und Verwenden von SIEM-Produkten zur Überwachung von Sicherheitsbedrohungen in Echtzeit
- Verbinden Sie AKS-Diagnoseprotokolle mit Microsoft Sentinel für die zentralisierte Sicherheitsüberwachung basierend auf Mustern und Regeln. Microsoft Sentinel ermöglicht diesen Zugriff über Daten-Connectors.
Best Practice – Aktivieren der Überwachungsprotokollierung zum Überwachen von Aktivitäten in Ihren Produktionsclustern
- Verwenden Sie Aktivitätsprotokolle, um Aktionen für AKS-Ressourcen zu überwachen, um alle Aktivitäten und deren Status anzuzeigen. Ermitteln Sie, welche Operationen an den Ressourcen vorgenommen wurden und von wem.
- Aktivieren Sie die DNS-Abfrageprotokollierung , indem Sie die dokumentierte Konfiguration in Ihrer benutzerdefinierten CoreDNS ConfigMap anwenden.
- Überwachen Sie Versuche, auf deaktivierte Anmeldeinformationen zuzugreifen.
- Integrieren sie die Benutzerauthentifizierung für AKS mit Microsoft Entra ID. Erstellen Sie Diagnoseeinstellungen für Microsoft Entra ID, indem Sie die Überwachungs- und Anmeldeprotokolle in einen Azure Log Analytics-Arbeitsbereich senden. Konfigurieren Sie die gewünschten Warnungen (z. B. wenn ein deaktiviertes Konto versucht, sich anzumelden) innerhalb eines Azure Log Analytics Arbeitsbereichs.
Best Practice – Aktivieren der Diagnose für Ihre Azure-Ressourcen
- Indem Sie Azure Diagnose über alle Ressourcen Ihrer Workload hinweg aktivieren, haben Sie Zugriff auf Plattformprotokolle, die detaillierte Diagnose- und Überwachungsinformationen für Ihre Azure Ressourcen bereitstellen. Diese Protokolle können in Log Analytics oder eine SIEM-Lösung wie Microsoft Sentinel zur Sicherheitsüberwachung und Warnung aufgenommen werden.
Beitragende
Dieser Artikel wird von Microsoft verwaltet. Sie wurde ursprünglich von den folgenden Mitwirkenden verfasst.
Hauptautor:
- Adnan Khan | Sr. Cloud Solution Architect
Andere Mitwirkende:
- Ayobami Ayodeji | Programm-Manager 2
- Ahmed Bham | Sr. Cloud Solution Architect
- <c0>Chad Kittel</c0> | Principal Software Engineer - Azure Patterns & Practices
- John Poole | Sr. Cloud Solution Architect
- Bahram Rushenas | Sr. Solution Architect
- Abed Sau | Sr. Cloud Solution Architect
Nächste Schritte
- Microsoft Defender für Container
- DevOps-Sicherheit
- Sicherheit in DevOps (DevSecOps)
- GitHub Advanced Security
- GitOps