Sie können eine Build-Konfiguration schreiben, die Cloud Build anweist, die Infrastruktur als Code (IaC) zu validieren, die Teil Ihres Builds ist. Durch die Validierung von IaC können Sie feststellen, ob Ihre Terraform-Ressourcendefinitionen gegen die vorhandenen Organisationsrichtlinien und Security Health Analytics-Detektoren verstoßen, 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.
Hinweise
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.
Wenn Sie Security Command Center aktivieren, werden die APIs securityposture.googleapis.com
und securitycentermanagement.googleapis.com
aktiviert.
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.
IAM aufrufen - 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 eines Sicherheitsstatus definieren möchten, führen Sie die Aufgaben unter Sicherheitsstatus erstellen und bereitstellen aus.
Terraform-Code erstellen
Eine Anleitung finden Sie unter Terraform-Code erstellen.
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-Bucket, in dem der Terraform-Zustand gespeichert werden soll.REPOSITORY_NAME
durch das Repository ersetzen, in dem Ihr Terraform-Code gehostet wird.FOLDER
durch den Namen des Ordners, in dem die Terraform-Artefakte gespeichert werden sollen.
So 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
So 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
Prüfen Sie die Ergebnisse. Führen Sie diesen Schritt für die JSON-Ergebnisdatei aus, die Sie 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. Die Grenzwertkriterien basieren auf der Anzahl der Probleme mit kritischer, hoher, mittlerer und niedriger Schwere, die bei der IaC-Validierungsüberprüfung 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
. Das bedeutet, dass der Build fehlschlagen muss, wenn bei der IaC-Validierungsüberprüfung ein Verstoß festgestellt wird, unabhängig von der Schwere.Wenn der Build fehlschlägt, beheben Sie alle Verstöße in Ihrem Terraform-Code.
Nächste Schritte
- IaC-Validierungsbericht in Cloud Storage ansehen
- Sehen Sie sich die IaC-Bestätigungsscripts auf GitHub an.
- Sehen Sie sich das
cloud.yaml
-Beispiel an.