Bearbeiten

DevSecOps in Azure Kubernetes Service (AKS)

Azure Boards
Azure DevOps
Azure Monitor
Azure Pipelines
Azure Policy

DevSecOps, auch als Secure DevOps bezeichnet, baut auf der Praxis von DevOps auf, indem Sicherheit in verschiedenen Phasen eines traditionellen DevOps-Lebenszyklus integriert wird. Die Vorteile der Integration von Sicherheit in DevOps-Methoden sind wie folgt:

  • Machen Sie Ihre Anwendungen und Systeme sicherer, indem Sie Einblick in Sicherheitsbedrohungen erhalten und verhindern, dass Sicherheitsrisiken bereitgestellte Umgebungen erreichen
  • Erhöhen des Sicherheitsbewusstseins in Ihren Entwicklungs- und Betriebsteams
  • Integrieren automatisierter Sicherheitsprozesse in Ihren Softwareentwicklungslebenszyklus
  • Reduzieren von Kosten durch frühzeitiges Auffinden von Sicherheitsproblemen in Entwicklungs- und Entwurfsphasen

Wenn DevSecOps bei Azure Kubernetes Service (AKS) verwendet wird, können verschiedene Organisationsrollen unterschiedliche Überlegungen zur Implementierung von Sicherheit haben. Beispiele für diese verschiedenen Organisationsrollen sind:

  • Entwickler, die sichere Anwendungen erstellen, die unter AKS ausgeführt werden
  • Cloud-Techniker, die sichere AKS-Infrastruktur erstellen
  • Verschiedene Betriebsteams, die Cluster steuern oder Sicherheitsprobleme überwachen können

Dieser Artikel gliedert sich in verschiedene DevOps-Lebenszyklusphasen mit Überlegungen und Empfehlungen zum Einbetten von Sicherheitskontrollen und bewährten Sicherheitsmethoden. Dieser Leitfaden enthält allgemeine Prozesse und Tools, die in CI/CD-Pipelines (Continuous Integration und Continuous Delivery) zur einfachen Nutzung integriert werden können, soweit verfügbar.

Als Voraussetzung für diesen Artikel empfehlen wir Ihnen, den Artikel Erstellen und Bereitstellen von Apps in AKS mithilfe von DevOps und GitOps zu lesen.

Prozessablauf

Architekturdiagramm: Flow vom Entwickler zum Endbenutzer und Möglichkeiten zur Anwendung von DevSecOps (DevSecOps in AKS)

Laden Sie eine Visio-Datei dieser Architektur herunter.

Hinweis

