Freigeben über


DevSecOps auf 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 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 Kontinuierliche Lieferungspipelinen (CI/CD), die sich für die verwendungsfreundlichen integrierten Tools entscheiden, sofern verfügbar.

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

Das Architekturdiagramm zeigt den Fluss vom Entwickler zum Endbenutzer und wo DevSecOps verwendet werden kann, DevSecOps auf AKS.

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.

  1. Microsoft Entra-ID ist als Identitätsanbieter für GitHub konfiguriert. Konfigurieren Sie die mehrstufige Authentifizierung (Multi-Factor 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 übernehmen Anwendungscode für ein Unternehmenseigenes und verwaltetes GitHub Enterprise-Repository.
  4. GitHub Enterprise integriert die automatische Sicherheits- und Abhängigkeitsüberprüfung über GitHub Advanced Security.
  5. Pullanforderungen lösen fortlaufende Integration (CI)-Builds und automatisierte Tests über GitHub Actions aus.
  6. Der CI-Buildworkflow über GitHub Actions generiert ein Docker-Containerimage, das in der Azure-Containerregistrierung gespeichert ist.
  7. Sie können manuelle Genehmigungen für Bereitstellungen für bestimmte Umgebungen, z. B. die Produktion, als Teil des Cd-Workflows (Continuous Delivery) in GitHub-Aktionen einführen.
  8. GitHub-Aktionen aktivieren CD zu AKS. Verwenden Sie GitHub Advanced Security, um Geheime, Anmeldeinformationen und andere vertrauliche Informationen in Ihren Anwendungsquell- 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 für Container überprüft das Containerimage auf bekannte Sicherheitsrisiken beim Hochladen in die Containerregistrierung.
    2. Sie können Defender for Containers auch verwenden, um Scans Ihrer AKS-Umgebung durchzuführen und bietet Laufzeitbedrohungen für Ihre AKS-Cluster.
    3. Microsoft Defender für Key Vault erkennt schädliche und ungewöhnliche, verdächtige Versuche, auf Schlüsseltresorkonten zuzugreifen.
  10. Azure-Richtlinie kann auf Containerregistrierung und Azure Kubernetes Service (AKS) angewendet werden, um richtlinienkonform und erzwingen zu können. Allgemeine Sicherheitsrichtlinien für die Containerregistrierung und AKS sind für die schnelle Aktivierung integriert.
  11. Azure Key Vault wird verwendet, um geheime Schlüssel und Anmeldeinformationen zur Laufzeit in eine Anwendung einzufügen und vertrauliche Informationen von Entwicklern zu trennen.
  12. Das AKS-Netzwerkrichtlinienmodul ist so konfiguriert, dass der Datenverkehr zwischen Anwendungs pods mithilfe von Kubernetes-Netzwerkrichtlinien gesichert wird.
  13. Die kontinuierliche Überwachung des AKS-Clusters kann mithilfe von Azure Monitor - und Containereinblicken eingerichtet werden, um Leistungsmetriken zu erfassen und Anwendungs- und Sicherheitsprotokolle zu analysieren.
    1. Containereinblicke rufen Leistungsmetriken und Anwendungs- und Clusterprotokolle ab.
    2. Diagnose- und Anwendungsprotokolle werden in einen Azure Log Analytics-Arbeitsbereich abgerufen, um Protokollabfragen auszuführen.
  14. Microsoft Sentinel, bei dem es sich um eine SIEM-Lösung (Security Information and Event Management) handelt, kann verwendet werden, um die AKS-Clusterprotokolle für alle Sicherheitsbedrohungen basierend auf definierten Mustern und Regeln 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 Dienste durchzuführen.
  16. Defender für DevOps, ein Dienst, der in Defender für Cloud verfügbar ist, 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 auf Kubernetes-basierten Lösungsbereitstellungen als Trennung von Bedenken. 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 bewährte Methoden und Frameworks wie GitOps als Code (IaC), 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 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 den Abonnements und Ressourcengruppen erzwungen werden, die die Cluster enthalten. 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.

Das Architekturdiagramm zeigt den Fluss vom Entwickler zum Endbenutzer und wo DevSecOps verwendet werden kann, DevSecOps auf AKS.

Laden Sie eine Visio-Datei dieser Architektur herunter.

Planungsphase

Die Planphase weist in der Regel die geringste Automatisierungsmenge 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 – Erstellen der Bedrohungsmodellierung in Ihren Prozess

  • Die Bedrohungsmodellierung ist in der Regel eine manuelle Aktivität, die Sicherheits- und Entwicklungsteams umfasst. Es 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. 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 von 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

"Shift left" ist ein wichtiger Mandant 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 sich auch mit sicheren Codierungsmethoden für Ihre spezifischen Programmiersprachenlaufzeiten wie Java und .NET befassen.
  • 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 SARIF-Plug-In (Static Analysis Results Interchange Format) 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 einfache Weise im Vergleich zur Interpretation von Ergebnissen aus unformatierten JSON-Ausgabedateien anzeigen.

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

  • Richten Sie eine Verzweigungsmethode ein, sodass die Verzweigung im gesamten Unternehmen konsistent genutzt wird. Methoden wie Release flow und GitHub flow haben strukturierte Richtlinien dazu, wie Zweigniederlassungen verwendet werden sollten, um Team und parallele Entwicklung zu unterstützen. Diese Methoden können Teams dabei helfen, Standards und Kontrollen für Code-Commits einzurichten und in Ihrem CI/CD-Workflow zusammenzuführen.
  • Bestimmte Verzweigungen, z. B. Hauptzweige, sind langanhaltende Verzweigungen, die die Integrität des Quellcodes Ihrer Anwendung beibehalten. Diese Verzweigungen sollten Zusammenführungsrichtlinien eingerichtet haben, bevor Änderungen zusammengeführt oder zugesichert werden können. Zu den bewährten Methoden gehören:
    • Verhindern Sie, dass andere Entwickler Code direkt in Ihre Hauptverzweigung übernehmen.
    • 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. Mit GitHub können Sie auch Gruppen autorisierter Genehmiger festlegen, wenn dies für Gated-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 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 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 Produktionsbereitstellungen.
    • 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 Bilder wie Alpine oder sogar untrolose Bilder, 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 Stamm ausgeführt.
    • Für Container, die erhöhte Sicherheit benötigen, sollten Sie ein AppArmor-Profil in Ihrem Kubernetes-Cluster verwenden, um die Sicherheit für Ihre ausgeführten Container weiter zu erzwingen.

Buildphase

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 – Durchführen der Statischen Codeanalyse (Static Code Analysis, SAST), um potenzielle Sicherheitsrisiken in Ihrem Anwendungsquellcode zu finden

  • Verwenden Von GitHub Advanced Security-Scanfunktionen zum Scannen von Code und CodeQL.
    • Bei der Codeüberprüfung handelt es sich um 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 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 auch Verzweigungsregeln für erforderliche Statusprüfungen konfigurieren, um beispielsweise zu erzwingen, dass ein Feature branch mit dem Basiszweig auf dem neuesten Stand ist, bevor ein neuer Code zusammengeführt wird. Diese Übung stellt sicher, dass Ihre Verzweigung 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ühren von geheimen Überprüfungen, um die betrügerische Verwendung von Geheimschlüsseln zu verhindern, die versehentlich an ein Repository begangen wurden

  • Wenn die geheime Überprüfung für ein Repository aktiviert ist, durchsucht GitHub den Code nach Mustern, die mit geheimen Schlüsseln übereinstimmen, die von vielen Dienstanbietern verwendet 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 geheime Überprüfungen, um Anmeldeinformationen, geheime Schlüssel, Zertifikate und andere vertrauliche Inhalte in Ihrem Quellcode und Ihre Buildausgabe zu erkennen.
    • Geheime Überprüfungen können als Teil der Microsoft Security DevOps for 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 auf der Registerkarte "Dateien geändert" einer Pullanforderung.
  • 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 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-Richtlinie kann aktiviert werden, um eine Sicherheitsrisikobewertung für alle in der Containerregistrierung gespeicherten Images zu erledigen und detaillierte Informationen zu den einzelnen Ermittlungen bereitzustellen.

Bewährte Methode – Automatisches Erstellen neuer Images auf Basisimageupdates

  • 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 vorkonfigurierten Buildaufgabe können Containerregistrierungsaufgaben automatisch jedes Anwendungsimage neu erstellen, das auf das Basisimage verweist.

Bewährte Methode – Verwenden der Containerregistrierung, des Azure Key Vault und der Notation zum digitalen Signieren Ihrer Containerimages und Konfigurieren des AKS-Clusters, um nur validierte Images zuzulassen

  • Azure Key Vault speichert einen Signaturschlüssel, der von der Notation mit dem Notation Key Vault-Plug-In (azure-kv) zum Signieren und Überprüfen von Containerimages und anderen Artefakten verwendet werden kann. 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 Verzweigungen schützen , indem Sie Branch-Schutzregeln festlegen. Diese Regeln definieren, ob Mitarbeiter Push an die Verzweigung löschen oder erzwingen können. Sie legen auch Anforderungen für alle Pushs an die Verzweigung fest, z. B. übergebene 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

  • Mit OpenID Connect (OIDC) können Ihre GitHub Action-Workflows auf Ressourcen in Azure zugreifen, ohne die Azure-Anmeldeinformationen als langlebige GitHub-Geheimnisse zu speichern.
  • 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-Aktionen in Bereitstellungsworkflows, um Dynamische Anwendungssicherheitstests (DAST)-Tests 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.
  • Aktivieren Sie Azure-Richtlinie, 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 die automatisierte Überprüfung und Überwachung 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 Empfehlungen für Microsoft Defender für Cloud-Container (im Abschnitt " Compute und Apps ") zum Ausführen von Basisüberprüfungen für Ihre AKS-Cluster. Erhalten Sie Benachrichtigungen im Microsoft Defender für Cloud-Dashboard, wenn Konfigurationsprobleme oder Sicherheitsrisiken gefunden werden.
    • Verwenden Sie Microsoft Defender für Cloud, und befolgen Sie ihre Netzwerkschutzempfehlungen, um die Netzwerkressourcen zu schützen , die von Ihren AKS-Clustern verwendet werden.
  • Führen Sie eine Sicherheitsrisikobewertung für bilder aus, die in der Containerregistrierung gespeichert sind.
    • Implementieren Sie fortlaufende Scans für ausgeführte 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 eingeführt. Es ist wichtig, eine Lifecycle Management-Strategie zu haben, um sicherzustellen, dass Sie nicht hinter den Support fallen und nicht mehr 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-Richtlinien zum Sichern und Steuern Ihrer AKS-Cluster

  • Nach der Installation des Azure-Richtlinien-Add-Ons für AKS können Sie einzelne Richtliniendefinitionen oder Gruppen von Richtliniendefinitionen anwenden, die als Initiativen (auch als Richtliniensätze bezeichnet) auf Ihren Cluster bezeichnet werden.
  • Verwenden Sie integrierte Azure-Richtlinien für allgemeine Szenarien, z. B. verhindern, dass privilegierte Container ausgeführt werden oder nur zugelassene externe IPs genehmigt werden. 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-Richtlinie 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.
    • Die kontinuierliche Überwachung mit Azure Monitor erstreckt sich auf die Freigabe von Pipelines zu Gate- oder Rollbackversionen basierend auf Überwachungsdaten. Azure Monitor nimmt auch Sicherheitsprotokolle auf 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 für Cloud für die aktive Bedrohungsüberwachung

  • Microsoft Defender für Cloud bietet aktive Bedrohungsüberwachung auf der AKS auf Knotenebene (VM-Bedrohungen) und für Interne.
  • 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 Schlüsseltresorkonten zuzugreifen, zu erkennen und Administratoren basierend auf der Konfiguration zu benachrichtigen.
  • Defender für Container kann auf Sicherheitsrisiken in Ihren Containerimages aufmerksam werden, die in der Containerregistrierung gespeichert sind.

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, um eine zentralisierte Sicherheitsüberwachung basierend auf Mustern und Regeln zu ermöglichen. Sentinel ermöglicht diesen Zugriff nahtlos über Datenconnectors.

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 Vorgänge für die Ressourcen und von wem ausgeführt wurden.
  • 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 Die Microsoft Entra-ID, und senden Sie die Überwachungs- und Anmeldeprotokolle an einen Azure Log Analytics-Arbeitsbereich. 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 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 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:

Andere Mitwirkende:

Nächste Schritte