DevSecOps auf Azure Kubernetes Service (AKS)

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. Integrieren Sie Sicherheit in DevOps-Praktiken, um:

  • Machen Sie Ihre Anwendungen und Systeme sicherer, bieten Sie Einblicke in Sicherheitsbedrohungen, und verhindern Sie, dass Sicherheitsrisiken bereitgestellte Umgebungen erreichen.

  • Erhöhen Sie das Sicherheitsbewusstsein ihrer Entwicklungs- und Betriebsteams.

  • Integrieren Sie automatisierte Sicherheitsprozesse in Ihren Lebenszyklus der Softwareentwicklung (SDLC).

  • Reduzieren Sie die Wartungskosten, indem Sie Sicherheitsprobleme frühzeitig in Entwicklungs- und Entwurfsphasen finden.

Wenn Sie DevSecOps auf Azure Kubernetes Service (AKS) anwenden, weist jede Organisationsrolle bestimmte Sicherheitsaspekte auf:

  • Entwickler erstellen sichere Anwendungen, die auf AKS ausgeführt werden.

  • Cloudtechniker erstellen eine sichere AKS-Infrastruktur.

  • Operationsteams können Cluster steuern oder Sicherheitsprobleme überwachen.

In diesem Artikel werden Anleitungen nach DevOps-Lebenszyklusphase organisiert und Empfehlungen für Sicherheitskontrollen und bewährte Methoden bereitgestellt. Er umfasst typische Prozesse und Tools für kontinuierliche Integration und kontinuierliche Lieferung (CI/CD)-Pipelines, wobei der Fokus auf integrierten Tools liegt.

Prozessablauf

Architekturdiagramm, das zeigt, wie DevSecOps-Methoden in einer AKS-Umgebung implementiert werden.

Laden Sie eine Visio-Datei dieser Architektur herunter.

Note

In diesem Artikel wird auf AKS und GitHub verwiesen, aber Sie können diese Empfehlungen auf eine beliebige Container-Orchestrierung oder CI/CD-Plattform anwenden. Die Implementierungsdetails können variieren, aber die meisten Konzepte und Methoden für jede Phase gelten weiterhin.

  1. Microsoft Entra ID wird als Identitätsanbieter für GitHub konfiguriert. Konfigurieren Sie die mehrstufige Authentifizierung (Multifactor Authentication, MFA), um zusätzliche Authentifizierungssicherheit bereitzustellen.

  2. Entwickler verwenden Visual Studio Code oder Visual Studio mit Sicherheitserweiterungen , mit denen sie ihren Code proaktiv auf Sicherheitsrisiken analysieren können.

  3. Entwickler reichen Anwendungscode in ein unternehmensbesessenes und -geleitetes GitHub Enterprise-Repository ein.

  4. GitHub Enterprise integriert die automatische Sicherheits- und Abhängigkeitsüberprüfung über GitHub Advanced Security.

  5. Pull-Anforderungen lösen fortlaufende Integration (CI)-Builds und automatisierte Tests über GitHub Actions aus.

  6. Der CI-Buildworkflow über GitHub Actions generiert ein Docker-Containerimage und speichert ihn in der Azure-Containerregistrierung.

  7. Sie können manuelle Genehmigungen für Bereitstellungen in bestimmte Umgebungen, wie z.B. die Produktionsumgebung, im Rahmen des Workflows für die kontinuierliche Bereitstellung (CD) in GitHub Actions hinzufügen.

  8. GitHub Actions ermöglichen Continuous Deployment auf AKS. Verwenden Sie GitHub Advanced Security, um geheime Schlüssel, Anmeldeinformationen und andere vertrauliche Informationen in Ihren Anwendungsquell- und Konfigurationsdateien zu erkennen.

  9. Microsoft Defender überprüft die Containerregistrierung, den AKS-Cluster und Azure Key Vault auf Sicherheitsrisiken.

    1. Microsoft Defender für Container überprüft das Containerimage auf bekannte Sicherheitslücken, wenn GitHub Actions es in die Container-Registry hochladen.

    2. Defender für Container kann auch Ihre AKS-Umgebung überprüfen und Laufzeit-Bedrohungsschutz für Ihre AKS-Cluster bereitstellen.

    3. Microsoft Defender für Key Vault erkennt ungewöhnliche und verdächtige Versuche, auf Schlüsseltresorkonten zuzugreifen.

  10. Sie können Azure-Richtlinie auf Containerregistrierung und AKS anwenden, um die Richtliniencompliance zu erzwingen. Azure Policy enthält sowohl integrierte Sicherheitsrichtlinien für die Containerregistrierung als auch für AKS.

  11. Key Vault fügt geheime Schlüssel und Anmeldeinformationen sicher zur Laufzeit in eine Anwendung ein, ohne sie Entwicklern offenzusetzen.

  12. Das AKS-Netzwerkrichtlinienmodul ist so konfiguriert, dass der Datenverkehr zwischen Anwendungs pods mithilfe von Kubernetes-Netzwerkrichtlinien gesichert wird. Wir empfehlen Azure CNI powered by Cilium als Netzwerkrichtlinienmodul. Es bietet erweiterte Berkeley Packet Filter (eBPF)-basierte Durchsetzung, Layer-7-Richtlinien und vollqualifizierte Domänennamenfilterung (FQDN).

  13. Sie können die kontinuierliche Überwachung des AKS-Clusters mithilfe von Azure Monitor einrichten, um Prometheus-Metriken, Containerprotokolle und Kubernetes-Ereignisse zu sammeln. Verwenden Sie Azure Managed Grafana-Dashboards für visualisierung und Log Analytics für abfragebasierte Warnungen.

    1. Azure Monitor erfasst Leistungsmetriken über Managed Prometheus und Anwendungs- und Clusterprotokolle über die Containerprotokollsammlung.

    2. Ein Log Analytics-Arbeitsbereich speichert die Diagnose- und Anwendungsprotokolle, um Protokollabfragen auszuführen.

  14. Verwenden Sie Microsoft Sentinel als zentrale Sicherheitsinformations- und Ereignisverwaltung (SIEM), um AKS-Telemetrie mit Signalen von Microsoft Defender für Cloud, Microsoft Entra ID und Netzwerkressourcen zu korrelieren. Microsoft Sentinel bietet Erkennung, Untersuchung und automatisierte Reaktion auf Sicherheitsvorfälle in der gesamten AKS-Umgebung.

  15. Open-Source-Tools wie Zed Attack Proxy (ZAP) können Penetrationstests für Webanwendungen und Dienste durchführen.

  16. Defender für DevOps, ein in Defender für Cloud verfügbarer Dienst, ermöglicht Sicherheitsteams die Verwaltung der DevOps-Sicherheit in multipipeline-Umgebungen, einschließlich GitHub und Azure DevOps.

