Integra la convalida dell'IaC con Cloud Build

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

Per saperne di più sulla convalida dell'IaC, consulta Convalidare l'IaC in base ai criteri della tua organizzazione. Google Cloud

Prima di iniziare

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

Attiva il livello Premium o Enterprise di Security Command Center

Verifica che il livello Security Command Center Premium o Enterprise 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

    Assicurati di disporre dei seguenti ruoli nell'organizzazione:

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

    Controlla i ruoli

    1. Nella console Google Cloud vai alla pagina IAM.

      Vai a IAM
    2. Seleziona l'organizzazione.
    3. Nella colonna Entità, trova tutte le righe che identificano te o un gruppo di cui fai parte. Per scoprire a quali gruppi appartieni, contatta il tuo amministratore.

    4. Per tutte le righe che ti specificano o ti includono, controlla la colonna Ruolo per verificare se l'elenco dei ruoli include i ruoli 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 identificatore dell'utente. In genere si tratta dell'indirizzo email di un Account Google.

    5. Fai clic su Seleziona un ruolo, quindi cerca il ruolo.
    6. Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo successivo.
    7. Fai clic su Salva.

Per saperne di più sulle autorizzazioni di convalida dell'IaC, consulta IAM per le attivazioni a livello di organizzazione.

Abilita l'API Cloud Build

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    Abilitare l'API

Definisci le tue policy

Definisci le norme dell'organizzazione e i detector di Security Health Analytics. Per definire queste policy utilizzando una postura di sicurezza, completa le attività descritte in Creare e implementare una postura.

Crea il codice Terraform

Per istruzioni, vedi Creare il codice Terraform.

Convalidare l'infrastruttura come codice in Cloud Build

Aggiungi le seguenti attività al 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 tuo 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/gcloud
      args:
        - storage
        - 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:

    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/gcloud
        args:
          - storage
          - 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 di soglia di errore che determinano quando la build non va a buon fine. I criteri di soglia si basano sul numero di problemi di gravità critica, alta, media e bassa rilevati dalla scansione di convalida dell'infrastruttura come codice. FAILURE_CRITERIA specifica il numero di problemi di ogni gravità consentiti e anche come vengono aggregati i problemi (AND o OR). Ad esempio, se vuoi che la build non vada a buon fine se rileva 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 non riuscire.

  8. Se la build non va a buon fine, risolvi eventuali violazioni nel codice Terraform.

Passaggi successivi