Dieser Artikel bezieht sich zwar auf AKS und GitHub, diese Empfehlungen gelten jedoch für jede Containerorchestrierung oder CI/CD-Plattform. Obwohl die Implementierungsdetails variieren können, sind die meisten der in den einzelnen Phasen erwähnten Konzepte und Methoden weiterhin relevant und anwendbar.

  1. Microsoft Entra ID ist als Identitätsanbieter für GitHub konfiguriert. Konfigurieren Sie die Multi-Faktor-Authentifizierung (MFA), um zusätzliche Authentifizierungssicherheit bereitzustellen.
  2. Entwickler verwenden Visual Studio Code oder Visual Studio mit aktivierten Sicherheitserweiterungen, um ihren Code proaktiv auf Sicherheitsrisiken zu analysieren.
  3. Entwickler committen Anwendungscode in ein unternehmenseigenes und verwaltetes GitHub Enterprise-Repository.
  4. GitHub Enterprise integriert Funktionen für automatische Sicherheits- und Abhängigkeitsscans über GitHub Advanced Security.
  5. Pull Requests lösen CI-Builds (Continuous Integration) und automatisierte Tests über GitHub Actions aus.
  6. Der CI-Build in Azure Pipelines generiert ein Docker-Containerimage, das in Azure Container Registry gespeichert wird.
  7. Sie können manuelle Genehmigungen für Bereitstellungen in bestimmten Umgebungen wie der Produktion als Teil des CD-Workflows (Continuous Delivery) in GitHub Actions einführen.
  8. GitHub Actions aktivieren CD in AKS. Verwenden Sie GitHub Advanced Security, um Geheimnisse, Anmeldeinformationen und andere vertrauliche Informationen in Ihren Anwendungsquelldateien und Konfigurationsdateien zu erkennen.
  9. Microsoft Defender wird verwendet, um Azure Container Registry, AKS-Cluster und Azure Key Vault auf Sicherheitsrisiken zu überprüfen.
    1. Microsoft Defender for Containers überprüft das Containerimage beim Hochladen in Container Registry auf bekannte Sicherheitsrisiken.
    2. Sie können Defender for Containers auch verwenden, um Überprüfungen Ihrer AKS-Umgebung durchzuführen und Schutz vor Laufzeitbedrohungen für Ihre AKS-Cluster anzubieten.
    3. Microsoft Defender for Key Vault erkennt schädliche und ungewöhnliche, verdächtige Versuche, auf Key Vault-Konten zuzugreifen.
  10. Azure Policy kann zur Einhaltung und Erzwingung von Richtlinien auf Container Registry und Azure Kubernetes Service (AKS) angewendet werden. Allgemeine Sicherheitsrichtlinien für Container Registry und AKS sind für die schnelle Aktivierung integriert.
  11. Azure Key Vault wird verwendet, um Geheimnisse und Anmeldeinformationen zur Laufzeit auf sichere Weise in eine Anwendung einzufügen und vertrauliche Informationen von Entwicklern abzugrenzen.
  12. Die AKS-Netzwerkrichtlinien-Engine ist so konfiguriert, dass der Datenverkehr zwischen Anwendungspods mithilfe von Kubernetes-Netzwerkrichtlinien geschützt wird.
  13. Die kontinuierliche Überwachung des AKS-Clusters kann mithilfe von Azure Monitor und Container Insights eingerichtet werden, um Leistungsmetriken zu erfassen und Anwendungs- und Sicherheitsprotokolle zu analysieren.
    1. Container Insights ruft Leistungsmetriken sowie Anwendungs- und Clusterprotokolle ab.
    2. Diagnose- und Anwendungsprotokolle werden in einen Azure Log Analytics-Arbeitsbereich gepullt, um Protokollabfragen auszuführen.
  14. Microsoft Sentinel, eine SIEM-Lösung (Security Information and Event Management), kann verwendet werden, um die AKS-Clusterprotokolle basierend auf definierten Mustern und Regeln auf Sicherheitsbedrohungen zu erfassen und weiter zu analysieren.
  15. Open-Source-Tools wie Zed Attack Proxy (ZAP) (ZAP) können verwendet werden, um Penetrationstests für Webanwendungen und Webdienste durchzuführen.
  16. Defender for DevOps, ein Dienst, der in Defender for Cloud verfügbar ist, ermöglicht Sicherheitsteams, DevOps-Sicherheit in Umgebungen mit mehreren Pipelines einschließlich GitHub und Azure DevOps zu verwalten.

Übersicht und Zuständigkeiten von Teammitgliedern

Erwägen Sie, die Komplexität von DevSecOps in Kubernetes-basierten Lösungsbereitstellungen zu verwalten, um die Zuständigkeiten zu trennen. Welches Team in einer Unternehmensumgebung sollte sich mit den einzelnen Aspekten der Bereitstellung befassen? Welche Tools und Prozesse sollte ein Team einsetzen, um seine Ziele am besten zu erreichen? In diesem Abschnitt werden die allgemeinen Rollen von Entwicklern, Anwendungsoperatoren (Site Reliability Engineers), Clusteroperatoren und Sicherheitsteams erläutert.

Entwickler

Entwickler sind für das Schreiben des Anwendungscodes verantwortlich. Sie sind auch dafür verantwortlich, ihren Code in das angegebene Repository zu committen. Eine der wichtigen Aufgaben von Entwicklern umfasst auch das Erstellen und Ausführen von Skripts für automatisierte Tests, um sicherzustellen, dass ihr Code wie gewünscht funktioniert und nahtlos in den Rest der Anwendung integriert wird. Sie definieren und skripten auch die Erstellung von Containerimages als Teil der Automatisierungspipeline.

Anwendungsoperatoren (Site Reliability Engineers)

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 immer weiter verteilte Umgebungen, die die Verwaltung erschweren. Site Reliability Engineers erstellen Lösungen, um die Überwachung großer Softwaresysteme zu automatisieren. Sie dienen als Brücke zwischen Entwicklungs- und Clusterbetreiberteams und helfen bei der Festlegung und Überwachung von Servicelevelzielen und Fehlerbudgets. Auf diese Weise helfen sie bei der Verwaltung von Anwendungsbereitstellungen und schreiben häufig Kubernetes-Manifest-Dateien (YAML).

Clusteroperatoren