Übersicht und Verantwortlichkeiten von Teammitgliedern

Erwägen Sie die Verwaltung der DevSecOps-Komplexität bei Kubernetes-basierten Lösungsbereitstellungen, indem Sie die Verantwortlichkeiten zwischen Teams unterteilen. In diesem Abschnitt werden die Rollen und Verantwortlichkeiten von Entwicklern, Anwendungsoperatoren wie Websitesicherheitstechnikern, Clusteroperatoren und Sicherheitsteams beschrieben.

Entwickler

Entwickler schreiben den Anwendungscode und übernehmen ihn an das angegebene Repository. Sie erstellen Skripts für automatisierte Tests und führen Skripts aus, um sicherzustellen, dass ihr Code wie vorgesehen funktioniert und in den Rest der Anwendung integriert wird. Entwickler definieren und skripten außerdem das Erstellen von Containerimages als Teil der Automatisierungspipeline.

Anwendungsoperatoren (Techniker der Standortsicherheit)

Das Erstellen von Anwendungen 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.

Website-Zuverlässigkeitstechniker erstellen Lösungen, die automatisieren, wie Teams große Softwaresysteme überwachen. Sie dienen als Brücke zwischen Entwicklungs- und Clusterbetreiberteams. Sie helfen bei der Einrichtung und Überwachung von Service-Level-Zielen (SLOs) und Fehlerbudgets. Websitesicherheitstechniker helfen auch beim Verwalten von Anwendungsbereitstellungen und beim Schreiben von Kubernetes-Manifestdateien (YAML).

Clusteroperatoren

Clusteroperatoren konfigurieren und verwalten die Clusterinfrastruktur. 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 Überwachungstools wie den verwalteten Azure Monitor-Dienst für Prometheus und Azure Managed Grafana, um die allgemeine Clusterintegrität zu überwachen. Sie sind für Patching, Clusterupgrades, Berechtigungen und rollenbasierte Zugriffssteuerung (RBAC) auf dem Cluster verantwortlich. In DevSecOps-Teams arbeiten Clusteroperatoren mit Sicherheitsteams zusammen, um Sicherheitsstandards festzulegen und sicherzustellen, dass Cluster diese Anforderungen erfüllen.

