Sie können eine Build-Konfiguration schreiben, die weist Cloud Build an, die Infrastruktur als Code (IaC) zu validieren die zu Ihrem Build gehören. 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 IaC-Validierung finden Sie unter Validieren Sie IaC anhand Ihrer Google Cloud-Organisation Richtlinien.
Hinweise
Führen Sie diese Aufgaben aus, um mit der IaC-Validierung zu beginnen: Cloud Build
Premium- oder Enterprise-Stufe von Security Command Center aktivieren
Prüfen Sie, ob die Premium- oder Enterprise-Stufe von Security Command Center aktiviert am Organisationsebene.
Durch das Aktivieren von Security Command Center werden die securityposture.googleapis.com
und
securitycentermanagement.googleapis.com
APIs
Berechtigungen einrichten
-
Prüfen Sie, ob Sie die folgenden Rollen für die Organisation haben:
- Security Posture Shift-Left Validator
- Log Writer
- Storage Writer
- Storage Reader
Auf Rollen prüfen
-
Öffnen Sie in der Google Cloud Console die Seite IAM.
IAM aufrufen - Wählen Sie die Organisation aus.
-
Suchen Sie in der Spalte Hauptkonto die Zeile mit Ihrer E-Mail-Adresse.
Ist Ihre E-Mail-Adresse nicht in dieser Spalte enthalten, haben Sie keine Rollen.
- Prüfen Sie in der Spalte Rolle der Zeile mit Ihrer E-Mail-Adresse, ob die Liste der Rollen die erforderlichen Rollen enthält.
Rollen zuweisen
-
Öffnen Sie in der Google Cloud Console die Seite IAM.
IAM aufrufen - Wählen Sie die Organisation aus.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie in das Feld Neue Hauptkonten Ihre E-Mail-Adresse ein.
- 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 Organisationsebene Aktivierungen.
Cloud Build API aufrufen
-
Cloud Build API aktivieren.
Richtlinien definieren
Definieren Sie Ihre Organisationsrichtlinien und Security Health Analytics-Detektoren. Um zu definieren, diese Richtlinien mithilfe eines Sicherheitsstatus zu verwenden, führen Sie die Aufgaben unter Erstellen und bereitstellen: Sicherheitsstatus.
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 um den Terraform-Zustand zu speichern,REPOSITORY_NAME
durch das Repository, das Ihr Terraform-Code.FOLDER
durch den Namen des Ordners zum Speichern des Terraform-Elements Artefakte hinzufügen.
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:
- 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.Gehen Sie wie folgt vor, um die Ergebnisse im SARIF-Format anzusehen:
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 auf der JSON-Datei mit Ergebnissen, 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 den Fehlerschwellenwert Kriterien, die bestimmen, 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.FAILURE_CRITERIA
gibt an, wie viele Probleme von jedem Schweregrad zulässig sind, und gibt außerdem Art und Weise, wie die Probleme zusammengefasst werden (entwederAND
oderOR
). Wenn Sie beispielsweise Der Build soll fehlschlagen lassen, wenn ein kritisches Problem oder eine hohe Schweregrad haben, setzen SieFAILURE_CRITERIA
aufCritical:1,High:1,Operator:OR
. Die Standardeinstellung 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.