Puoi scrivere una configurazione di compilazione che indica a Cloud Build di convalidare l'infrastruttura come codice (IaC) che fa parte della tua compilazione. La convalida di IaC ti consente di determinare se le tue definizioni delle risorse Terraform violano le policy dell'organizzazione e i rilevatori di Security Health Analytics esistenti applicati alle tue Google Cloud risorse.
Per saperne di più sulla convalida di IaC, consulta Convalidare IaC in base alle Google Cloud policy dell'organizzazione.
Prima di iniziare
Completa questi passaggi per iniziare a utilizzare la convalida di 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
- Security Posture Shift-Left Validator
- Writer log
- Writer Storage
- Lettore Storage
-
Nella Google Cloud console vai alla pagina IAM.
Vai a IAM - Seleziona l'organizzazione.
-
Nella colonna Entità, trova tutte le righe che identificano te o un gruppo di cui fai parte. Per scoprire i gruppi di cui fai parte, contatta l' amministratore.
- 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.
-
Nella Google Cloud console vai alla pagina IAM.
Vai a IAM - Seleziona l'organizzazione.
- Fai clic su Concedi l'accesso.
-
Nel campo Nuove entità, inserisci il tuo identificatore dell'utente. In genere si tratta dell'indirizzo email di un Account Google.
- Fai clic su Seleziona un ruolo, quindi cerca il ruolo.
- Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo aggiuntivo.
- Fai clic su Salva.
Assicurati di avere il seguente ruolo o i seguenti ruoli nell'organizzazione:
Controlla i ruoli
Concedi i ruoli
Per saperne di più sulle autorizzazioni di convalida di 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 del ruolo IAM Amministratore di Service Usage (roles/serviceusage.serviceUsageAdmin), che
contiene l'autorizzazione serviceusage.services.enable. Scopri come concedere
i ruoli.
Definisci le policy
Definisci le policy dell'organizzazione e i rilevatori di Security Health Analytics. Per definire queste policy utilizzando una postura di sicurezza, completa le attività descritte in Creare ed eseguire il deployment di una postura.
Crea il codice Terraform
Per istruzioni, consulta Creare il codice Terraform.
Convalida IaC in Cloud Build
Aggiungi le seguenti attività al file cloudbuild.yaml:
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: shSostituisci quanto segue:
STATE_BUCKETcon il nome del bucket Cloud Storage in cui archiviare lo stato di TerraformREPOSITORY_NAMEcon il repository che ospita il codice Terraform.FOLDERcon il nome della cartella in cui salvare gli artefatti Terraform.
Crea un file di piano:
- name: hashicorp/terraform args: - '-c' - | terraform plan -out tf.plan dir: FOLDER id: Terraform Plan entrypoint: shConverti il file di piano in formato JSON:
- name: hashicorp/terraform args: - '-c' - | terraform show -json tf.plan > plan.json dir: FOLDER id: Terraform Show entrypoint: shCrea il report di convalida di 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/bashSostituisci
ORGANIZATION_IDcon l'ID della tua organizzazione.Se utilizzi Cloud Storage, carica il file dei risultati JSON 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 fileSostituisci
SCAN_RESULT_FILE_BUCKETcon il bucket Cloud Storage in cui caricare il file dei risultati.Per visualizzare i risultati in formato SARIF, completa i seguenti passaggi:
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(Facoltativo) Carica il file in 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
Verifica i risultati. Completa questo passaggio nel 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/bashSostituisci
FAILURE_CRITERIAcon i criteri di soglia di errore che determinano quando la compilazione non riesce. I criteri di soglia si basano sul numero di problemi di gravità critica, elevata, media e bassa rilevati dalla scansione di convalida di IaC.FAILURE_CRITERIAspecifica il numero di problemi di ogni gravità consentiti e specifica anche la modalità di aggregazione dei problemi (ANDoOR). Ad esempio, se vuoi che la compilazione non riesca se rileva un problema critico o un problema di gravità elevata, impostaFAILURE_CRITERIAsuCritical: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 di IaC rileva una violazione di qualsiasi gravità, la compilazione deve non riuscire.Se la compilazione non riesce, risolvi eventuali violazioni nel codice Terraform.
Passaggi successivi
- Visualizza il report di convalida di IaC in Cloud Storage.
- Esamina gli script di convalida di IaC in GitHub.
- Esamina l'esempio
cloud.yamlsample.