É possível escrever uma configuração da versão que instrua o Cloud Build a validar a infraestrutura como código (IaC, na sigla em inglês) que faz parte da versão. A validação da IaC permite determinar se as definições de recursos do Terraform violam as políticas da organização e os detectores atuais da Análise de integridade da segurança aplicados aos recursos do Google Cloud.
Para mais informações sobre a validação da IaC, consulte Validar a IaC em relação às políticas da organização do Google Cloud.
Antes de começar
Conclua estas tarefas para começar a validar a IaC usando o Cloud Build.
Ative o nível Premium ou Enterprise do Security Command Center
Verifique se os níveis Premium ou Enterprise do Security Command Center estão ativados no nível da organização.
Ativar o Security Command Center ativa as APIs securityposture.googleapis.com
e
securitycentermanagement.googleapis.com
.
Configurar permissões
-
Verifique se você tem os seguintes papéis na organização:
- Security Posture Shift-Left Validator
- Log Writer
- Storage Writer
- Storage Reader
Verificar os papéis
-
No console do Google Cloud, abra a página IAM.
Acessar IAM - Selecionar uma organização.
-
Na coluna Principal, encontre a linha que contém seu endereço de e-mail.
Caso seu endereço de e-mail não esteja nessa coluna, isso significa que você não tem papéis.
- Na coluna Papel da linha com seu endereço de e-mail, verifique se a lista de papéis inclui os papéis necessários.
Conceder os papéis
-
No console do Google Cloud, abra a página IAM.
Acesse o IAM - Selecionar uma organização.
- Clique em CONCEDER ACESSO.
- No campo Novos participantes, digite seu endereço de e-mail.
- Na lista Selecionar um papel, escolha um.
- Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
- Clique em Save.
Para saber mais sobre permissões de validação de IaC, consulte IAM para ativações no nível da organização.
Ativar a API Cloud Build
-
Ative a API Cloud Build.
Defina 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.
crie seu código do Terraform
Para mais instruções, consulte Criar seu código do Terraform.
Validar sua IAC no Cloud Build
Adicione as seguintes tarefas ao seu 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 TerraformREPOSITORY_NAME
pelo repositório que hospeda o 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 sua organização.Se você estiver usando o Cloud Storage, faça o 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 ver 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 o upload do arquivo para o 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 a verificação de validação da 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ê quiser que a versão falhe se encontrar um problema crítico ou um problema de alta gravidade, 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 de IaC encontrar uma violação de qualquer gravidade, o build falhará.Se o build falhar, resolva todas as violações no seu código do Terraform.
A seguir
- Confira o relatório de validação de IaC no Cloud Storage.
- Consulte os scripts de validação de IaC no GitHub.
- Analise o exemplo
cloud.yaml
.