Você pode gravar uma configuração do build que instrui o Cloud Build a validar a infraestrutura como código (IaC) que faz parte do seu build. 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 da Análise de integridade da segurança aplicados aos recursos Google Cloud .
Para mais informações sobre a validação da IaC, consulte Validar sua IaC em relação às políticas da sua organização Google Cloud .
Antes de começar
Conclua estas tarefas para começar a usar a validação da IaC com o Cloud Build.
Ativar o nível Security Command Center Premium ou Enterprise
Verifique se o nível Security Command Center Premium ou Enterprise 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 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.
Acessar o IAM - Selecione a organização.
- Clique em Conceder acesso.
-
No campo Novos principais, digite seu identificador de usuário. Normalmente, é o identificador de um usuário em um pool de identidades de força de trabalho. Saiba mais em Representar usuários do pool de força de trabalho nas políticas do IAM ou entre em contato com seu administrador.
- Na lista Selecionar papel, escolha um.
- Para conceder outros papéis, adicione-os clicando em Adicionar outro papel.
- Clique em Salvar.
Para mais informações sobre permissões de validação da IaC, consulte IAM para ativações no nível da organização.
Ativar 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.enablepermission. Learn how to grant roles.
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 sua IAC no Cloud Build
Adicione a instrução a seguir 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: shSubstitua:
STATE_BUCKETcom o nome do bucket do Cloud Storage para armazenar o estado do Terraform emREPOSITORY_NAMEcom o repositório que hospeda seu código do Terraform.FOLDERcom o nome da pasta em que salvar os artefatos do Terraform.
Crie um arquivo de plano:
- name: hashicorp/terraform args: - '-c' - | terraform plan -out tf.plan dir: FOLDER id: Terraform Plan entrypoint: shConverta 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: shCrie 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/bashSubstitua
ORGANIZATION_IDpelo ID numérico 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/gcloud args: - storage - cp - IaCScanReport_$BUILD_ID.json - SCAN_RESULT_FILE_BUCKET dir: FOLDER id: Upload report fileSubstitua
SCAN_RESULT_FILE_BUCKETpelo bucket do Cloud Storage em que o arquivo de resultados será enviado.Para ver os resultados no formato SARIF:
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/bashOpcional: faça upload do arquivo no 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 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/bashSubstitua
FAILURE_CRITERIApelos critérios de limite de falha que determinam quando o build falha. Os critérios de limite se baseiam no número de problemas de gravidade crítica, alta, média e baixa encontrados pela verificação de validação da IaC.FAILURE_CRITERIAespecifica quantos problemas de cada gravidade são permitidos e como eles são agregados (ANDouOR). Por exemplo, se você quiser que o build falhe se encontrar um problema crítico ou um problema de alta gravidade, definaFAILURE_CRITERIAcomoCritical:1,High:1,Operator:OR. O padrão éCritical:1,High:1,Medium:1,Low:1,Operator:OR, ou seja, se a verificação de validação de IaC encontrar uma violação de qualquer gravidade, o build vai falhar.Se o build falhar, resolva as violações no código do Terraform.
A seguir
- Confira o relatório de validação da IaC no Cloud Storage.
- Revise os scripts de validação da IaC no GitHub.
- Revise o exemplo de
cloud.yaml.