Clusteroperatoren sind für die Konfiguration und Verwaltung der Clusterinfrastruktur verantwortlich. Sie verwenden häufig bewährte Methoden für Infrastructure-as-Code (IaC) und Frameworks wie GitOps, um ihre Cluster bereitzustellen und zu verwalten. Sie verwenden verschiedene Überwachungstools wie Azure Monitor Container Insights und Prometheus/Grafana, um die allgemeine Clusterintegrität zu überwachen. Sie sind für Patchen, Clusterupgrades, Berechtigungen und rollenbasierte Zugriffssteuerung für den Cluster verantwortlich. In DevSecOps-Teams stellen sie sicher, dass die Cluster die Sicherheitsanforderungen des Teams erfüllen, und arbeiten mit dem Sicherheitsteam zusammen, 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 die Auswahl von Azure Policy verantwortlich, die in den Abonnements und Ressourcengruppen erzwungen werden, die die Cluster enthalten. Sie überwachen Sicherheitsprobleme und stellen zusammen mit den anderen Teams sicher, dass die Sicherheit bei jedem Schritt des DevSecOps-Prozesses in den Vordergrund gerückt wird.

DevSecOps-Lebenszyklusphasen

Sicherheitskontrollen werden in jeder Phase des Softwareentwicklungslebenszyklus (Software Development Lifecycle, SDLC) implementiert. Diese Implementierung ist ein wichtiger Bestandteil einer DevSecOps-Strategie und des Shift-Left-Ansatzes.

Architekturdiagramm: Flow vom Entwickler zum Endbenutzer und Möglichkeiten zur Anwendung von DevSecOps (DevSecOps in AKS)

Laden Sie eine Visio-Datei dieser Architektur herunter.

Planphase

Die Planphase weist in der Regel den geringsten Automatisierungsgrad auf, hat jedoch 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 entschärft werden.

Bewährte Methode – Entwerfen einer sichereren Anwendungsplattform

Der Aufbau einer sichereren AKS-gehosteten Plattform ist ein wichtiger Schritt, um sicherzustellen, dass Sicherheit auf jeder Ebene in das System integriert wird, beginnend mit der Plattform selbst. Die Plattform kann sowohl interne Komponenten für den Cluster (z. B. Runtime-Sicherheits- und Richtlinien-Agenten) als auch Komponenten enthalten, die sich außerhalb von AKS befinden (z. B. Netzwerkfirewalls und Containerregistrierung). Weitere Informationen finden Sie unter AKS-Zielzonenbeschleuniger, der wichtige Entwurfsbereiche wie Sicherheit, Identität und Netzwerktopologie enthält.

Bewährte Methode – Integrieren der Bedrohungsmodellierung in Ihren Prozess

  • Die Bedrohungsmodellierung ist in der Regel eine manuelle Aktivität, die Sicherheits- und Entwicklungsteams einbindet. Die Modellierung wird verwendet, um Bedrohungen innerhalb eines Systems zu modellieren und zu finden, damit Sicherheitsrisiken vor jeder Codeentwicklung oder Änderungen an einem System behoben werden können. Die Bedrohungsmodellierung kann zu unterschiedlichen Zeiten auftreten, die durch Ereignisse wie eine wesentliche Softwareänderung, Änderung der Lösungsarchitektur oder Sicherheitsvorfälle ausgelöst werden.
  • Wir empfehlen Ihnen, das STRIDE-Bedrohungsmodell zu verwenden. Diese Methodik beginnt mit einem Datenflussdiagramm und verwendet die Bedrohungskategorien STRIDE als Merkhilfe (Spoofing, Tampering, Info Disclosure, Repudiation, Denial of Service und Elevation of Privilege), um Teams in die Lage zu versetzen, Risiken zu identifizieren, zu mindern und zu überprüfen. Es enthält auch ein Modellierungstool zum Notieren und Visualisieren von Systemkomponenten, Datenflüssen und Sicherheitsgrenzen. Die Integration der Bedrohungsmodellierung in Ihre SDLC-Prozesse führt zu neuen Prozessen und mehr Aufwand, um aktualisierte Bedrohungsmodelle zu pflegen. Es trägt jedoch dazu bei, die Sicherheit frühzeitig sicherzustellen, was die potenziellen Kosten für die Behandlung von Sicherheitsproblemen reduziert, die in späteren SDLC-Phasen gefunden werden.

Bewährte Methode – Wenden Sie das Azure Well Architect Framework (WAF) an

  • Wenden Sie bewährten Methoden für die WAF-Sicherheitssäule an, die Anleitungen für Identitätsverwaltung, Anwendungssicherheit, Infrastrukturschutz, Datumssicherheit und DevOps für cloudnative Umgebungen bereitstellen.
  • Wenden Sie bewährte WAF-Methoden für den Betrieb an, wenn sie für DevSecOps und die Überwachung Ihrer Produktionsumgebungen gelten.

Entwicklungsphase