Sicherheitsteam

Das Sicherheitsteam entwickelt und erzwingt Sicherheitsstandards. Einige Teams erstellen und wählen möglicherweise Azure-Richtliniendefinitionen aus, die Sie über die Abonnements und Ressourcengruppen hinweg erzwingen, die die Cluster enthalten. Sicherheitsteams überwachen Sicherheitsprobleme und arbeiten mit anderen Teams zusammen, um die Sicherheit während des gesamten DevSecOps-Prozesses zu priorisieren.

DevSecOps-Lebenszyklusphasen

Jede Phase des SDLC implementiert Sicherheitskontrollen. Diese Sicherheitskontrollen sind zentral für DevSecOps und Shift-left-Praktiken.

Ein Diagramm, das einen kontinuierlichen DevOps-Lebenszyklus zeigt, der sicherheit in allen Phasen integriert.

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 auf spätere DevOps-Lebenszyklusphasen auswirken. Diese Phase umfasst die Zusammenarbeit zwischen Sicherheits-, Entwicklungs- und Betriebsteams. Um sicherzustellen, dass Sie Sicherheitsanforderungen und Sicherheitsprobleme berücksichtigen oder mindern, schließen Sie Sicherheitsbeteiligte in dieser Phase ein.

Bewährte Methode: Entwerfen einer sicheren Anwendungsplattform

Um eine sichere, von AKS gehostete Workload zu erstellen, müssen Sie Sicherheit auf jeder Ebene in das System integrieren, beginnend mit der Plattform selbst. Die Plattform kann Komponenten innerhalb des Clusters enthalten, z. B. Laufzeitsicherheits- und Richtlinien-Agents sowie Komponenten außerhalb von AKS, z. B. Netzwerkfirewalls und Containerregistrierungen.

Bewährte Methode: Integrieren Sie die Bedrohungsmodellierung in Ihren Prozess ein.

Die Bedrohungsmodellierung ist in der Regel eine manuelle Aktivität, die Sicherheits- und Entwicklungsteams umfasst. Sie können Bedrohungen in einem System modellieren und finden, um Sicherheitsrisiken zu beheben, bevor Sie Code entwickeln oder Änderungen vornehmen. Teams führen Bedrohungsmodellierung als Reaktion auf erhebliche Softwareänderungen, Lösungsarchitekturänderungen oder Sicherheitsvorfälle durch.

Wir empfehlen das STRIDE-Bedrohungsmodell. Diese Methode beginnt mit einem Datenflussdiagramm und kategorisiert Bedrohungen mithilfe der STRIDE mnemonic: Spoofing, Manipulation, Ablehnung, Offenlegung von Informationen, Denial of Service und Rechteerweiterung. Teams verwenden diese Kategorien, um Risiken zu identifizieren, zu mindern und zu überprüfen. Ein Modellierungstool hilft beim Notieren und Visualisieren von Systemkomponenten, Datenflüssen und Sicherheitsgrenzen.

Das Erstellen von Bedrohungsmodellierung in Ihren SDLC fügt Prozessaufwand hinzu und erfordert, dass Sie aktualisierte Bedrohungsmodelle verwalten. Allerdings wird die Sicherheit frühzeitig in der Entwicklung behandelt, wodurch die Kosten für die Behebung von Späteren Problemen reduziert werden.

Bewährte Methode: Anwenden des Azure Well-Architected Frameworks

  • Wenden Sie bewährte Methoden für die Sicherheit an, die Richtlinien für Identitätsverwaltung, Anwendungssicherheit, Infrastrukturschutz, Datensicherheit und DevOps bereitstellen, da sie für cloudeigene Umgebungen gilt.

  • Wenden Sie bewährte Methoden für Operational Excellence an, da sie für DevSecOps und die Überwachung Ihrer Produktionsumgebungen gilt.

Entwicklungsphase

Das Verschieben nach links ist ein wichtiger Tenet der DevSecOps-Denkweise. Dieser Prozess beginnt, bevor Sie Code in ein Repository übernehmen und ihn über eine Pipeline bereitstellen. Um Sicherheitsprobleme früher im Entwicklungslebenszyklus zu beheben, übernehmen Sie bewährte Methoden für sicheres Codieren und verwenden integrierte IDE-Tools (IDE) und Plug-Ins für die Codeanalyse während der Entwicklungsphase.

