Integrar a validação de IaC com as ações do GitHub

É possível usar a ação Analisar a segurança do código para validar a infraestrutura como código (IaC) que faz parte do seu fluxo de trabalho do GitHub Actions. A validação de 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 seus recursos do Google Cloud.

Para mais informações sobre a validação de IaC, consulte Validar sua IaC com as políticas da sua organização do Google Cloud.

Antes de começar

Conclua estas tarefas para começar a usar a validação de IaC com o GitHub Actions.

Ative o nível Enterprise ou Premium 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.

Crie uma conta de serviço

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

  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 as permissões de validação do 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 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 provedor de identidade.
  3. Adicione a ação Autenticação no Google Cloud ao seu 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 o 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 Marketplace do GitHub, pesquise Analyze Code Security.
  4. Na seção Instalação, copie a sintaxe.
  5. Cole a sintaxe como uma nova etapa no seu fluxo de trabalho.
  6. Substitua os seguintes valores:

    • workload_identity_provider com o link para o URL do seu token de ID da federação da identidade da carga de trabalho.
    • service_account pelo endereço de e-mail da conta de serviço que você criou para a ação.
    • organization_id pelo ID da organização do Google Cloud.
    • 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 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 quantas questões de cada gravidade são permitidas e como as questões são agregadas (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, o que significa que, se a verificação de validação do IaC encontrar algum problema, a ação vai falhar.

Agora você pode 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.

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

  1. No repositório do GitHub, clique em Actions e selecione seu fluxo de trabalho.

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

    Na seção Artifacts, 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 associado aos resultados 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