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

Use a ação "Analisar segurança do código" para validar a infraestrutura como código (IaC) que faz parte do fluxo de trabalho do GitHub Actions. 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 do Google Cloud .

Para mais informações sobre a validação de 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 de IaC com o GitHub Actions.

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

Ao ativar o Security Command Center, as APIs securityposture.googleapis.com e securitycentermanagement.googleapis.com são ativadas.

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

  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 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 suas políticas da organização e 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 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 são baseados 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, o que significa que, se a verificação de validação de IaC encontrar algum 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 de recurso propostas que violam uma regra específica.
  3. Resolva todas as violações no código do Terraform antes de aplicá-lo.

A seguir