Bewährte Methode: Erzwingen von Standards für sicheres Codieren

  • Verwenden Sie bewährte Methoden und Prüflisten für sicheres Codieren, um Ihren Code vor allgemeinen Sicherheitsrisiken wie Einfügung und unsicheren Design zu schützen. Die Foundation Open Worldwide Application Security Project (OWASP) veröffentlicht Branchenstandardempfehlungen für sicheres Codieren, die Sie beim Schreiben von Code übernehmen sollten. Diese Richtlinien sind besonders wichtig, wenn Sie öffentlich zugängliche Webanwendungen oder Dienste entwickeln.

  • Überprüfen Sie sichere Codierungsmethoden für Ihre spezifischen Programmiersprachenlaufzeiten, z. B. Java und .NET.

  • Erzwingen Sie Protokollierungsstandards, um vertrauliche Informationen vor dem Verlust in Anwendungsprotokolle zu schützen. Die beliebtesten Protokollierungsframeworks wie Apache Log4j und Apache log4net bieten Filter und Plug-Ins, um vertrauliche Informationen wie Kontonummern oder persönliche Daten zu maskieren.

Bewährte Methode: Verwenden von IDE-Tools und Plug-Ins zum Automatisieren von Sicherheitsüberprüfungen

Die beliebtesten IDEs wie Visual Studio, VS 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 einführen.

  • SonarQube für IDE ist ein IDE-Plug-In für die meisten gängigen Sprachen und Entwicklerumgebungen. SonarQube für IDE liefert 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 Snyk-Plug-In überprüft auch Ihre Anwendungsquelle und externe Abhängigkeiten und benachrichtigt Sie, wenn sicherheitsrisiken gefunden werden.

  • Mit dem SARIF-Plugin (Static Analysis Results Interchange Format) für Visual Studio und VS Code können Sie Sicherheitsrisiken aus beliebten Tools für Static Application Security Testing (SAST) anzeigen, anstatt Ergebnisse aus unformatierten JSON-Ausgabedateien zu interpretieren.

Bewährte Methode: Einrichten von Steuerelementen für Ihre Quellcoderepositorys

  • Richten Sie eine Branching-Strategie zur Sicherstellung der Konsistenz in Ihrem Unternehmen ein. Methoden wie Release-Flow und GitHub-Fluss haben strukturierte Richtlinien zur Verwendung von Branches zur Unterstützung von Team und paralleler Entwicklung. 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. Richten Sie Zusammenführungsrichtlinien für diese Verzweigungen ein, bevor Sie Änderungen festschreiben oder zusammenführen. Du hast beispielsweise folgende Möglichkeiten:

    • Verhindern Sie, dass andere Entwickler Code direkt in Ihren Main-Branch einpflegen.

    • Richten Sie einen Peer-Review-Prozess ein und verlangen Sie eine Mindestanzahl an Genehmigungen, bevor Sie Änderungen an einem Hauptzweig zusammenführen. Konfigurieren und erzwingen Sie diese Steuerelemente mithilfe von GitHub. Verwenden Sie GitHub, um Gruppen autorisierter Genehmiger zu bestimmen, wenn dies für Gated-Umgebungen erforderlich ist.

  • Verwenden Sie Pre-Commit-Hooks, um in Ihrem Anwendungsquellcode nach vertraulichen Informationen zu suchen und Commits zu blockieren, wenn sie Sicherheitsprobleme feststellen.

    • Verwenden Sie gitHub-bereitgestellte, integrierte Precommit-Hooks. Konfigurieren Sie sie ganz einfach für bestimmte Projekte. Beispielsweise suchen einige vordefinierte Hooks nach geheimen Schlüsseln, privaten Schlüsseln und Anmeldeinformationen und blockieren einen Commit, wenn diese Probleme gefunden werden.
  • Richten Sie RBAC innerhalb Ihres Versionskontrollsystems ein.

    • Erstellen Sie gut definierte Rollen mithilfe des Prinzips der geringsten Berechtigungen. Eine CI/CD-Pipeline fungiert als Wertschöpfungskette für Produktionsimplementierungen.

    • Wenden Sie etablierte Benutzer - oder Gruppenrollen innerhalb Ihrer Organisation an. Um Einzelpersonen basierend auf ihrer spezifischen Rolle und Funktion in Ihren CI/CD-Workflows zu gruppieren, erstellen Sie Rollen wie Administrator, Entwickler, Sicherheitsadministrator und Operator.

  • Ermöglichen Sie die Überwachung Ihrer Workflows, um Transparenz und Rückverfolgbarkeit für die Konfiguration und andere Änderungen an Ihren CI/CD-Pipelines hinzuzufügen.

