Integra la convalida IaC con Cloud Build

Puoi scrivere una configurazione della build che indica a Cloud Build di convalidare l'infrastruttura come codice (IaC) che fa parte della tua build. La convalida di IaC ti consente di determinare se le definizioni delle risorse Terraform violano i criteri dell'organizzazione e i rilevatori di Security Health Analytics esistenti applicati alle tue risorse Google Cloud.

Per ulteriori informazioni sulla convalida IaC, consulta Convalidare il valore IaC in base ai criteri dell'organizzazione Google Cloud.

Prima di iniziare

Completa queste attività per iniziare a utilizzare la convalida IaC con Cloud Build.

Attiva il livello Premium o Enterprise di Security Command Center

Verifica che il livello Premium o Enterprise di Security Command Center sia attivato a livello di organizzazione.

L'attivazione di Security Command Center abilita le API securityposture.googleapis.com e securitycentermanagement.googleapis.com.

Configurare le autorizzazioni

  1. Assicurati di disporre dei seguenti ruoli nell'organizzazione:

    • Security Posture Shift-Left Validator
    • Log Writer
    • Storage Writer
    • Storage Reader

    Verifica i ruoli

    1. Nella console Google Cloud, vai alla pagina IAM.

      Vai a IAM
    2. Seleziona l'organizzazione.
    3. Nella colonna Entità, individua la riga contenente il tuo indirizzo email.

      Se il tuo indirizzo email non è in questa colonna, significa che non disponi di alcun ruolo.

    4. Nella colonna Ruolo per la riga contenente il tuo indirizzo email, controlla se l'elenco dei ruoli include quelli richiesti.

    Concedi i ruoli

    1. Nella console Google Cloud, vai alla pagina IAM.

      Vai a IAM
    2. Seleziona l'organizzazione.
    3. Fai clic su Concedi l'accesso.
    4. Nel campo Nuove entità, inserisci il tuo indirizzo email.
    5. Nell'elenco Seleziona un ruolo, scegli un ruolo.
    6. Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ciascun ruolo aggiuntivo.
    7. Fai clic su Salva.

Per ulteriori informazioni sulle autorizzazioni di convalida IaC, consulta IAM per le attivazioni a livello di organizzazione.

Abilita l'API Cloud Build

  1. Attiva l'API Cloud Build.

    Abilita l'API

Definisci i criteri

Definisci i criteri dell'organizzazione e i rilevatori di Security Health Analytics. Per definire questi criteri utilizzando una postura di sicurezza, completa le attività in Creare ed eseguire il deployment di una postura.

Crea il tuo codice Terraform

Per le istruzioni, vedi Creare il codice Terraform.

Convalida il tuo IAC in Cloud Build

Aggiungi le seguenti attività al tuo file cloudbuild.yaml:

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

    Sostituisci quanto segue:

    • STATE_BUCKET con il nome del bucket Cloud Storage in cui archiviare lo stato di Terraform
    • REPOSITORY_NAME con il repository che ospita il codice Terraform.
    • FOLDER con il nome della cartella in cui salvare gli artefatti Terraform.
  2. Crea un file del piano:

    - name: hashicorp/terraform
      args:
        - '-c'
        - |
          terraform plan -out tf.plan
      dir: FOLDER
      id: Terraform Plan
      entrypoint: sh
    
  3. Converti il file del piano in formato JSON:

    - name: hashicorp/terraform
      args:
        - '-c'
        - |
          terraform show -json tf.plan > plan.json
      dir: FOLDER
      id: Terraform Show
      entrypoint: sh
    
  4. Crea il report di convalida IaC:

    - 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
    

    Sostituisci ORGANIZATION_ID con l'ID della tua organizzazione.

  5. Se utilizzi Cloud Storage, carica il file JSON dei risultati 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
    

    Sostituisci SCAN_RESULT_FILE_BUCKET con il bucket Cloud Storage in cui caricare il file dei risultati.

  6. Per visualizzare i risultati in formato SARIF, completa i seguenti passaggi:

    1. Converti il file:

      - 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. (Facoltativo) Carica il file su Cloud Storage:

      - name: gcr.io/cloud-builders/gsutil
        args:
          - cp
          - IaCScanReport_$BUILD_ID.sarif.json
          - SCAN_RESULT_FILE_BUCKET
        dir: FOLDER
        id: Upload report file
      
  7. Convalida i risultati. Completa questo passaggio sul file JSON dei risultati che non hai convertito in formato SARIF:

    - 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
    

    Sostituisci FAILURE_CRITERIA con i criteri della soglia di errore che determina quando la build non riesce. I criteri di soglia si basano sul numero di problemi critici, di alta, media e bassa gravità riscontrati dalla scansione di convalida IaC. FAILURE_CRITERIA specifica quanti problemi di ogni gravità sono consentiti e specifica anche in che modo vengono aggregati (AND o OR). Ad esempio, se vuoi che la build non vada a buon fine se si verifica un problema critico o un problema di gravità elevata, imposta FAILURE_CRITERIA su Critical:1,High:1,Operator:OR. Il valore predefinito è Critical:1,High:1,Medium:1,Low:1,Operator:OR, il che significa che se la scansione di convalida IaC rileva una violazione di qualsiasi gravità, la build deve avere esito negativo.

  8. Se la build non va a buon fine, risolvi le eventuali violazioni all'interno del codice Terraform.

Passaggi successivi