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

É possível usar a ação "Analisar segurança do código" para validar a infraestrutura como código (IaC) que faz parte do fluxo de trabalho das ações do GitHub. 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 GitHub Actions.

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.

Criar uma conta de serviço

Crie uma conta de serviço que possa ser usada para a ação "Analisar segurança do código".

    Verifique se você tem o papel do IAM de criação de contas de serviço (roles/iam.serviceAccountCreator) e o papel de administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin). Saiba como conceder papéis.
  1. No console Google Cloud , acesse a página Criar conta de serviço.

    Acesse "Criar conta de serviço"
  2. Selecione o projeto.
  3. No campo Nome da conta de serviço, insira um nome. O console Google Cloud preenche o campo ID da conta de serviço com base nesse nome.

    No campo Descrição da conta de serviço, insira uma descrição. Por exemplo, Service account for quickstart.

  4. Clique em Criar e continuar.
  5. Conceda o papel Validador Shift-Left do Security Posture à conta de serviço.

    Para conceder o papel, encontre a lista Selecionar um papel e clique em Validador de mudança à esquerda da postura de segurança.

  6. Clique em Continuar.
  7. Clique em Concluído para terminar a criação da conta de serviço.

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

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. Receba o URL do token de ID da federação de 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 projetoGoogle 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 ação Autenticar no Google Cloud ao fluxo de trabalho para autenticar a ação de validação de IaC.

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 o arquivo JSON do plano do Terraform

  1. Crie seu código do Terraform. Para instruções, consulte Criar seu código do Terraform.

  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 de plano do Terraform:

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

    Substitua TF_PLAN_FILE pelo nome do arquivo de plano do Terraform. Por exemplo, myplan.tfplan.

  4. Converta o arquivo de 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 de plano do Terraform, 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é seu 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 do token de ID da federação de identidade da carga de trabalho.
    • service_account com o endereço de e-mail da conta de serviço que você criou para a ação.
    • organization_id pelo ID da sua Google Cloud organização.
    • scan_file_ref com o caminho para o arquivo de plano do Terraform, no formato JSON.
    • failure_criteria com os critérios de limite de falha que determinam quando a ação 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_criteria especifica quantos problemas de cada gravidade são permitidos e como eles 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 failure_criteria como Critical: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 um problema, a ação vai falhar.

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

Ver o relatório de violação da IaC

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

  2. Clique na execução mais recente do 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 os seguintes campos:

    • Um campo rules que descreve quais políticas foram violadas pelo plano do Terraform. Cada regra inclui um ruleID que pode ser comparado com os resultados incluídos no relatório.
    • Um campo results que descreve as modificações propostas no recurso que violam uma regra específica.
  3. Resolva as violações no código do Terraform antes de aplicá-lo.

A seguir