Best Practice: Absichern Ihrer Container-Images

  • Verwenden Sie einfache Images mit minimalem Betriebssystembedarf, um die gesamte Angriffsfläche zu reduzieren. Erwägen Sie minimale Bilder wie Alpine oder untrotrolose Bilder, die nur Ihre Anwendung und die zugehörige Laufzeit enthalten.

  • Verwenden Sie nur vertrauenswürdige Basisimages, wenn Sie Ihre Container erstellen. Rufen Sie diese Basisimages aus einem privaten Register ab, das Sie häufig auf Sicherheitslücken scannen.

  • Verwenden Sie Entwicklertools, um Imagerisiken lokal auszuwerten. Trivy ist ein Open-Source-Tool, das Sicherheitsrisiken in Ihren Containerimages analysiert.

  • Verhindern des Stammbenutzerzugriffs oder des Kontexts für ein Bild. Standardmäßig werden Container als Root ausgeführt.

    Bei Containern, die erhöhte Sicherheit benötigen, sollten Sie ein AppArmor - oder Seccomp-Profil in Ihrem Kubernetes-Cluster verwenden, um die Sicherheit für Ihre ausgeführten Container weiter zu erzwingen.

Build-Phase

Während der Buildphase arbeiten Entwickler mit Site Reliability Engineers und Sicherheitsteams zusammen, um automatisierte Scans des Quellcodes ihrer Anwendung in ihre CI-Build-Pipelines zu integrieren. Teams konfigurieren die Pipelines, um Sicherheitspraktiken mithilfe der Sicherheitstools und Erweiterungen der CI/CD-Plattform zu ermöglichen. Zu diesen Methoden gehören SAST, Softwarekompositionsanalyse (SCA) und Secrets-Scanning.

Bewährte Methode: Ausführen von SAST zum Auffinden potenzieller Sicherheitsrisiken in Ihrem Anwendungsquellcode

  • Verwenden Sie die Scan-Funktionen von GitHub Advanced Security für die Code-Überprüfung und CodeQL.

    • Bei der Codeüberprüfung handelt es sich um ein Feature, das Code in einem GitHub-Repository analysiert, um Sicherheitsrisiken und Codierungsfehler zu finden. Es zeigt die Probleme in GitHub Enterprise Cloud an.

    • Wenn die Codeüberprüfung eine potenzielle Sicherheitsanfälligkeit oder einen Fehler in Ihrem Code findet, zeigt GitHub eine Warnung im Repository an.

    • Sie können Verzweigungsregeln für erforderliche Statusprüfungen konfigurieren. Sie können z. B. festlegen, dass Featurezweige mit dem Basiszweig auf dem neuesten Stand sind, bevor Sie neuen Code zusammenführen. Diese Anforderung stellt sicher, dass Sie Ihren Branch mit dem neuesten Code testen.

    • Aktivieren Sie Copilot Autofix , um KI-generierte Fixvorschläge für Codescanbenachrichtigungen zu erhalten. Copilot Autofix schlägt Korrekturen direkt in Pull-Anforderungen vor, was Entwicklern hilft, Sicherheitsergebnisse schnell zu beheben.

  • Verwenden Sie Tools wie kube-score , um Ihre Kubernetes-Bereitstellungsobjekte zu analysieren. Dieses Tool führt statische Codeanalyse Ihrer Kubernetes-Objektdefinitionen durch. Es gibt eine Liste von Empfehlungen aus, um Ihre Anwendung sicherer und robuster zu machen.

Bewährte Methode: Verwenden der Geheimniserkennung, um versehentlich begangene Geheimnisse zu erkennen

  • Wenn Sie die geheime Überprüfung für ein Repository aktivieren, überprüft GitHub den Code nach Mustern, die geheimen Schlüsseln entsprechen, die von vielen Dienstanbietern verwendet werden.

  • GitHub führt in regelmäßigen Abständen einen vollständigen Git-Verlaufsscan von vorhandenen Inhalten in Repositorys aus und sendet Benachrichtigungen.

    • Für Azure DevOps verwendet Defender für Cloud geheime Überprüfungen, um Anmeldeinformationen, Geheime Schlüssel, Zertifikate und andere vertrauliche Inhalte in Ihrem Quellcode zu erkennen und die Ausgabe zu erstellen.

    • Sie können geheime Überprüfungen als Teil der Microsoft Security DevOps for Azure DevOps-Erweiterung ausführen.

