Bearbeiten

DevSecOps für Infrastruktur als Code (Infrastructure-as-Code, IaC)

Microsoft Sentinel
Azure Monitor
GitHub

Lösungsmöglichkeiten

Dieser Artikel ist ein Lösungsvorschlag. Wenn Sie möchten, dass wir diesen Artikel um weitere Informationen ergänzen, z. B. potenzielle Anwendungsfälle, alternative Dienste, Überlegungen zur Implementierung oder Preisempfehlungen, lassen Sie es uns über Feedback auf GitHub wissen.

Diese Lösungsidee veranschaulicht die DevSecOps-Pipeline unter Verwendung von GitHub für IaC sowie die Steuerung des Workflows, um einen optimalen Betrieb zu gewährleisten und die Sicherheit und Kosten zu optimieren.

Terraform ist eine Marke von Hashicorp. Die Verwendung dieser Marke impliziert keine Empfehlung.

Aufbau

Diagramm: Architektur für DevSecOps für IaC

Laden Sie eine Visio-Datei dieser Architektur herunter.

Datenfluss

  1. Bei der testgesteuerten Entwicklung checken Sie Codeänderungen für Infrastrukturdefinitionen (beispielsweise IaC-Vorlagen) in GitHub-Repositorys ein. Sie entwickeln Komponententests, Integrationstests und PaC gleichzeitig, um die Qualität von IaC zu testen.
  2. Pull Requests (PRs) lösen automatisierte Komponententests über GitHub Actions aus.
  3. Sie konfigurieren den GitHub Actions-Workflowprozess, um IaC mit lokal bereitgestellten Infrastrukturzuständen und -Plänen zu testen.
  4. Sie konfigurieren GitHub Actions, um nach Problemen mit der Codequalität und nach Sicherheitsproblemen zu suchen. Anschließend verwenden Sie auf GitHub CodeQL basierende Tools für Sicherheitsscans, um nach IaC-Sicherheitsrisiken zu suchen. Wird ein Sicherheitsrisiko erkannt, sendet GitHub Warnungen an die Organisation oder an Repositorybesitzer und -verwalter.
  5. Über das IaC-Tool werden die Ressourcen für die einzelnen Umgebungen bereitgestellt und geändert, wobei Größe, Instanzenanzahl und andere Eigenschaften angepasst werden. Sie können automatisierte IaC-Integrationstests für bereitgestellte Ressourcen ausführen.
  6. Sollte eine manuelle Aktualisierung der Infrastruktur erforderlich sein, wird der Zugriff des zuständigen Administrators erhöht, um die Änderungen vornehmen zu können. Nach der Änderung wird der Zugriff mit erhöhten Rechten wieder entfernt, und auf GitHub sollte zur IaC-Abstimmung ein Problem protokolliert werden. Die Abstimmungsschritte und die Möglichkeit der Abstimmung hängen von den spezifischen IaC-Tools ab.
  7. Von SecOps wird kontinuierlich eine Überwachung auf Sicherheitsbedrohungen und -risiken durchgeführt, um diese abzuwehren. Azure Policy dient zur Erzwingung von Cloudgovernance.
  8. Bei Erkennung einer Anomalie sollte zur Behebung automatisch ein Problem auf GitHub gemeldet werden.

Komponenten

  • GitHub ist eine Codehostingplattform für Versionskontrolle und Zusammenarbeit. Ein GitHub-Repository für die Quellcodeverwaltung enthält alle Projektdateien und deren Revisionsverlauf. Entwickler können zusammenarbeiten und am Code im Repository mitwirken, diesen besprechen und verwalten.
  • GitHub Actions bietet eine Sammlung von Build- und Releaseworkflows, die Continuous Integration (CI), automatisierte Tests und Containerbereitstellungen abdeckt.
  • GitHub Advanced Security bietet Features zum Schutz Ihrer IaC-Lösung. Hierfür ist eine weitere Lizenz erforderlich.
  • CodeQL bietet Tools für Sicherheitsscans, die für statischen Code ausgeführt werden, um falsche Infrastrukturkonfigurationen zu erkennen.
  • Terraform ist ein von HashiCorp entwickeltes Partnerprodukt, das die Automatisierung der Infrastruktur in Azure sowie in anderen Umgebungen ermöglicht.
  • Microsoft Defender for Cloud bietet eine einheitliche Sicherheitsverwaltung und erweiterten Bedrohungsschutz für Hybrid Cloud-Workloads.
  • Microsoft Sentinel ist eine cloudnative SIEM- und SOAR-Lösung (Security Orchestration Automated Response, Sicherheitsorchestrierung mit automatisierter Reaktion). Sie hilft Ihnen mit erweiterten KI- und Sicherheitsanalysen dabei, Bedrohungen im gesamten Unternehmen zu erkennen und auf sie zu reagieren.
  • Azure Policy hilft Teams bei der Verwaltung und Vermeidung von IT-Problemen durch Richtliniendefinitionen, die Regeln für Cloudressourcen durchsetzen können. Wenn im Rahmen Ihres Projekts beispielsweise ein virtueller Computer mit einer nicht erkannten SKU bereitgestellt werden soll, macht Sie Azure Policy auf das Problem aufmerksam und beendet die Bereitstellung.
  • Azure Monitor erfasst und analysiert App-Telemetriedaten, z. B. Leistungsmetriken und Aktivitätsprotokolle. Wenn dieser Dienst unregelmäßige Bedingungen feststellt, alarmiert er Apps und Mitarbeiter.