„Shift left“ ist ein wichtiger Mandant der DevSecOps-Denkweise. Dieser Prozess beginnt, bevor Code überhaupt in ein Repository committet und über eine Pipeline bereitgestellt wird. Die Einführung bewährter Methoden für sicheres Codieren und die Verwendung von IDE-Tools und -Plug-Ins für die Codeanalyse während der Entwicklungsphase kann dazu beitragen, Sicherheitsprobleme früher im Entwicklungslebenszyklus zu beheben, wenn sie noch einfacher zu beheben sind.

Bewährte Methode – Erzwingen von Standards für sicheres Programmieren

  • Durch die Verwendung bewährter Methoden und Prüflisten für das sichere Programmieren können Sie Ihren Code vor gängigen Sicherheitsrisiken wie Einschleusung und unsicherem Design schützen. Die OWASP-Foundation veröffentlicht Branchenstandardempfehlungen für sicheres Programmieren, die Sie beim Schreiben von Code übernehmen sollten. Diese Richtlinien sind besonders wichtig bei der Entwicklung öffentlich zugänglicher Webanwendungen oder Dienste.
  • Zusätzlich zu den allgemeinen bewährten Sicherheitsmethoden sollten Sie sich auch die Methoden für das sichere Programmieren für Ihre spezifischen Programmiersprachen-Runtimes wie Java und .NET ansehen.
  • Sie können Protokollierungsstandards erzwingen, um vertrauliche Informationen vor der Weitergabe in Anwendungsprotokolle zu schützen. Die beliebtesten Protokollierungsframeworks wie log4j und 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, 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, wie die OWASP-Top-10-Sicherheitsrisiken. Das Synk-Plug-in überprüft beispielsweise auch Ihre Anwendungsquelle und Abhängigkeiten von Drittanbietern und warnt Sie, wenn Sicherheitsrisiken gefunden werden.
  • Mit dem SARIF-Plug-In (Static Analysis Results Interchange Format) für Visual Studio und Visual Studio Code können Sie problemlos Sicherheitsrisiken von beliebten Tools für statische Anwendungssicherheitstests (Static Application Security Testing, SAST) intuitiv und einfach lesbar im Vergleich zur Interpretation von Ergebnissen aus rohen JSON-Ausgabedateien anzeigen.

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

  • Richten Sie eine Verzweigungsmethodik ein, damit die Verzweigung im gesamten Unternehmen konsistent verwendet wird. Methoden wie Release-Flow und GitHub-Flow verfügen über strukturierte Richtlinien, wie Verzweigungen zur Unterstützung des Teams und der parallelen Entwicklung verwendet werden sollten. Diese Methoden können Teams dabei unterstützen, Standards und Prüfungen für Code-Commits einzurichten und in Ihren CI/CD-Workflow zu integrieren.
  • Bestimmte Branches, z. B. main, sind langlebige Branches, die die Integrität des Quellcodes Ihrer Anwendung bewahren. Diese Branches sollten Merge-Richtlinien eingerichtet haben, bevor Änderungen zusammengeführt oder in sie committet werden können. Dabei gilt Folgendes als Best Practice:
    • Hindern Sie andere Entwickler daran, Code direkt in Ihren Mainbranch zu committen.
    • Richten Sie einen Prozess zum Peer Review ein, und erfordern Sie eine Mindestanzahl von Genehmigungen, bevor Änderungen mit einem Mainbranch zusammengeführt werden können. Sie können diese Prüfungen einfach mit GitHub konfigurieren und erzwingen. Mit GitHub können Sie auch Gruppen von autorisierten genehmigenden Personen festlegen, falls dies für abgegrenzte Umgebungen erforderlich ist.
  • Verwenden Sie Pre-Commit-Hooks, um im Quellcode Ihrer Anwendung nach vertraulichen Informationen zu suchen und zu verhindern, dass ein Commit stattfindet, wenn ein Sicherheitsproblem gefunden wird.
    • Verwenden Sie die von GitHub bereitgestellten integrierten Pre-Commit-Hooks, die einfach für ein bestimmtes Projekt konfiguriert werden können. Beispielsweise gibt es vordefinierte Hooks, um nach Geheimnissen, 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 Versionskontrollsystems ein.
    • Erstellen Sie klar definierte Rollen, indem Sie das Prinzip der geringsten Rechte verwenden. Eine CI/CD-Pipeline ist Ihre Lieferkette für Produktionsbereitstellungen.
    • Wenden Sie etablierte Rollen für Benutzer oder Gruppen in Ihrer Organisation an. Rollen wie Admin, Entwickler, Sicherheitsadministrator und Operator müssen erstellt werden, um Personen basierend auf ihrer spezifischen Rolle und Funktion in Bezug auf Ihre CI/CD-Workflows zu gruppieren.
  • Aktivieren Sie die Überwachung Ihrer Workflows, damit die Konfiguration und andere Änderungen in Bezug auf Ihre CI/CD-Pipelines transparent und nachverfolgbar sind.