Bewährte Methode: Verwenden von SCA-Tools zum Nachverfolgen von Open-Source-Komponenten in der Codebasis und Erkennen von Sicherheitsrisiken in Abhängigkeiten

  • Mit der Abhängigkeitsüberprüfung können Sie unsichere Abhängigkeiten abfangen, bevor Sie sie in Ihre Umgebung einführen. Außerdem werden Informationen über die Lizenz, die Abhängigkeiten und das Alter der Abhängigkeiten bereitgestellt. Es zeigt Abhängigkeitsänderungen über einen umfangreichen Diff auf der Registerkarte "Dateien geändert " einer Pullanforderung an.

  • Dependabot führt eine Überprüfung durch, um unsichere Abhängigkeiten zu erkennen und Dependabot-Warnungen zu senden, wenn der GitHub-Advisory-Datenbank eine neue Empfehlung hinzugefügt wird oder wenn sich das Abhängigkeitsdiagramm für ein Repository ändert.

Bewährte Methode: Generieren eines SBOM für Ihre Containerimages

  • Eine Software-Stückliste (SBOM) bietet eine vollständige Bestandsaufnahme der Komponenten, Bibliotheken und Abhängigkeiten, aus denen Ihre Container-Images bestehen. Verwenden Sie SBOM-Generierungstools wie Microsoft sbom-Tool oder Syft während des CI-Builds, um ein SPDX- oder CycloneDX-Manifest zu erstellen.

  • Fügen Sie ein SBOM zu Ihren Container-Images hinzu, die in der Container-Registrierung gespeichert sind, um die nachgelagerte Sicherheitsrisikoprüfung und die Nachverfolgung der Lizenzkonformität in der gesamten Lieferkette zu ermöglichen.

Bewährte Methode: Scannen von IaC-Vorlagen zum Erkennen von Fehlkonfigurationen vor der Bereitstellung

  • 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 und kann IaC-Vorlagen scannen, um IaC-Sicherheitsrisiken zu identifizieren.

Bewährte Methode: Überprüfen Sie Ihre Workloadimages in Containerregistrierungen, um bekannte Sicherheitsrisiken zu identifizieren.

  • Defender für Container scannt die Container in der Container-Registry und dem Amazon Elastic Container Registry (ECR), um Sie über bekannte Sicherheitslücken in Ihren Images zu informieren.

  • Sie können Azure Policy aktivieren, um eine Schwachstellenbewertung für im Container-Register gespeicherte Images zu erstellen und detaillierte Informationen zu den einzelnen Ergebnissen bereitzustellen.

Best Practice: Automatisches Erstellen neuer Images basierend auf Basisbild-Updates

  • Containerregistrierungsaufgaben ermitteln dynamisch Basisimageabhängigkeiten, wenn ein Containerimage erstellt wird. Wenn ein Update auf das Basisimage eines Anwendungsimages erkannt wird, können Sie eine Buildaufgabe so konfigurieren, dass Anwendungsimages, die auf dieses Basisimage verweisen, automatisch neu erstellt werden.

Bewährte Vorgehensweise: Verwenden Sie Container-Registry, Key Vault und die Notation, um Ihre Container-Images digital zu signieren und konfigurieren Sie den AKS-Cluster, sodass nur überprüfte Images zulässig sind.

  • Key Vault speichert Signaturschlüssel, die vom Notationstool verwendet werden. Das Notation Key Vault-Plug-In (azure-kv) greift auf diese Schlüssel zu, um Containerimages und andere Artefakte zu signieren und zu überprüfen. Sie können diese Signaturen mithilfe der Azure CLI-Befehle an Containerregistrierungsimages anfügen.

  • Signierte Container stellen sicher, dass Bereitstellungen aus einer vertrauenswürdigen Quelle stammen und dass Artefakte nach der Erstellung nicht manipuliert werden. Das signierte Artefakt stellt Integrität und Authentizität sicher, bevor der Benutzer ein Artefakt in jede Umgebung zieht, wodurch Angriffe vermieden werden.

    • Ratify überprüft Artefaktesicherheitsmetadaten und erzwingt die Zulassungsrichtlinien vor der Bereitstellung in Kubernetes-Clustern. AKS Image Integrity verwendet Ratify als integrierte Überprüfung, um Bildsignaturen und SBOM-Nachweise zu überprüfen, bevor Pods zum Cluster zugelassen werden.

