Integrar a validação da IaC ao Cloud Build

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

  1. 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

    1. No console do Google Cloud, abra a página IAM.

      Acessar IAM
    2. Selecionar uma organização.
    3. 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.

    4. 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

    1. No console do Google Cloud, abra a página IAM.

      Acesse o IAM
    2. Selecionar uma organização.
    3. Clique em CONCEDER ACESSO.
    4. No campo Novos participantes, digite seu endereço de e-mail.
    5. Na lista Selecionar um papel, escolha um.
    6. Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
    7. 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

  1. Ative a API Cloud Build.

    Ative a API

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:

  1. 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 no
    • REPOSITORY_NAME pelo repositório que hospeda seu código do Terraform.
    • FOLDER pelo nome da pasta que salvará o arquivo do Terraform os artefatos.
  2. Crie um arquivo de plano:

    - name: hashicorp/terraform
      args:
        - '-c'
        - |
          terraform plan -out tf.plan
      dir: FOLDER
      id: Terraform Plan
      entrypoint: sh
    
  3. 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
    
  4. 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.

  5. 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.

  6. Para ver os resultados no formato SARIF, faça o seguinte:

    1. 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
      
    2. 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
      
  7. 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 ou OR). Por exemplo, se você quer que o build falhe se encontrar um problema crítico ou um problema grave problema de gravidade, defina FAILURE_CRITERIA como Critical: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.

  8. Se o build falhar, resolva todas as violações no seu código do Terraform.

A seguir