Sie können eine Build-Konfiguration schreiben, mit der Cloud Build angewiesen wird, 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 IaC-Validierung finden Sie unter IaC anhand der Richtlinien Ihrer Organisation validieren. Google Cloud
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.
Wenn Sie Security Command Center aktivieren, werden die APIs securityposture.googleapis.com und securitycentermanagement.googleapis.com aktiviert.
Berechtigungen einrichten
- Security Posture Shift-Left Validator
- Log-Writer
- Storage Writer
- Storage-Leser
-
Rufen Sie in der Google Cloud Console die Seite IAM auf.
IAM aufrufen - Wählen Sie die Organisation aus.
-
Suchen Sie in der Spalte Hauptkonto nach allen Zeilen, in denen Sie oder eine Gruppe, zu der Sie gehören, angegeben sind. Fragen Sie Ihren Administrator, zu welchen Gruppen Sie gehören.
- Prüfen Sie in allen Zeilen, in denen Sie angegeben oder enthalten sind, die Spalte Rolle, um zu sehen, ob die Liste der Rollen die erforderlichen Rollen enthält.
-
Rufen Sie in der Google Cloud Console die Seite IAM auf.
IAM aufrufen - Wählen Sie die Organisation aus.
- Klicken Sie auf Zugriffsrechte erteilen.
-
Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Das ist in der Regel die E‑Mail-Adresse eines Google-Kontos.
- Klicken Sie auf Rolle auswählen und suchen Sie dann nach der Rolle.
- Klicken Sie auf Weitere Rolle hinzufügen, wenn Sie weitere Rollen zuweisen möchten.
- Klicken Sie auf Speichern.
Prüfen Sie, ob Sie die folgenden Rollen für die Organisation haben:
Rollen prüfen
Rollen zuweisen
Weitere Informationen zu Berechtigungen für die IaC-Validierung finden Sie unter IAM für Aktivierungen auf Organisationsebene.
Cloud Build API aufrufen
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen
Richtlinien definieren
Definieren Sie Ihre Organisationsrichtlinien und Security Health Analytics-Detektoren. Wenn Sie diese Richtlinien mit einem Sicherheitsstatus definieren möchten, führen Sie die Aufgaben unter Status 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: shErsetzen Sie Folgendes:
STATE_BUCKETdurch den Namen des Cloud Storage-Bucket, in dem der Terraform-Zustand gespeichert werden soll.REPOSITORY_NAMEdurch das Repository, in dem sich Ihr Terraform-Code befindet.FOLDERdurch den Namen des Ordners, in dem die Terraform-Artefakte gespeichert werden sollen.
So erstellen Sie eine Plan-Datei:
- name: hashicorp/terraform args: - '-c' - | terraform plan -out tf.plan dir: FOLDER id: Terraform Plan entrypoint: shKonvertieren Sie die Plan-Datei in das JSON-Format:
- name: hashicorp/terraform args: - '-c' - | terraform show -json tf.plan > plan.json dir: FOLDER id: Terraform Show entrypoint: shSo 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/bashErsetzen Sie
ORGANIZATION_IDdurch die ID Ihrer Organisation.Wenn Sie Cloud Storage verwenden, laden Sie die JSON-Ergebnisdatei in Cloud Storage hoch:
- name: gcr.io/cloud-builders/gcloud args: - storage - cp - IaCScanReport_$BUILD_ID.json - SCAN_RESULT_FILE_BUCKET dir: FOLDER id: Upload report fileErsetzen Sie
SCAN_RESULT_FILE_BUCKETdurch den Cloud Storage-Bucket, in den die Ergebnisdatei hochgeladen werden soll.So rufen Sie die Ergebnisse im SARIF-Format auf:
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/bashOptional: Laden Sie die Datei in Cloud Storage hoch:
- name: gcr.io/cloud-builders/gcloud args: - storage - cp - IaCScanReport_$BUILD_ID.sarif.json - SCAN_RESULT_FILE_BUCKET dir: FOLDER id: Upload report file
Überprüfen Sie die Ergebnisse. Führen Sie diesen Schritt für die JSON-Datei mit den Ergebnissen 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/bashErsetzen Sie
FAILURE_CRITERIAdurch die Kriterien für den Fehlergrenzwert, die bestimmen, wann der Build fehlschlägt. Die Schwellenkriterien basieren auf der Anzahl der Probleme mit kritischem, hohem, mittlerem und niedrigem Schweregrad, die beim IaC-Validierungsscan gefunden werden. MitFAILURE_CRITERIAwird angegeben, wie viele Probleme mit dem jeweiligen Schweregrad zulässig sind und wie die Probleme zusammengefasst werden (entwederANDoderOR). Wenn der Build beispielsweise fehlschlagen soll, wenn ein kritisches oder ein Problem mit hohem Schweregrad auftritt, legen SieFAILURE_CRITERIAaufCritical:1,High:1,Operator:ORfest. Der Standardwert istCritical:1,High:1,Medium:1,Low:1,Operator:OR. Das bedeutet, dass der Build fehlschlagen muss, wenn beim IaC-Validierungsscan ein Verstoß mit einem beliebigen Schweregrad gefunden wird.Wenn der Build fehlschlägt, beheben Sie alle Verstöße in Ihrem Terraform-Code.
Nächste Schritte
- IaC-Validierungsbericht in Cloud Storage ansehen
- IaC-Validierungsskripts in GitHub ansehen
- Sehen Sie sich das
cloud.yaml-Beispiel an.