Sie können eine Build-Konfiguration schreiben, die Cloud Build anweist, die Infrastruktur als Code (IaC) zu validieren, die Teil Ihres Builds ist. Mit der Validierung von IaC können Sie feststellen, Terraform-Ressourcendefinitionen verstoßen gegen die bestehenden Organisationsrichtlinien und Security Health Analytics-Detektoren, die auf Ihre Google Cloud-Ressourcen angewendet werden.
Weitere Informationen zur Validierung von IaC finden Sie unter IaC anhand der Richtlinien Ihrer Google Cloud-Organisation validieren.
Hinweis
Führen Sie diese Aufgaben aus, um mit der IaC-Validierung mit Cloud Build zu beginnen.
Security Command Center Premium- oder Enterprise-Stufe aktivieren
Prüfen Sie, ob die Security Command Center Premium- oder Enterprise-Stufe auf Organisationsebene aktiviert ist.
Durch das Aktivieren von Security Command Center werden die securityposture.googleapis.com
und
securitycentermanagement.googleapis.com
APIs
Berechtigungen einrichten
-
Make sure that you have the following role or roles on the organization:
- Security Posture Shift-Left Validator
- Log Writer
- Storage Writer
- Storage Reader
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the organization.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Zu IAM - Wählen Sie die Organisation aus.
- Klicken Sie auf Zugriff erlauben.
-
Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Dies ist in der Regel die E-Mail-Adresse eines Google-Kontos.
- Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
- Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen und fügen Sie weitere Rollen hinzu.
- Klicken Sie auf Speichern.
Weitere Informationen zu Berechtigungen für die IaC-Validierung finden Sie unter IAM für Aktivierungen auf Organisationsebene
Cloud Build API aufrufen
-
Enable the Cloud Build API.
Richtlinien definieren
Definieren Sie Ihre Organisationsrichtlinien und Security Health Analytics-Detektoren. Wenn Sie diese Richtlinien mithilfe einer Sicherheitskonfiguration definieren möchten, führen Sie die Aufgaben unter Sicherheitskonfiguration erstellen und bereitstellen aus.
Terraform-Code erstellen
Anweisungen finden Sie unter Erstellen Sie den Terraform-Code.
IAC in Cloud Build validieren
Fügen Sie der Datei
cloudbuild.yaml
die folgenden Aufgaben hinzu:Initialisieren Sie Terraform:
- name: hashicorp/terraform args: - '-c' - | terraform init \ -backend-config="bucket=STATE_BUCKET" \ -backend-config="prefix=REPOSITORY_NAME" \ dir: FOLDER id: Terraform Init entrypoint: sh
Ersetzen Sie Folgendes:
STATE_BUCKET
durch den Namen des Cloud Storage-Buckets, in dem der Terraform-Zustand gespeichert werden soll.REPOSITORY_NAME
durch das Repository, das Ihr Terraform-Code.FOLDER
durch den Namen des Ordners, in dem die Terraform-Artefakte gespeichert werden sollen.
Erstellen Sie eine Plandatei:
- name: hashicorp/terraform args: - '-c' - | terraform plan -out tf.plan dir: FOLDER id: Terraform Plan entrypoint: sh
Konvertieren Sie die Plandatei in das JSON-Format:
- name: hashicorp/terraform args: - '-c' - | terraform show -json tf.plan > plan.json dir: FOLDER id: Terraform Show entrypoint: sh
Erstellen Sie den IaC-Validierungsbericht:
- name: gcr.io/cloud-builders/gcloud args: - '-c' - | gcloud scc iac-validation-reports create \ organizations/ORGANIZATION_ID/locations/global --tf-plan-file=plan.json \ --format="json(response.iacValidationReport)" > IaCScanReport_$BUILD_ID.json dir: FOLDER id: Run IaC scan entrypoint: /bin/bash
Ersetzen Sie
ORGANIZATION_ID
durch die ID Ihrer Organisation.Wenn Sie Cloud Storage verwenden, laden Sie die JSON-Ergebnisdatei in Cloud Storage hoch:
- name: gcr.io/cloud-builders/gsutil args: - cp - IaCScanReport_$BUILD_ID.json - SCAN_RESULT_FILE_BUCKET dir: FOLDER id: Upload report file
Ersetzen Sie
SCAN_RESULT_FILE_BUCKET
durch den Cloud Storage-Bucket, in den die Ergebnisdatei hochgeladen werden soll.So rufen Sie die Ergebnisse im SARIF-Format auf:
So konvertieren Sie die Datei:
- name: golang args: - '-c' - | go run github.com/google/gcp-scc-iac-validation-utils/SARIFConverter@latest \ --inputFilePath=IaCScanReport_$BUILD_ID.json --outputFilePath=IaCScanReport_$BUILD_ID.sarif.json dir: FOLDER id: Convert to SARIF format entrypoint: /bin/bash
Optional: Laden Sie die Datei in Cloud Storage hoch:
- name: gcr.io/cloud-builders/gsutil args: - cp - IaCScanReport_$BUILD_ID.sarif.json - SCAN_RESULT_FILE_BUCKET dir: FOLDER id: Upload report file
Validieren Sie die Ergebnisse. Führen Sie diesen Schritt mit der JSON-Ergebnisdatei aus, die Sie noch nicht in das SARIF-Format konvertiert haben:
- name: golang args: - '-c' - | go run github.com/google/gcp-scc-iac-validation-utils/ReportValidator@latest \ --inputFilePath=IaCScanReport_$BUILD_ID.json --failure_expression=FAILURE_CRITERIA dir: FOLDER id: Validate results entrypoint: /bin/bash
Ersetzen Sie
FAILURE_CRITERIA
durch die Kriterien für den Fehlergrenzwert, anhand derer bestimmt wird, wann der Build fehlschlägt. Das Schwellenwertkriterium ist basierend auf der Anzahl kritischer, hoher, mittlerer und niedriger Schwere die während des IaC-Validierungsscans auftreten. MitFAILURE_CRITERIA
wird angegeben, wie viele Probleme mit welchem Schweregrad zulässig sind. Außerdem wird festgelegt, wie die Probleme zusammengefasst werden (entwederAND
oderOR
). Wenn der Build beispielsweise fehlschlagen soll, wenn ein kritisches Problem oder ein Problem mit hoher Schweregrad auftritt, legen SieFAILURE_CRITERIA
aufCritical:1,High:1,Operator:OR
fest. Der Standardwert istCritical:1,High:1,Medium:1,Low:1,Operator:OR
bedeutet, dass, wenn der IaC bei einem Verstoß eines beliebigen Schweregrads festgestellt wird, muss der Build fehlschlagen.Wenn der Build fehlschlägt, beheben Sie alle Verstöße im Terraform-Code.
Nächste Schritte
- IaC-Validierungsbericht in Cloud Storage
- Sehen Sie sich die IaC-Validierungsskripts in GitHub an.
- Sehen Sie sich das
cloud.yaml
-Beispiel an.