Integrar a validação de IaC com o Jenkins

Você pode usar o plug-in Google Analyze Code Security para Jenkins para validar a infraestrutura como código (IaC) que faz parte do seu projeto Jenkins. 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.

A validação de IaC só funciona com projetos freestyle do Jenkins.

Antes de começar

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

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 o plug-in Google Analyze Code Security para Jenkins.

  1. Create a service account:

    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.

      Do not close your browser window. You will use it in the next step.

  2. Create a service account key:

    1. In the Google Cloud console, click the email address for the service account that you created.
    2. Click Keys.
    3. Click Add key, and then click Create new key.
    4. Click Create. A JSON key file is downloaded to your computer.
    5. Click Close.

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

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.

Instalar e configurar o plug-in

  1. No console do Jenkins, clique em Manage Jenkins > Manage Plugins.
  2. Na guia Disponível, pesquise google-analyze-code-security.
  3. Conclua as etapas de instalação.
  4. Clique em Manage Jenkins > Configure System.
  5. Na seção Google Analyze Code Security, clique em Adicionar credencial.
  6. Em ID da organização, insira o ID da organização do Google Cloud que inclui os recursos do Terraform que você quer criar ou modificar.
  7. Em Credencial do Security Command Center, adicione a chave da conta de serviço.
  8. Teste a conexão para verificar as credenciais da conta de serviço.
  9. Clique em Salvar.

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. Instale o plug-in do Terraform para o Jenkins.

  3. No console do Jenkins, no seu projeto freestyle, acesse a página Configuration.

  4. Clique em Gerenciamento do código-fonte.

  5. Em URL do repositório, insira o URL do código do Terraform que você criou.

  6. Clique em Etapas de criação.

  7. Adicione estas etapas:

    1. Inicialize o Terraform:

      terraform init
      
    2. Crie um arquivo de plano do Terraform.

      terraform plan -out=TF_PLAN_FILE
      

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

    3. Converta o arquivo de plano para o formato JSON:

      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 o plug-in ao projeto do Jenkins

  1. No console do Jenkins, no seu projeto freestyle, acesse a página Configuration.
  2. Em Build Steps, clique em Add build step > Perform Code Scan during Build.
  3. Insira o ID da sua organização.
  4. Informe o caminho para o arquivo de plano do Terraform no formato JSON.
  5. Opcional: defina os critérios de falha do build. Os critérios de falha são baseados no número de problemas de gravidade crítica, alta, média e baixa que o recurso de verificação de validação de IaC encontra. É possível especificar quantos problemas de cada gravidade são permitidos e como os problemas são agregados (AND ou OR).

    1. Clique em Falha na violação de recurso.

    2. Se você quiser que o build falhe apenas se a contagem de problemas de todos os níveis de gravidade for alcançada, selecione AND. Se você quiser que o build falhe se a contagem de problemas de qualquer nível de gravidade for alcançada, selecione OR. Por exemplo, se você quiser que o build falhe se encontrar um problema crítico ou um problema de alta gravidade, defina o valor agregado como OR.

    3. Indique o número de problemas nos vários níveis de gravidade que você quer permitir antes que o build falhe.

    Se você não quiser especificar um critério de falha, selecione Ignorar violação de recurso.

  6. Clique em Salvar.

Agora você pode executar o build para validar o arquivo de plano do Terraform.

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

  1. No console do Jenkins, clique no fluxo de trabalho mais recente do seu build.

  2. Clique em Status. Os seguintes arquivos HTML estão disponíveis como artefatos de build:

    • Se o plug-in foi executado, o relatório de violação (GoogleAnalyzeCodeSecurity_ViolationSummary.html)

    O relatório agrupa as violações por gravidade. A seção de violação descreve qual regra não foi atendida e o ID do recurso do plano do Terraform que violou a regra.

    • Se o build tiver falhado, um relatório de resumo de erros
  3. Resolva todas as violações no código do Terraform antes de aplicá-lo.

A seguir