Iac-Validierung in Cloud Build einbinden

Sie können eine Build-Konfiguration schreiben, mit der Cloud Build die Infrastructure as Code (IaC) validiert, 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 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 aktivieren

Prüfen Sie, ob das Security Command Center Premium- oder Enterprise-Tier auf Organisationsebene aktiviert ist.

Durch die Aktivierung von Security Command Center werden die APIs securityposture.googleapis.com und securitycentermanagement.googleapis.com aktiviert.

Berechtigungen einrichten

    Prüfen Sie, ob Sie die folgenden Rollen für die Organisation haben:

    • Security Posture Shift-Left Validator
    • Log-Autor
    • Storage-Autor
    • Storage-Leser

    Rollen prüfen

    1. Rufen Sie in der Google Cloud Console die Seite IAM auf.

      IAM aufrufen
    2. Wählen Sie die Organisation aus.
    3. 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.

    4. Prüfen Sie in allen Zeilen, in denen Sie angegeben oder enthalten sind, die Rolle Spalte , um zu sehen, ob die Liste der Rollen die erforderlichen Rollen enthält.

    Rollen zuweisen

    1. Rufen Sie in der Google Cloud Console die Seite IAM auf.

      IAM aufrufen
    2. Wählen Sie die Organisation aus.
    3. Klicken Sie auf „Zugriffsrechte erteilen.
    4. Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Das ist in der Regel die E‑Mail-Adresse eines Google-Kontos.

    5. Klicken Sie auf Rolle auswählen und suchen Sie nach der Rolle.
    6. Klicken Sie auf Add another role, wenn Sie weitere Rollen zuweisen möchten.
    7. 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

    Erforderliche Rollen zum Aktivieren von APIs

    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.

    API aktivieren

Richtlinien definieren

Definieren Sie Ihre Organisationsrichtlinien und Security Health Analytics-Detektoren. Wenn Sie diese Richtlinien mit einer Sicherheitskonfiguration definieren möchten, führen Sie die Aufgaben unter Konfiguration erstellen und bereitstellen aus.

Terraform-Code erstellen

Eine Anleitung finden Sie unter Terraform-Code erstellen.

IAC in Cloud Build validieren

Fügen Sie Ihrer Datei cloudbuild.yaml die folgenden Aufgaben hinzu:

  1. 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:

  2. Erstellen Sie eine Plandatei:

    - name: hashicorp/terraform
      args:
        - '-c'
        - |
          terraform plan -out tf.plan
      dir: FOLDER
      id: Terraform Plan
      entrypoint: sh
    
  3. 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
    
  4. 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.

  5. 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 file
    

    Ersetzen Sie SCAN_RESULT_FILE_BUCKET durch den Cloud Storage-Bucket, in den die Ergebnisdatei hochgeladen werden soll.

  6. So rufen Sie die Ergebnisse im SARIF-Format auf:

    1. 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
      
    2. Optional: 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
      
  7. 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, die bestimmen, wann der Build fehlschlägt. Die Kriterien für den Grenzwert basieren auf der Anzahl der Probleme mit kritischem, hohem, mittlerem und niedrigem Schweregrad, die beim IaC-Validierungsscan gefunden werden. FAILURE_CRITERIA gibt an, wie viele Probleme mit welchem Schweregrad zulässig sind, und auch, wie die Probleme zusammengefasst werden (entweder AND oder OR). Wenn der Build beispielsweise fehlschlagen soll, wenn ein kritisches oder ein Problem mit hohem Schweregrad gefunden wird, legen Sie FAILURE_CRITERIA auf Critical:1,High:1,Operator:OR fest. Der Standardwert ist Critical: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.

  8. Wenn der Build fehlschlägt, beheben Sie alle Verstöße in Ihrem Terraform-Code.

Nächste Schritte