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. 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 Validierung von IaC 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-Stufe aktivieren

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

Durch das Aktivieren von Security Command Center werden die securityposture.googleapis.com und securitycentermanagement.googleapis.com APIs

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.

      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 mithilfe einer Sicherheitskonfiguration definieren möchten, führen Sie die Aufgaben unter Sicherheitskonfiguration erstellen und bereitstellen aus.

    Terraform-Code erstellen

    Anweisungen finden Sie unter Erstellen Sie den Terraform-Code.

    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-Buckets, in dem der Terraform-Zustand gespeichert werden soll.
      • REPOSITORY_NAME durch das Repository, das Ihr Terraform-Code.
      • FOLDER durch den Namen des Ordners, in dem die Terraform-Artefakte gespeichert werden sollen.
    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/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. Validieren Sie die Ergebnisse. Führen Sie diesen Schritt mit der JSON-Ergebnisdatei 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, anhand derer bestimmt wird, 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. 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 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