Puoi scrivere una configurazione di compilazione che indica a Cloud Build di convalidare l'Infrastructure as Code (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 esistenti e Rilevatori di Security Health Analytics applicati alle tue risorse Google Cloud.
Per ulteriori informazioni sulla convalida IaC, consulta Convalidare il codice IaC in base alla dell'organizzazione Google Cloud .
Prima di iniziare
Completa queste attività per iniziare a utilizzare la convalida IaC utilizzando in Cloud Build.
Attiva il livello Premium o Enterprise di Security Command Center
Verifica che il livello Premium o Enterprise di Security Command Center viene attivato a livello di organizzazione.
L'attivazione di Security Command Center abilita securityposture.googleapis.com
e
securitycentermanagement.googleapis.com
API.
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 colunn 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 l'accesso.
-
Nel campo Nuove entità, inserisci l'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 aggiungiamo ogni altro ruolo.
- Fai clic su Salva.
Per ulteriori informazioni sulle autorizzazioni di convalida IaC, consulta IAM per livello di organizzazione attivazioni.
Abilita l'API Cloud Build
-
Attiva l'API Cloud Build.
Definisci i criteri
Definisci i criteri dell'organizzazione e i rilevatori di Security Health Analytics. Per definire utilizzando una strategia di sicurezza, completa le attività in Creare eseguire il deployment della 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
: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 per archiviare lo stato di TerraformREPOSITORY_NAME
con il repository che ospita i tuoi il codice Terraform.FOLDER
con il nome della cartella in cui salvare il file Terraform gli artefatti.
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 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 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 nella 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 la soglia di errore che determinano quando la build non riesce. Il criterio di soglia è in base al numero di problemi di gravità critica, alta, media e bassa che rilevati dalla scansione di convalida IaC.FAILURE_CRITERIA
specifica quanti problemi di ogni gravità sono ammessi e specifica inoltre la modalità di aggregazione dei problemi (AND
oOR
). Ad esempio, se vuoi che la build non vada a buon fine se rileva un problema critico o un problema di gravità, impostaFAILURE_CRITERIA
suCritical:1,High:1,Operator:OR
, L'impostazione predefinita èCritical:1,High:1,Medium:1,Low:1,Operator:OR
, il che significa che se l'IaC la scansione di convalida rileva una violazione di qualsiasi gravità; la build deve avere esito negativo.Se la build non va a buon fine, risolvi le eventuali violazioni all'interno del codice Terraform.
Passaggi successivi
- Visualizza il report di convalida IaC in Cloud Storage.
- Esamina gli script di convalida IaC in GitHub.
- Esamina l'esempio di
cloud.yaml
.