Integrar a validação da IaC com o GitHub Actions

Use a ferramenta Analyze Code Security ação para validar a infraestrutura como código (IaC) que faz parte do seu GitHub Actions de desenvolvimento de software. A validação da IaC permite determinar se o recurso do Terraform da organização violam as políticas e políticas da organização 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 validação da IaC com o GitHub Actions.

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.

Crie uma conta de serviço

Crie uma conta de serviço que possa ser usada para o projeto Analyze Code Security à ação.

  1. In the Google Cloud console, go to the Create service account page.

    Go to Create service account
  2. Select your project.
  3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

    In the Service account description field, enter a description. For example, Service account for quickstart.

  4. Click Create and continue.
  5. Grant the Security Posture Shift-Left Validator role to the service account.

    To grant the role, find the Select a role list, then select Security Posture Shift-Left Validator.

  6. Click Continue.
  7. Click Done to finish creating the service account.

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

Configurar a autenticação

  1. Configure a federação de identidade da carga de trabalho com seu provedor de identidade do GitHub. Para instruções, consulte Federação de identidade da carga de trabalho.

  2. Consiga o URL do token do ID de federação da identidade da carga de trabalho. Por exemplo, https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID.

    Considere o seguinte:

    • PROJECT_NUMBER é o número do projeto do Projeto do Google Cloud em que você configurou a federação de identidade da carga de trabalho.
    • POOL_ID é o nome do pool.
    • PROVIDER_ID é o nome do seu provedor de identidade.
  3. Adicione a configuração Authenticate to Google Cloud ação ao seu fluxo de trabalho para autenticar a ação de validação da IaC.

Defina suas políticas

Defina sua organização políticas e Análise de integridade da segurança de detecção. Para definir essas políticas usando uma postura de segurança, conclua as tarefas em Criar e implantar um de segurança.

crie seu arquivo JSON do plano do Terraform

  1. Crie seu código do Terraform. Para mais instruções, consulte Criar o arquivo do ou código-fonte.

  2. No GitHub Actions, inicialize o Terraform. Por exemplo, se você estiver usando a ação HashiCorp - Configurar Terraform, execute o seguinte comando:

    - name: Terraform Init
      id: init
      run: terraform init
    
  3. Crie um arquivo do Terraform plan:

    - name: Create Terraform Plan
      id: plan
      run: terraform plan -out=TF_PLAN_FILE
    

    Substitua TF_PLAN_FILE pelo nome do Terraform plan. . Por exemplo, myplan.tfplan.

  4. Converta o arquivo do plano para o formato JSON:

    - name: Convert Terraform Plan to JSON
      id: convert
      run: terraform show -no-color -json TF_PLAN_FILE > TF_PLAN_JSON_FILE
    

    Substitua TF_PLAN_JSON_FILE pelo nome do arquivo no formato JSON. Por exemplo, mytfplan.json.

Adicionar a ação ao fluxo de trabalho do GitHub Actions

  1. No repositório do GitHub, navegue até o fluxo de trabalho.
  2. Abra o editor de fluxo de trabalho.
  3. Na barra lateral do GitHub Marketplace, pesquise Analyze Code Security.
  4. Na seção Instalação, copie a sintaxe.
  5. Cole a sintaxe como uma nova etapa no fluxo de trabalho.
  6. Substitua os seguintes valores:

    • workload_identity_provider com o link para o URL da sua Token do ID de federação da Identidade da carga de trabalho.
    • service_account pelo endereço de e-mail da conta de serviço que você criado para a ação.
    • organization_id pelo ID da organização do Google Cloud.
    • scan_file_ref pelo caminho para o arquivo do plano do Terraform, no formato JSON.
    • failure_criteria pelo limite de falha critérios que determinam quando a ação 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 como os problemas são agregados (AND ou OR). Por exemplo, se você quiser que a ação falhe se encontrar um problema crítico ou um problema de alta gravidade, defina o failure_criteria para 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 algum problema, a ação deverá falhar.

Agora é possível executar o fluxo de trabalho para validar seu arquivo de plano do Terraform. Para executar fluxo de trabalho manual, consulte Executar manualmente um fluxo de trabalho.

Acessar o relatório de violação de IaC

  1. No repositório do GitHub, clique em Ações e selecione o fluxo de trabalho.

  2. Clique na execução mais recente do seu fluxo de trabalho.

    Na seção Artefatos, o relatório de violação (ias-scan-sarif.json) está disponível em um arquivo ZIP. O relatório inclui seguintes campos:

    • Um campo rules que descreve quais políticas foram violadas pelo terraform plan. Cada regra inclui um ruleID que pode ser correspondido à resultados que estão incluídos no relatório.
    • Um campo results que descreve as modificações de recursos propostas que violam uma regra específica.
  3. Resolva todas as violações no código do Terraform antes de aplicá-lo.

A seguir