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

Pode usar a ação Analyze Code Security para validar a infraestrutura como código (IaC) que faz parte do seu fluxo de trabalho do GitHub Actions. A validação da IaC permite-lhe determinar se as definições de recursos do Terraform violam as políticas organizacionais existentes e os detetores do Security Health Analytics que são aplicados aos seus recursos Google Cloud .

Para mais informações sobre a validação de IaC, consulte o artigo Valide a sua IaC em função das políticas da sua Google Cloud organização.

Antes de começar

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

Ative o nível Premium ou o nível Enterprise do Security Command Center

Verifique se o nível Premium ou nível Enterprise do Security Command Center está ativado ao nível da organização.

A ativação do 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 usar para a ação Analyze Code Security.

  1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator). Learn how to grant roles.
  2. In the Google Cloud console, go to the Create service account page.

    Go to Create service account
  3. Select your project.
  4. 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.

  5. Click Create and continue.
  6. 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.

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

Para mais informações sobre as autorizações de validação de IaC, consulte o artigo IAM para ativações ao nível da organização.

Configure a autenticação

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

  2. Obtenha o URL do token de ID da federação de identidades 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 no qual configurou a Workload Identity Federation.Google Cloud
    • POOL_ID é o nome do conjunto.
    • PROVIDER_ID é o nome do seu Fornecedor de identidade.
  3. Adicione a ação Authenticate to Google Cloud ao seu fluxo de trabalho para autenticar a ação de validação de IaC.

Defina as suas políticas

Defina as suas políticas organizacionais e os detetores do Security Health Analytics. Para definir estas políticas através de uma postura de segurança, conclua as tarefas em Crie e implemente uma postura.

Crie o ficheiro JSON do plano do Terraform

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

  2. Nas ações do GitHub, inicialize o Terraform. Por exemplo, se estiver a usar a ação HashiCorp - Setup Terraform, execute o seguinte comando:

    - name: Terraform Init
      id: init
      run: terraform init
    
  3. Crie um ficheiro de plano do Terraform:

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

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

  4. Converta o ficheiro do plano no 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 ficheiro do plano do Terraform no formato JSON. Por exemplo, mytfplan.json.

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

  1. No repositório do GitHub, procure o 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 secção Instalação, copie a sintaxe.
  5. Cole a sintaxe como um novo passo 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 Workload Identity Federation.
    • service_account com o endereço de email da conta de serviço que criou para a ação.
    • organization_id com o ID da sua Google Cloud organização.
    • scan_file_ref com o caminho para o ficheiro do plano do Terraform no formato JSON.
    • failure_criteria com os critérios de limite de falhas que determinam quando a ação falha. Os critérios de limite baseiam-se no número de problemas de gravidade crítica, elevada, média e baixa que a análise de validação de 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 quiser que a ação falhe se encontrar um problema crítico ou um problema de gravidade elevada, defina failure_criteria como Critical:1,High:1,Operator:OR. A predefinição é Critical:1,High:1,Medium:1,Low:1,Operator:OR, o que significa que, se a análise de validação de IaC encontrar algum problema, a ação tem de falhar.

Agora, pode executar o fluxo de trabalho para validar o ficheiro de plano do Terraform. Para executar o fluxo de trabalho manualmente, consulte o artigo Executar manualmente um fluxo de trabalho.

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

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

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

    Na secção Artefactos, o relatório de violação (ias-scan-sarif.json) está disponível num ficheiro ZIP. O relatório inclui os seguintes campos:

    • Um campo rules que descreve as políticas que foram violadas pelo plano do Terraform. Cada regra inclui um ruleID que pode fazer corresponder aos resultados incluídos no relatório.
    • Um campo results que descreve as modificações propostas aos recursos que violam uma regra específica.
  3. Resolva quaisquer violações no seu código Terraform antes de o aplicar.

O que se segue?