É possível escrever uma configuração de build que instrua o Cloud Build a validar a infraestrutura como código (IaC, na sigla em inglês) que faz parte do build. A validação do IaC permite determinar se as definições de recursos do Terraform violam as políticas da organização e os detectores da Análise de integridade da segurança que são aplicados aos seus recursos do Google Cloud.
Para mais informações sobre a validação de IaC, consulte Validar sua IaC com as políticas da sua organização do Google Cloud.
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 Enterprise ou Premium do Security Command Center
Verifique se o nível Premium ou Enterprise do Security Command Center está ativado no nível da organização.
Ativar o Security Command Center ativa as APIs securityposture.googleapis.com
e
securitycentermanagement.googleapis.com
.
Configurar permissõ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 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.
Acessar o IAM - Selecionar uma organização.
- Clique em CONCEDER ACESSO.
-
No campo Novos principais, insira seu identificador de usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.
- Na lista Selecionar um papel, escolha um.
- Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
- Clique em Salvar.
Para mais informações sobre as permissões de validação do IaC, consulte IAM para ativações no nível da organização.
Ativar a API Cloud Build
-
Enable the Cloud Build API.
Definir suas políticas
Defina as políticas da organização e os detectores da Análise de integridade da segurança. Para definir essas políticas usando uma postura de segurança, conclua as tarefas em Criar e implantar uma postura.
Criar seu código do Terraform
Para instruções, consulte Criar seu código do Terraform.
Validar seu IAC no Cloud Build
Adicione as seguintes tarefas ao arquivo
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:
STATE_BUCKET
pelo nome do bucket do Cloud Storage para armazenar o estado do Terraform emREPOSITORY_NAME
com o repositório que hospeda seu código do Terraform.FOLDER
pelo nome da pasta em que os artefatos do Terraform serão salvos.
Crie um arquivo de plano:
- name: hashicorp/terraform args: - '-c' - | terraform plan -out tf.plan dir: FOLDER id: Terraform Plan entrypoint: sh
Converta o arquivo 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 organização.Se você estiver usando o Cloud Storage, faça upload do arquivo de resultados JSON para o Cloud Storage:
- name: gcr.io/cloud-builders/gsutil args: - cp - IaCScanReport_$BUILD_ID.json - SCAN_RESULT_FILE_BUCKET dir: FOLDER id: Upload report file
Substitua
SCAN_RESULT_FILE_BUCKET
pelo bucket do Cloud Storage para fazer upload do arquivo de resultados.Para conferir os resultados no formato SARIF, faça o seguinte:
Converta o arquivo:
- 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: faça upload do arquivo no 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
Valide os resultados. Conclua esta etapa no arquivo JSON de resultados que você 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 falha que determinam quando o build falha. Os critérios de limite são baseados no número de problemas de gravidade crítica, alta, média e baixa que o recurso de verificação de IaC encontra.FAILURE_CRITERIA
especifica quantos problemas de cada gravidade são permitidos e também como os problemas são agregados (AND
ouOR
). Por exemplo, se você quer que o build falhe se encontrar um problema crítico ou um problema de gravidade alta, definaFAILURE_CRITERIA
comoCritical:1,High:1,Operator:OR
. O padrão éCritical:1,High:1,Medium:1,Low:1,Operator:OR
, o que significa que, se a verificação de validação do IaC encontrar uma violação de qualquer gravidade, o build vai falhar.Se o build falhar, resolva todas as violações no código do Terraform.
A seguir
- Acesse o relatório de validação de IaC no Cloud Storage.
- Revise os scripts de validação de IaC no GitHub.
- Analise o exemplo de
cloud.yaml
.