IaC-Validierung in Cloud Build einbinden

Sie können eine Build-Konfiguration schreiben, die Cloud Build anweist, 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 Validierung von IaC 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 colunn 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.

      IAM aufrufen
    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 mithilfe eines Sicherheitsstatus definieren möchten, führen Sie die Aufgaben unter Sicherheitsstatus 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 ersetzen, in dem Ihr Terraform-Code gehostet wird.
      • FOLDER durch den Namen des Ordners, in dem die Terraform-Artefakte gespeichert werden sollen.
    2. So 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. So 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/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. So 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. 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, anhand derer bestimmt wird, wann der Build fehlschlägt. Die Grenzwertkriterien basieren auf der Anzahl der Probleme mit kritischer, hoher, mittlerer und niedriger Schwere, die bei der IaC-Validierungsüberprüfung auftreten. Mit FAILURE_CRITERIA wird angegeben, wie viele Probleme mit welchem Schweregrad zulässig sind. Außerdem wird festgelegt, wie die Probleme zusammengefasst werden (entweder AND oder OR). Wenn der Build beispielsweise fehlschlagen soll, wenn ein kritisches Problem oder ein Problem mit hoher 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 bei der IaC-Validierungsüberprüfung ein Verstoß festgestellt wird, unabhängig von der Schwere.

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

    Nächste Schritte