DevSecOps für Infrastruktur als Code (Infrastructure-as-Code, IaC)
Lösungsmöglichkeiten
In diesem Artikel ist ein Lösungsvorschlag beschrieben. Ihr Cloudarchitekt kann diesen Leitfaden verwenden, um die Hauptkomponenten einer typischen Implementierung dieser Architektur zu visualisieren. Verwenden Sie diesen Artikel als Ausgangspunkt, um eine gut durchdachte Lösung zu entwerfen, die den spezifischen Anforderungen Ihrer Workload entspricht.
Diese Lösungsidee veranschaulicht die DevSecOps-Pipeline, die GitHub für die Infrastruktur als Code (IaC) verwendet. Außerdem wird beschrieben, wie der Workflow für operative Exzellenz, Sicherheit und Kostenoptimierung geregelt wird.
Terraform ist eine Marke von Hashicorp. Die Verwendung dieser Marke impliziert keine Empfehlung.
Aufbau
Laden Sie eine Visio-Datei dieser Architektur herunter.
Datenfluss
Der folgende Datenfluss entspricht dem vorherigen Diagramm:
Verwenden Sie testgesteuerte Entwicklung, um Codeänderungen für Infrastrukturdefinitionen wie IaC-Vorlagen in GitHub-Repositorys zu überprüfen. Sie entwickeln Komponententests, Integrationstests und Richtlinien als Code (PaC) gleichzeitig, um die Qualität der IaC zu testen.
Pullanforderungen lösen automatisierte Komponententests über GitHub-Aktionen aus.
Konfigurieren Sie den Workflowprozess "GitHub-Aktionen", um den IaC mithilfe von lokal bereitgestellten Infrastrukturzuständen und -plänen zu testen.
Konfigurieren Sie GitHub-Aktionen, um nach Codequalitäts- und Sicherheitsproblemen zu suchen. Erstellen Sie eigene benutzerdefinierte GitHub CodeQL-Abfragen, um IaC-Vorlagen zu analysieren und potenzielle Sicherheitsrisiken zu erkennen. Wird ein Sicherheitsrisiko erkannt, sendet GitHub Warnungen an die Organisation oder an Repositorybesitzer und -verwalter.
Das IaC-Tool stellt Ressourcen für jede Umgebung bereit und ändert diese, indem Größe, Instanzenanzahl und andere Eigenschaften angepasst werden. Sie können automatisierte IaC-Integrationstests für bereitgestellte Ressourcen ausführen.
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 entfernt. Sie sollten auch ein GitHub-Problem für die Abstimmung der IaC protokollieren. Die Abstimmungsschritte und -ansätze hängen von den spezifischen IaC-Tools ab.
Von SecOps wird kontinuierlich eine Überwachung auf Sicherheitsbedrohungen und -risiken durchgeführt, um diese abzuwehren. Azure Policy dient zur Erzwingung von Cloudgovernance.
Wenn eine Anomalie erkannt wird, wird automatisch ein GitHub-Problem protokolliert, damit es behoben werden kann.
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 Reihe von Build- und Release-Workflows, die kontinuierliche Integration, automatisierte Tests und Containerbereitstellungen umfassen.
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 Sicherheitsinformations- und Ereignisverwaltungslösung (SIEM) und eine Automatisierte Reaktionslösung (SOAR). Sie hilft Ihnen mit erweiterten KI- und Sicherheitsanalysen dabei, Bedrohungen im gesamten Unternehmen zu erkennen und auf sie zu reagieren.
Azure Policy hilft Teams beim Verwalten und Verhindern von IT-Problemen mithilfe von Richtliniendefinitionen, die Regeln für Cloudressourcen erzwingen können. Wenn Ihr Projekt z. B. in der Zeit ist, einen virtuellen Computer bereitzustellen, auf dem eine nicht erkannte SKU vorhanden ist, benachrichtigt Sie die Azure-Richtlinie über das Problem 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
Konzeptionell ähnelt devSecOps für IaC DevSecOps für Anwendungscode auf Azure Kubernetes Service (AKS). Sie benötigen jedoch einen anderen Satz von Pipelines und Tools, um die kontinuierliche Integration und kontinuierliche Lieferung 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. Sie können lokale Infrastrukturkonfigurationszustände wie Terraform-Zustände und Pläne für die testgesteuerte Entwicklung verwenden. Diese Konfigurationszustände emulieren die tatsächlichen Bereitstellungen. Sie können Integrationstests für IaC auf tatsächlichen Infrastrukturbereitstellungen ausführen, indem Sie die REST-API von Azure Resource Graph verwenden.
PaC ist eine weitere wichtige Methode zur Bereitstellung von Infrastruktur, die den Vorschriften und der Unternehmensführung entspricht. Sie können Ihren Pipelines PaC-Workflows hinzufügen, um Cloudgovernance zu automatisieren.
Die Sicherung der Infrastruktur frühzeitig in der Entwicklungsphase reduziert die Risiken falsch konfigurierter Infrastruktur, die Nach der Bereitstellung Punkte für Angriffe verfügbar macht. Sie können statische Codeanalysetools wie Synk oder Aqua Security tfsec integrieren, indem Sie den CodeQL von GitHub verwenden, um nach Sicherheitsrisiken im Infrastrukturcode zu suchen. Dieser Prozess ähnelt statischen Anwendungssicherheitstests.
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. Wenn Sie manuelle Konfigurationen benötigen, erhöhen Sie den Zugriff für den angegebenen Administrator, und entfernen Sie dann den erweiterten Zugriff, nachdem die Änderung vorgenommen wurde. Sie sollten Azure Monitor so konfigurieren, dass ein GitHub-Problem erhöht wird, damit Entwickler die Änderungen abgleichen können. Vermeiden Sie bei Bedarf manuelle Konfigurationen.
Es ist wichtig, die Cloudumgebung kontinuierlich auf Bedrohungen und Sicherheitsrisiken zu überwachen, um Sicherheitsvorfälle zu verhindern. Sie können Bedrohungsschutz und SIEM-Tools verwenden, um abnormalen Datenverkehr zu erkennen. Diese Tools benachrichtigen Sicherheitsadministratoren automatisch und lösen ein GitHub-Problem aus.
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 die Cloudinfrastruktur in einer neuen Azure-Zielzone bereitstellen, indem Sie DevSecOps für IaC verwenden, um die Sicherheit und Qualität von Bereitstellungen sicherzustellen. Außerdem möchten Sie alle Änderungen an der Infrastruktur nachverfolgen und überwachen.
Beitragende
Microsoft verwaltet diesen Artikel. Die folgenden Mitwirkenden haben diesen Artikel geschrieben.
Hauptautoren:
- Vito Chin | Senior Cloud Solution Architect
- Yee Shian Lee | Senior Cloud Solution Architect
Um nicht-öffentliche LinkedIn-Profile anzuzeigen, melden Sie sich bei LinkedIn an.
Nächste Schritte
- Überlegen Sie sich, welche der bevorzugten IaC-Tools für DevSecOps verwendet werden sollen, und stellen Sie sicher, dass sie über Erweiterungen zur Durchführung von IaC-Sicherheitsüberprüfungen verfügen.
- Ziehen Sie die bevorzugte IaC-Sprache oder entsprechende Vorlagen, Bicep oder Terraform in Azure in Betracht.
- Der GitHub-Leitfaden für Organisationen
- Verwenden von GitHub Actions zum Herstellen einer Verbindung mit Azure
- GitHub-Aktionen
- Was bedeuten wir mit Zero Trust Compliance?
- AzOps für Azure Resource Manager-Vorlagen
- Terraform Landungszonen Modul und Lösungen
- Einführung in IaC mit Bicep