IaC-Validierung in Cloud Build einbinden

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

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

    1. Öffnen Sie in der Google Cloud Console die Seite IAM.

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

    4. 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

    1. Öffnen Sie in der Google Cloud Console die Seite IAM.

      IAM aufrufen
    2. Wählen Sie die Organisation aus.
    3. Klicken Sie auf Zugriff erlauben.
    4. Geben Sie in das Feld Neue Hauptkonten Ihre E-Mail-Adresse ein.
    5. Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
    6. Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen und fügen Sie weitere Rollen hinzu.
    7. 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

  1. Cloud Build API aktivieren.

    Aktivieren Sie die API

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:

  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:

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

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

  6. Gehen Sie wie folgt vor, um die Ergebnisse im SARIF-Format anzusehen:

    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/gsutil
        args:
          - cp
          - IaCScanReport_$BUILD_ID.sarif.json
          - SCAN_RESULT_FILE_BUCKET
        dir: FOLDER
        id: Upload report file
      
  7. 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 (entweder AND oder OR). Wenn Sie beispielsweise Der Build soll fehlschlagen lassen, wenn ein kritisches Problem oder eine hohe Schweregrad haben, setzen Sie FAILURE_CRITERIA auf Critical:1,High:1,Operator:OR. Die Standardeinstellung ist Critical: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.

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

Nächste Schritte