IaC-Validierung in Cloud Build einbinden

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

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

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the organization.
    3. 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.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Zu IAM
    2. Wählen Sie die Organisation aus.
    3. Klicken Sie auf Zugriff erlauben.
    4. Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Dies ist in der Regel die E-Mail-Adresse eines Google-Kontos.

    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 Aktivierungen auf Organisationsebene.

    Cloud Build API aufrufen

    1. Enable the Cloud Build API.

      Enable the API

    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:

    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, in dem der Terraform-Zustand gespeichert werden soll.
      • REPOSITORY_NAME durch das Repository, in dem sich Ihr Terraform-Code befindet.
      • FOLDER durch den Namen des Ordners, in dem die Terraform-Artefakte gespeichert werden sollen.
    2. Erstellen Sie eine Plan-Datei:

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

      - 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/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. 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/gsutil
          args:
            - cp
            - IaCScanReport_$BUILD_ID.sarif.json
            - SCAN_RESULT_FILE_BUCKET
          dir: FOLDER
          id: Upload report file
        
    7. Ergebnisse prüfen 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/bash
      

      Ersetzen Sie FAILURE_CRITERIA durch 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. Mit FAILURE_CRITERIA wird angegeben, wie viele Probleme mit dem jeweiligen Schweregrad zulässig sind und wie die Probleme zusammengefasst werden (entweder AND oder OR). Wenn der Build beispielsweise fehlschlagen soll, wenn ein kritisches oder ein Problem mit hohem Schweregrad auftritt, 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 erkannt wird.

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

    Nächste Schritte