Bereitstellungsphase

Während der Bereitstellungsphase arbeiten Entwickler, Anwendungsoperatoren und Clusteroperatoren zusammen, um die richtigen Sicherheitskontrollen für die CD-Pipelines einzurichten. Diese Steuerelemente unterstützen die Bereitstellung von Code in einer Produktionsumgebung auf sichere und automatisierte Weise.

Bewährte Methode: Zugriff und Workflow im Rahmen der Bereitstellungspipeline steuern

  • 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 Pushes an den Branch fest, wie das Bestehen von Statusüberprüfungen oder einen linearen Commit-Verlauf.

  • Verwenden Sie Umgebungen für die Bereitstellung, um Schutzregeln und Geheimnisse zu konfigurieren.

  • Verwenden Sie die Funktion für Genehmigungen und Gates, um den Workflow der Deployment-Pipeline zu steuern. Sie können z. B. manuelle Genehmigungen von einem Sicherheits- oder Betriebsteam anfordern, bevor Sie in einer Produktionsumgebung bereitstellen.

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.

  • Verwenden Sie einen pullbasierten Ansatz für CI/CD mit GitOps, um Sicherheitsanmeldeinformationen in Ihren Kubernetes-Cluster zu verschieben. Dieser Ansatz reduziert die Sicherheits- und Risikooberfläche, indem Anmeldeinformationen aus 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 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 das Azure-Richtlinien-Add-On für Kubernetes zu aktivieren.

  • Konfigurieren Sie Azure-Richtlinie für Kubernetes, um Containerimagebereitstellungen auf vertrauenswürdige Registrierungen einzuschränken.

Betriebsphase

Führen Sie in dieser Phase Betriebsüberwachungs- und Sicherheitsüberwachungsaufgaben aus, um potenzielle Sicherheitsvorfälle proaktiv zu überwachen, zu analysieren und zu benachrichtigen. Verwenden Sie Produktions-Observability-Tools wie Azure Monitor und Microsoft Sentinel, um die Einhaltung von Unternehmenssicherheitsstandards zu überwachen und sicherzustellen.

Bewährte Methode: Verwenden von Defender für Cloud zum automatischen Scannen und Überwachen Ihrer Produktionskonfigurationen

  • 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 die Containerempfehlungen in Defender for Cloud (unter Compute und Apps), um Basisüberprüfungen für Ihre AKS-Cluster durchzuführen. Defender für Cloud zeigt alle Konfigurationsprobleme oder Sicherheitsrisiken im Dashboard an.

    • Verwenden Sie Defender für Cloud, und befolgen Sie seine Netzwerkschutzempfehlungen, um die Netzwerkressourcen Ihres AKS-Clusters zu schützen.

  • 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 Container-Registry, indem Sie Defender für Container aktivieren.

Bewährte Methode: Halten Sie Ihre Kubernetes-Cluster auf dem neuesten Stand

  • Kubernetes veröffentlicht häufig neue Versionen. Verwalten Sie eine Strategie für das Lebenszyklusmanagement, um Ihre Cluster zu unterstützen und aktuell zu halten. AKS bietet Tools zum Verwalten von Clusterupgrades. Verwenden Sie die geplanten Wartungsfeatures von AKS, um zu steuern, wann Wartungsfenster und Upgrades auftreten.

  • Upgrade AKS-Arbeitsknoten häufig. Azure veröffentlicht wöchentliche Betriebssystem- und Laufzeitupdates. Wenden Sie diese Updates automatisch über den unbeaufsichtigten Modus oder manuell über die Azure CLI an, um mehr Kontrolle zu erhalten.