Bewährte Methode – Schützen Sie Ihre Containerimages

  • Verwenden Sie einfache Images mit minimalem Speicherbedarf im Betriebssystem, um den gesamten Angriffsbereich zu reduzieren. Betrachten Sie minimale Images wie Alpine oder sogar distributionslose Images, die nur Ihre Anwendung und die zugehörige Runtime enthalten. Mariner, die Open-Source-Linux-Distribution von Microsoft, ist eine einfache, gehärtete Distribution, die für AKS entwickelt wurde, um Containerworkloads zu hosten.
  • 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 Sie den Stammbenutzerzugriff/-kontext für ein Image. Container werden standardmäßig als Stamm ausgeführt.
    • Für Container, die eine höhere Sicherheit benötigen, sollten Sie ein AppArmor-Profil in Ihrem Kubernetes-Cluster verwenden, um das Erzwingen der Sicherheit für Ihre ausgeführten Container noch weitreichender zu unterstützen.

Buildphase

Während der Buildphase arbeiten Entwickler mit den Site Reliability Engineers und Sicherheitsteams zusammen, um automatisierte Scans ihrer Anwendungsquelle in ihre CI-Buildpipelines zu integrieren. Die Pipelines sind so konfiguriert, dass sie Sicherheitspraktiken wie SAST, SCA und Geheimnisüberprüfung mithilfe der Sicherheitstools und -erweiterungen der CI/CD-Plattform ermöglichen.

Bewährte Methode – Führen Sie eine statische Codeanalyse (Static Code Analysis, SAST) durch, um potenzielle Sicherheitsrisiken im Quellcode Ihrer Anwendung zu finden

  • Verwenden Sie die Scanfunktionen von GitHub Advanced Security für Codescan und CodeQL.
    • Codescan ist eine Funktion zum Analysieren des Codes in einem GitHub-Repository, um Sicherheitsrisiken und Codefehler zu finden. Alle durch die Analyse identifizierten Probleme werden in GitHub Enterprise Cloud angezeigt.
    • Wenn beim Codescannen ein potenzielles Sicherheitsrisiko oder ein Fehler im Code gefunden wird, zeigt GitHub eine Warnung im Repository an.
    • Sie können auch Branchregeln für erforderliche Statusprüfungen konfigurieren, um z. B. zu erzwingen, dass ein Featurebranch in Bezug auf den Basisbranch auf dem neuesten Stand ist, bevor neuer Code zusammengeführt wird. Dadurch wird sichergestellt, dass Ihr Branch mit dem neuesten Code aus dem Basisbranch 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 enthält eine Liste mit Empfehlungen, die Sie verbessern können, um Ihre Anwendung sicherer und widerstandsfähiger zu machen.

Bewährte Methode – Führen Sie Geheimnisüberprüfungen durch, um die betrügerische Verwendung von Geheimnissen zu verhindern, die versehentlich an ein Repository übertragen wurden

  • Wenn die Geheimnisüberprüfung für ein Repository aktiviert ist, durchsucht GitHub den Code nach Mustern, die mit Geheimnissen übereinstimmen, die von vielen Dienstanbietern verwendet werden.
  • GitHub führt außerdem in regelmäßigen Abständen eine vollständige Git-Verlaufsüberprüfung vorhandener Inhalte in Repositorys aus und sendet Warnungsbenachrichtigungen.
    • Für Azure DevOps verwendet Defender for Cloud die Geheimnisüberprüfung, um Anmeldeinformationen, Geheimnisse, Zertifikate und andere vertrauliche Inhalte in Ihrem Quellcode und Ihrer Buildausgabe zu erkennen.
    • Das Geheimnisscannen kann als Teil der Erweiterung Microsoft Security DevOps für Azure DevOps ausgeführt werden.

Bewährte Methode – Verwenden Sie Tools zur Softwarekompositionsanalyse (SCA) zum Nachverfolgen von Open-Source-Komponenten in der Codebasis und zum Erkennen von Sicherheitsrisiken in Abhängigkeiten

  • Mit der Abhängigkeitsüberprüfung können Sie unsichere Abhängigkeiten erfassen, bevor Sie sie in Ihre Umgebung einführen, und Informationen zu Lizenz, Abhängigkeiten und deren Alter bereitstellen. Sie bietet eine leicht verständliche Visualisierung von Abhängigkeitsänderungen mit einer umfangreichen Diff auf der Registerkarte „Dateien geändert“ eines Pull Requests.
  • Dependabot führt eine Überprüfung durch, um unsichere Abhängigkeiten zu erkennen, und sendet Dependabot-Warnungen, wenn der GitHub Advisory Database oder dem Abhängigkeitsdiagramm für Repository-Änderungen ein neuer Hinweis hinzugefügt wird.

