Puoi scrivere una configurazione di compilazione che instruisca Cloud Build a convalidare l'infrastruttura come codice (IaC) che fa parte della tua build. La convalida dell'IaC ti consente di determinare se le definizioni delle risorse Terraform violano i criteri dell'organizzazione esistenti e i rilevatori di Security Health Analytics applicati alle risorse Google Cloud .
Per ulteriori informazioni sulla convalida dell'IaC, consulta Convalida l'IaC in base ai criteri della tua 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
-
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
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the organization.
-
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.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Vai a IAM - Seleziona l'organizzazione.
- Fai clic su Concedi accesso.
-
Nel campo Nuove entità, inserisci il tuo identificatore utente. In genere si tratta dell'indirizzo email di un Account Google.
- Nell'elenco Seleziona un ruolo, seleziona un ruolo.
- Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo aggiuntivo.
- 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
-
Enable the Cloud Build API.
Definire i criteri
Definisci i criteri dell'organizzazione e i rivelatori di Security Health Analytics. Per definire questi criteri utilizzando una postura di sicurezza, completa le attività descritte in Creare e implementare una postura.
Crea il codice Terraform
Per le istruzioni, consulta Creare il codice Terraform.
Convalida l'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: sh
Sostituisci quanto segue:
STATE_BUCKET
con il nome del bucket Cloud Storage in cui archiviare lo stato di TerraformREPOSITORY_NAME
con il repository che ospita il tuo codice Terraform.FOLDER
con il nome della cartella in cui salvare gli elementi Terraform.
Crea un file del piano:
- name: hashicorp/terraform args: - '-c' - | terraform plan -out tf.plan dir: FOLDER id: Terraform Plan entrypoint: sh
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
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.Se utilizzi Cloud Storage, carica il file dei risultati JSON 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.Per visualizzare i risultati in formato SARIF:
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 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
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 determinano quando la compilazione non va a buon fine. I criteri di soglia si basano sul numero di problemi critici, di alta, media e bassa gravità rilevati dalla verifica IaC.FAILURE_CRITERIA
specifica il numero di problemi di ciascuna gravità consentiti e anche come vengono aggregati i problemi (AND
oOR
). Ad esempio, se vuoi che la compilazione non vada a buon fine se viene rilevato un problema critico o un problema di gravità elevata, impostaFAILURE_CRITERIA
suCritical:1,High:1,Operator:OR
. Il valore predefinito èCritical:1,High:1,Medium:1,Low:1,Operator:OR
, il che significa che se la convalida IaC rileva una violazione di qualsiasi gravità, la compilazione deve non riuscire.Se la compilazione non va a buon fine, risolvi eventuali violazioni nel codice Terraform.
Passaggi successivi
- Visualizza il report di convalida IaC in Cloud Storage.
- Esamina gli script di convalida IaC in GitHub.
- Esamina l'esempio
cloud.yaml
.