Você pode gravar uma configuração da versão 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 As definições de recursos do Terraform violam as políticas atuais da organização e Detectores 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 a documentação da organização do Google Cloud ..
Antes de começar
Conclua estas tarefas para começar a usar a validação de IaC o Cloud Build.
Ative o nível Premium ou Enterprise do Security Command Center
Verifique se o nível Premium ou Enterprise do Security Command Center é ativado no nível da organização.
Ativar o Security Command Center ativa os securityposture.googleapis.com
e
APIs do 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 mais informações sobre permissões de validação de IaC, consulte IAM para nível de organização ativações.
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 usando uma postura de segurança, conclua as tarefas em Criar e implantar um de segurança.
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 Terraform noREPOSITORY_NAME
pelo repositório que hospeda seu código do Terraform.FOLDER
pelo nome da pasta que salvará o arquivo do Terraform os artefatos.
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 upload do arquivo de resultados JSON para 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 essa etapa resultados JSON que não tenha convertido 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
pelo limite de falha. que determinam quando o build falha. Os critérios de limite são com base 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ê quer que o build falhe se encontrar um problema crítico ou um problema grave problema de 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 IaC verificação de validação encontrar uma violação de qualquer gravidade, o build deverá 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
.