Bewährte Methode – Aktivieren Sie Sicherheitsüberprüfungen von IaC-Vorlagen (Infrastructure as Code), um Fehlkonfiguration der Cloud in Produktionsumgebungen zu minimieren

  • Überwachen Sie proaktiv die Cloudressourcen-Konfigurationen während des gesamten Entwicklungslebenszyklus.
  • Microsoft Defender für DevOps unterstützt sowohl GitHub- als auch Azure DevOps-Repositorys.

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

  • Defender for Containers überprüft die Container in Container Registry und Amazon AWS Elastic Container Registry (ECR), um Sie zu benachrichtigen, wenn bekannte Sicherheitsrisiken in Ihren Images vorliegen.
  • Azure Policy kann aktiviert werden, um eine Sicherheitsrisikobewertung für alle in Container Registry gespeicherten Images vorzunehmen und detaillierte Informationen zu jedem Fund bereitzustellen.

Bewährte Methode – Erstellen Sie automatisch neue Images bei der Aktualisierung des Basisimages

  • Azure Container Registry Tasks ermittelt dynamisch Basisimageabhängigkeiten, wenn ein Containerimage erstellt wird. So ist zu erkennen, wenn das Basisimage eines Anwendungsimages aktualisiert wird. Mit einer einzelnen vorkonfigurierten Buildaufgabe kann Container Registry Tasks automatisch alle Anwendungsimages neu erstellen, die auf das Basisimage verweisen.

Bewährte Methode – Verwenden Sie Container Registry, Azure Key Vault und Notation, um Ihre Containerimages digital zu signieren und AKS-Cluster so zu konfigurieren, dass nur überprüfte Images zugelassen werden

  • Azure Key Vault speichert einen Signaturschlüssel, der von Notation mit dem Notation-Key Vault-Plug-in (azure-kv) verwendet werden kann, um Containerimages und andere Artefakte zu signieren und zu überprüfen. Mit Container Registry 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 wurden, und überprüfen, dass Artefakte seit ihrer Erstellung nicht manipuliert wurden. Das signierte Artefakt stellt die Integrität und Authentizität sicher, bevor der Benutzer ein Artefakt in eine Umgebung pullt, und somit bei der Vermeidung von Angriffen unterstützt.
    • Mit Ratify können Kubernetes-Cluster vor der Bereitstellung Metadaten zur Artefaktsicherheit überprüfen und nur die Metadaten für die Bereitstellung zulassen, die einer von Ihnen erstellten Zulassungsrichtlinie entsprechen.

Bereitstellungsphase

Während der Bereitstellungsphase arbeiten Entwickler, Anwendungsoperatoren und Clusteroperatorenteams gemeinsam daran, die richtigen Sicherheitskontrollen für die Continuous Deployment-Pipelines (CD) einzurichten, um Code in einer Produktionsumgebung sicherer und automatisierter bereitzustellen.

Bewährte Methode – Steuern Sie den Zugriff und den Workflow der Bereitstellungspipeline

  • Sie können wichtige Branches schützen, indem Sie Branchschutzregeln festlegen. Diese Regeln definieren, ob Projektmitarbeiter den Branch löschen oder Pushes in den Branch erzwingen können. Sie legen auch Anforderungen für alle Pushvorgänge an den Branch fest, z. B. das Übergeben von Statusprüfungen oder einen linearen Commitverlauf.
  • Mithilfe von Umgebungen für die Bereitstellung können Sie Umgebungen mit Schutzregeln und Geheimnissen konfigurieren.
  • Sie können auch das Feature Genehmigungen und Gates nutzen, um den Workflow der Bereitstellungspipeline zu steuern. Beispielsweise können Sie vor einer Bereitstellung in einer Produktionsumgebung manuelle Genehmigungen von einem Sicherheits- oder Betriebsteam anfordern.

