Pode escrever uma configuração de compilação que instrui o Cloud Build a validar a infraestrutura como código (IaC) que faz parte da sua compilação. A validação da IaC permite-lhe determinar se as suas definições de recursos do Terraform violam as políticas organizacionais existentes e os detetores do Security Health Analytics que são aplicados aos seus Google Cloud recursos.
Para mais informações sobre a validação de IaC, consulte o artigo Valide a sua IaC em função das políticas da sua Google Cloud organização.
Antes de começar
Conclua estas tarefas para começar a usar a validação de IaC com o Cloud Build.
Ative o nível Premium ou o nível Enterprise do Security Command Center
Verifique se o nível Premium ou nível Enterprise do Security Command Center está ativado ao nível da organização.
A ativação do Security Command Center ativa as APIs securityposture.googleapis.com
e securitycentermanagement.googleapis.com
.
Configure as autorizações
-
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.
Aceder ao IAM - Selecione a organização.
- Clique em Conceder acesso.
-
No campo Novos responsáveis, introduza o identificador do utilizador. Normalmente, este é o endereço de email de uma Conta Google.
- Na lista Selecionar uma função, selecione uma função.
- Para conceder funções adicionais, clique em Adicionar outra função e adicione cada função adicional.
- Clique em Guardar.
Para mais informações sobre as autorizações de validação de IaC, consulte o artigo IAM para ativações ao nível da organização.
Ative a API Cloud Build
-
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
Defina as suas políticas
Defina as suas políticas organizacionais e os detetores do Security Health Analytics. Para definir estas políticas através de uma postura de segurança, conclua as tarefas em Crie e implemente uma postura.
Crie o seu código Terraform
Para ver instruções, consulte o artigo Crie o seu código Terraform.
Valide a IAC no Cloud Build
Adicione as seguintes tarefas ao ficheiro
cloudbuild.yaml
:Inicialize o 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
Substitua o seguinte:
STATE_BUCKET
com o nome do contentor do Cloud Storage para armazenar o estado do TerraformREPOSITORY_NAME
com o repositório que aloja o seu código Terraform.FOLDER
com o nome da pasta onde guardar os artefactos do Terraform.
Crie um ficheiro de plano:
- name: hashicorp/terraform args: - '-c' - | terraform plan -out tf.plan dir: FOLDER id: Terraform Plan entrypoint: sh
Converta o ficheiro de plano para o formato JSON:
- name: hashicorp/terraform args: - '-c' - | terraform show -json tf.plan > plan.json dir: FOLDER id: Terraform Show entrypoint: sh
Crie o relatório de validação de 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
Substitua
ORGANIZATION_ID
pelo ID da sua organização.Se estiver a usar o Cloud Storage, carregue o ficheiro de resultados JSON para o 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
Substitua
SCAN_RESULT_FILE_BUCKET
pelo contentor do Cloud Storage para carregar o ficheiro de resultados.Para ver os resultados no formato SARIF, conclua o seguinte:
Converta o ficheiro:
- 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
Opcional: carregue o ficheiro para o 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
Valide os resultados. Conclua este passo no ficheiro JSON de resultados que não converteu para o 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
Substitua
FAILURE_CRITERIA
pelos critérios de limite de falhas que determinam quando a compilação falha. Os critérios de limite baseiam-se no número de problemas de gravidade crítica, elevada, média e baixa que a análise de validação de IaC encontra.FAILURE_CRITERIA
especifica quantos problemas de cada gravidade são permitidos e também especifica como os problemas são agregados (AND
ouOR
). Por exemplo, se quiser que a compilação falhe se encontrar um problema crítico ou um problema de gravidade alta, defina oFAILURE_CRITERIA
comoCritical:1,High:1,Operator:OR
. A predefinição éCritical:1,High:1,Medium:1,Low:1,Operator:OR
, o que significa que, se a análise de validação de IaC encontrar uma violação de qualquer gravidade, a compilação tem de falhar.Se a compilação falhar, resolva as violações no código do Terraform.
O que se segue?
- Veja o relatório de validação de IaC no Cloud Storage.
- Reveja os scripts de validação de IaC no GitHub.
- Reveja o
cloud.yaml
exemplo.