Integrar a validação de IaC com o Cloud Build

É 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 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 que são aplicados aos seus 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 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 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

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

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the organization.
    3. 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.

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

    1. In the Google Cloud console, go to the IAM page.

      Acessar o IAM
    2. Selecionar uma organização.
    3. Clique em CONCEDER ACESSO.
    4. No campo Novos principais, insira seu identificador de usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.

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

    Para mais informações sobre permissões de validação de IaC, consulte IAM para ativações no nível da organização.

    Ativar a API Cloud Build

    1. Enable the Cloud Build API.

      Enable the 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 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 instruções, consulte Crie o 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 em
      • REPOSITORY_NAME pelo repositório que hospeda seu código do Terraform.
      • FOLDER pelo nome da pasta em que os artefatos do Terraform serão salvos.
    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 do 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 organização.

    5. Se você estiver usando o Cloud Storage, faça upload do arquivo de resultados JSON no 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 conferir 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 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
        
    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 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 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 encontrar uma violação de qualquer gravidade, o build terá que falhar.

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

    A seguir