Szenariodetails

Das Konzept von DevSecOps für Infrastructure-as-Code (IaC) ist vergleichbar mit dem von DevSecOps in Azure Kubernetes Service (AKS). Sie benötigen jedoch andere Pipelines und Tools, um Continuous Integration und Continuous Delivery (CI/CD) für IaC zu verwalten und zu automatisieren.

Wenn Sie IaC einführen, ist es wichtig, Automatisierungstests zu erstellen, während Sie den Code entwickeln. Diese Tests verringern die Komplexität des Testens von IaC, wenn Ihre Workload skaliert wird. Durch die Verwendung lokaler Infrastrukturkonfigurationszustände (beispielsweise Terraform-Zustände und -Pläne) können Sie eine testgesteuerte Entwicklung (Test-Driven Development, TDD) für IaC entwickeln. Diese Konfigurationszustände emulieren die tatsächlichen Bereitstellungen. Mithilfe der Azure Resource Graph-REST-API können Sie Integrationstests für IaC in tatsächlichen Infrastrukturbereitstellungen ausführen.

Richtlinie als Code (Policy-as-Code, PaC) ist ebenfalls eine wichtige Methode für die Bereitstellung einer Infrastruktur, die den Bestimmungen und der Unternehmensgovernance entspricht. Sie können Ihren Pipelines PaC-Workflows hinzufügen, um Cloudgovernance zu automatisieren.

Es empfiehlt sich, die Infrastruktur in der Entwicklungsphase frühzeitig schützen, um die Gefahren einer falsch konfigurierten Infrastruktur zu reduzieren, die nach der Bereitstellung Angriffspunkte bietet. Mithilfe von GitHub CodeQL können Sie Tools für die Analyse von statischem Code für Infrastruktur wie Synk oder Aquasecurity tfsec integrieren, um nach Sicherheitsproblemen im Infrastrukturcode zu suchen. Dieser Prozess ist vergleichbar mit statischen Sicherheitstests für Anwendungen (Static Application Security Testing, SAST).

Wenn die Infrastruktur bereitgestellt wurde und betriebsbereit ist, lassen sich Drifts bei der Cloudkonfiguration möglicherweise nur schwer beheben. Das gilt insbesondere in Produktionsumgebungen.

Richten Sie dedizierte Dienstprinzipale ein, um Cloudinfrastruktur für Produktionsumgebungen bereitzustellen oder zu ändern. Entfernen Sie dann alle anderen Zugriffe, die eine manuelle Konfiguration der Umgebung ermöglichen. Sollten manuelle Konfigurationen erforderlich sein, erhöhen Sie den Zugriff für den dafür zuständigen Administrator, und entfernen Sie den erweiterten Zugriff wieder, nachdem die Änderung vorgenommen wurde. Es empfiehlt sich, Azure Monitor so zu konfigurieren, dass auf GitHub ein Problem gemeldet wird, damit Entwickler die Änderungen abgleichen. Manuelle Konfigurationen sollten jedoch nach Möglichkeit vermieden werden.

Es ist wichtig, die Cloudumgebung kontinuierlich auf Bedrohungen und Sicherheitsrisiken zu überwachen, um Sicherheitsincidents zu verhindern. Sie können den Bedrohungsschutz sowie Security Information & Event Management (SIEM) verwenden, um anormalen Datenverkehr zu erkennen. Diese Tools benachrichtigen automatisch Sicherheitsadministratoren und melden ein Problem auf GitHub, um darauf aufmerksam zu machen.

Mögliche Anwendungsfälle

Sie sind Teil eines zentralen Teams von IaC-Entwicklern, das eine Multicloudstrategie für das fiktive Unternehmen Contoso verfolgt. Sie möchten eine Cloudinfrastruktur in einer neuen Azure-Zielzone bereitstellen, indem Sie DevSecOps für IaC verwenden, um die Sicherheit und Qualität der Bereitstellungen zu gewährleisten. Außerdem möchten Sie alle Änderungen an der Infrastruktur nachverfolgen und überwachen.

Beitragende

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

Hauptautoren:

Nächste Schritte