Bewährte Methode – Sichern Sie Anmeldeinformationen für die Bereitstellung

  • Mit OpenID Connect (OIDC) können Ihre GitHub Action Workflows auf Ressourcen in Azure zugreifen, ohne dass die Azure-Anmeldeinformationen als langlebige GitHub-Geheimnisse gespeichert werden müssen.
  • Mithilfe von Umgebungen für die Bereitstellung können Sie Umgebungen mit Schutzregeln und Geheimnissen konfigurieren.
    • Ein Pull-basierter Ansatz für CI/CD mit GitOps ermöglicht es Ihnen, Sicherheitsanmeldeinformationen in Ihren Kubernetes-Cluster zu verschieben, wodurch die Sicherheits- und Risikooberfläche reduziert wird, indem Anmeldeinformationen entfernt werden, die in Ihrem externen CI-Tool gespeichert werden. Sie können auch zulässige eingehende Verbindungen reduzieren und den Zugriff auf Administratorebene auf Ihre Kubernetes-Cluster einschrä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 dynamische Anwendungssicherheitstests (DAST) auszuführen.
  • Verwenden Sie Open-Source-Tools wie ZAP, um Penetrationstests für gängige Webanwendungsrisiken durchzuführen.

Bewährte Methode – Stellen Sie Containerimages nur aus vertrauenswürdigen Registrierungen bereit

  • Verwenden Sie Defender für Container, um das Azure Policy Add-On für Kubernetes zu aktivieren.
  • Aktivieren Sie Azure Policy, damit Containerimages nur von vertrauenswürdigen Registrierungen bereitgestellt werden können.

Betriebsphase

In dieser Phase werden Aufgaben zur Betriebsüberwachung und Sicherheitsüberwachung ausgeführt, um potenzielle Sicherheitsvorfälle proaktiv zu überwachen, zu analysieren und zu melden. Tools zum Produktionseinblick wie Azure Monitor und Microsoft Sentinel werden verwendet, um die Einhaltung der Sicherheitsstandards für Unternehmen zu überwachen und sicherzustellen.

Bewährte Methode – Verwenden Sie Microsoft Defender für die Cloud, um die automatisierte Überprüfung und Überwachung Ihrer Produktionskonfigurationen zu ermöglichen

  • Führen Sie kontinuierliche Überprüfungen durch, um Abweichungen im Sicherheitsrisikostatus Ihrer Anwendung zu erkennen, und implementieren Sie einen Prozess, um anfällige Images zu patchen und zu ersetzen.
  • Implementieren Sie automatisierte Konfigurationsüberwachung für Betriebssysteme.
    • Verwenden Sie Containerempfehlungen von Microsoft Defender for Cloud (im Abschnitt Compute und Apps), um Baseline-Überprüfungen für Ihre AKS-Cluster durchzuführen. Lassen Sie sich im Dashboard von Microsoft Defender für Cloud benachrichtigen, wenn Konfigurationsprobleme oder Sicherheitsrisiken gefunden werden.
    • Verwenden Sie Microsoft Defender for Cloud, und befolgen Sie die Empfehlungen zum Netzwerkschutz, um die Netzwerkressourcen zu schützen, die von Ihren AKS-Clustern verwendet werden.
  • Führen Sie eine Sicherheitsrisikobewertung für In Container Registry gespeicherte Images durch.
    • Implementieren Sie fortlaufende Überprüfungen für ausgeführte Images in Container Registry, indem Sie Defender for Containers aktivieren.

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

  • Kubernetes-Releases werden häufig bereitgestellt. Es ist wichtig, über eine Strategie zur Lebenszyklusverwaltung zu verfügen, um sicherzustellen, dass Sie weiterhin Support genießen. AKS ist ein verwaltetes Angebot, das Ihnen Tools und Flexibilität zum Verwalten dieses Upgradeprozesses bietet. Sie können die geplanten Wartungsfeatures der AKS-Plattform verwenden, um mehr Kontrolle über Wartungsfenster und Upgrades zu erhalten.
  • AKS-Workerknoten sollten häufiger aktualisiert werden. Wir bieten wöchentliche Betriebssystem- und Laufzeitupdates, die automatisch über den unbeaufsichtigten Modus oder über die Azure CLI angewendet werden können, um mehr Kontrolle und umfassende Updates zu ermöglichen.