Bewährte Methode: Verwenden von Azure-Richtlinien zum Sichern und Steuern Ihrer AKS-Cluster

  • Nachdem Sie das Azure-Richtlinien-Add-On für AKS installiert haben, können Sie einzelne Richtliniendefinitionen oder Gruppen von Richtliniendefinitionen, die als Initiativen oder Richtliniensätze bezeichnet werden, auf Ihren Cluster anwenden.

  • Verwenden Sie integrierte Azure-Richtlinien für allgemeine Szenarien, z. B. verhindern, dass privilegierte Container ausgeführt werden oder externe IP-Adressen auf eine Zulassungsliste beschränkt werden. Sie können auch benutzerdefinierte Richtlinien für bestimmte Anwendungsfälle erstellen.

  • Wenden Sie Richtliniendefinitionen auf Ihren Cluster an, und stellen Sie sicher, dass diese Zuordnungen durch Azure-Richtlinie 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.

    • Verwenden Sie Azure CNI powered by Cilium als Netzwerkrichtlinienmodul. Cilium verwendet eine eBPF-basierte Datenebene und unterstützt kubernetes-native Richtlinien, Layer-7-Richtlinie und FQDN-Filterung.

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. Sammeln Sie Prometheus-Metriken über den verwalteten Azure Monitor-Dienst für Prometheus, Abfragecontainer- und Plattformprotokolle in Log Analytics, und visualisieren Sie den Clusterstatus über Azure Managed Grafana-Dashboards .

    • Azure Monitor erweitert die kontinuierliche Überwachung auf die Freigabe von Pipelines. Verwenden Sie Überwachungsdaten zum Genehmigen oder Zurücksetzen von Versionen. Azure Monitor nimmt auch Sicherheitsprotokolle und Warnungen zu verdächtigen Aktivitäten auf.

    • Integrieren Sie Ihre AKS-Instanzen in Azure Monitor und konfigurieren Sie Diagnoseeinstellungen für Ihren Cluster.

      Weitere Informationen finden Sie unter Azure-Sicherheitsbasisplan für AKS.

Bewährte Methode: Verwenden von Defender für Cloud für die aktive Bedrohungsüberwachung

  • Defender für Cloud bietet aktive Bedrohungsüberwachung für AKS auf Knotenebene (VM-Bedrohungen) und Clusterworkloads.

  • Verwenden Sie Defender für DevOps, um umfassende Einblicke in alle CI/CD-Pipelines zu erhalten. Es bietet Sicherheits- und Betreiberteams ein zentrales Dashboard. Sie profitieren insbesondere von dieser zentralen Sichtbarkeit, wenn Sie mehrere Pipelineplattformen wie Azure DevOps und GitHub verwenden oder Pipelines in öffentlichen Clouds ausführen.

  • Defender für Key Vault erkennt ungewöhnliche und verdächtige Versuche, auf Schlüsseltresorkonten zuzugreifen, und kann Benachrichtigungen basierend auf der Konfiguration an Administratoren senden.

  • Defender für Container kann auf Schwachstellen in Ihren in der Containerregistrierung gespeicherten Container-Images hinweisen.

Bewährte Methode: Aktivieren der zentralisierten Protokollüberwachung und Verwenden von SIEM-Produkten zur Überwachung von Sicherheitsbedrohungen in Echtzeit

  • Verbinden Sie AKS-Diagnoseprotokolle mit Microsoft Sentinel, um eine zentralisierte Sicherheitsüberwachung basierend auf Mustern und Regeln zu ermöglichen. Microsoft Sentinel ermöglicht diesen Zugriff über Datenkonnektoren.

Bewährte Methode: Aktivieren der Überwachungsprotokollierung zum Überwachen von Aktivitäten in Ihren Produktionsclustern

  • Verwenden Sie Aktivitätsprotokolle, um Aktionen auf AKS-Ressourcen zu überwachen, um alle Aktivitäten und deren Status anzuzeigen. Bestimmen Sie, wer welche Vorgänge für die Ressourcen ausgeführt hat.

  • Aktivieren Sie die DNS-Abfrageprotokollierung (Domain Name System), 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 die Microsoft Entra-ID, und senden Sie die Überwachungs- und Anmeldeprotokolle an einen Log Analytics-Arbeitsbereich. Konfigurieren Sie im Log Analytics-Arbeitsbereich Warnungen für Sicherheitsereignisse, z. B. Anmeldeversuche von deaktivierten Konten.

Bewährte Methode: Aktivieren der Diagnose für Ihre Azure-Ressourcen

  • Aktivieren Sie die Azure-Diagnose über alle Ressourcen Ihrer Workload hinweg, um auf Plattformprotokolle zuzugreifen, die detaillierte Diagnose- und Überwachungsinformationen bereitstellen. Sie können diese Protokolle in Log Analytics oder eine SIEM-Lösung wie Microsoft Sentinel zur Sicherheitsüberwachung und -warnung aufnehmen.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Die folgenden Mitwirkenden haben diesen Artikel geschrieben.

Hauptautor:

Andere Mitwirkende:

Um nicht öffentliche LinkedIn-Profile zu sehen, melden Sie sich bei LinkedIn an.

Nächste Schritte