Bewährte Methode – Verwenden Sie Azure Policy zum Schützen und Steuern Ihrer AKS-Cluster

  • Nachdem Sie das Azure Policy-Add-On für AKS installiert haben, können Sie einzelne Richtliniendefinitionen oder als Initiativen bezeichnete Gruppen von Richtliniendefinitionen (auch als Richtliniensätze bezeichnet) auf Ihren Cluster anwenden.
  • Verwenden Sie integrierte Azure-Richtlinien für gängige Szenarien, z. B. Verhindern, dass privilegierte Container ausgeführt werden oder nur Genehmigen externer IP-Adressen einer Positivliste. 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 Zuweisungen erzwungen werden.
  • Verwenden Sie Gatekeeper, um einen Zugangscontroller zu konfigurieren, der Bereitstellungen basierend auf den angegebenen Regeln zulässt oder verweigert. Azure Policy erweitert Gatekeeper.
  • Sichern Sie den Datenverkehr zwischen Workloadpods durch Netzwerkrichtlinien in AKS.
    • Installieren Sie das Modul für Netzwerkrichtlinien erstellen Sie Netzwerkrichtlinien für Kubernetes, um den Datenverkehrsfluss zwischen Pods in AKS zu steuern. Die Netzwerkrichtlinie kann für Linux- oder Windows-basierte Knoten und Pods in AKS verwendet werden.

Bewährte Methode – Verwenden Sie Azure Monitor für kontinuierliche Überwachung und Warnungen

  • Verwenden Sie Azure Monitor, um Protokolle und Metriken von AKS zu erfassen. Sie erhalten Erkenntnisse zur Verfügbarkeit und Leistung Ihrer Anwendung und Infrastruktur. Darüber hinaus haben Sie Zugriff auf Signale zur Überwachung der Integrität Ihrer Lösung und zur frühzeitigen Erkennung von anomalen Aktivitäten.
    • Die kontinuierliche Überwachung mit Azure Monitor wird auf Releasepipelines erweitert, um Releases basierend auf Überwachungsdaten zu steuern bzw. einen Rollback dafür durchzuführen. Mit Azure Monitor können auch Sicherheitsprotokolle erfasst und Warnungen vor verdächtigen Aktivitäten angezeigt werden.
    • Führen Sie ein Onboarding von AKS-Instanzen in Azure Monitor durch, und konfigurieren Sie Diagnoseeinstellungen für Ihren Cluster.

Bewährte Methode – Verwenden Sie Microsoft Defender for Cloud für aktive Bedrohungsüberwachung

  • Microsoft Defender for Cloud bietet eine aktive Bedrohungsüberwachung für AKS auf Knotenebene (VM-Bedrohungen) sowie für Interne.
  • Defender for DevOps sollte für eine umfassende Transparenz verwendet werden und bietet Sicherheits- und Operatorteams ein zentrales Dashboard für alle Ci/CD-Pipelines. Diese Funktionalität ist besonders nützlich, wenn Sie Plattformen mit mehreren Pipelines wie Azure DevOps und GitHub verwenden oder Pipelines über öffentliche Clouds ausführen.
  • Defender for Key Vault kann verwendet werden, um ungewöhnliche, verdächtige Versuche, auf Schlüsseltresorkonten zuzugreifen, zu erkennen und Administratoren basierend auf der Konfiguration zu benachrichtigen.
  • Defender for Containers kann warnen bei Sicherheitsrisiken in Ihren Containerimages, die in Container Registry gespeichert sind.

Bewährte Methode – Ermöglichen Sie zentralisierte Protokollüberwachung und verwenden Sie SIEM-Produkte zum Überwachen von Sicherheitsbedrohungen in Echtzeit

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

Bewährte Methode – Aktivieren Sie die Überwachungsprotokollierung zum Überwachen von Aktivitäten in Ihren Produktionsclustern

  • Verwenden Sie Aktivitätsprotokolle zum Überwachen von Aktionen für AKS-Ressourcen, um alle Aktivitäten und deren Status anzuzeigen. Ermitteln Sie, welche Vorgänge für die Ressourcen ausgeführt wurden und von wem.
  • Aktivieren Sie DNS-Abfrageprotokollierung, indem Sie die dokumentierte Konfiguration in Ihrer CoreDNS-custom-ConfigMap anwenden.
  • Überwachen Sie Zugriffsversuche auf deaktivierte Anmeldeinformationen.
    • Integrieren Sie die Benutzerauthentifizierung für AKS mit Microsoft Entra ID. Erstellen Sie Diagnoseeinstellungen für Microsoft Entra ID, und senden Sie die Überwachungs- und Anmeldeprotokolle an einen Azure Log Analytics-Arbeitsbereich. Konfigurieren Sie gewünschte Warnungen (z. B. wenn ein deaktiviertes Konto versucht, sich anzumelden) innerhalb eines Azure Log Analytics-Arbeitsbereichs.

Bewährte Methode – Aktivieren Sie die Diagnose für Ihre Azure-Ressourcen

  • Indem Sie die Azure-Diagnose für alle Ressourcen Ihrer Workload 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 einer SIEM-Lösung wie Microsoft Sentinel für die Sicherheitsüberwachung und Warnungen erfasst werden.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautor:

Andere Mitwirkende:

Nächste Schritte