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, na sigla em inglês) que faz parte do projeto do Jenkins. Ao validar a IaC, você determina se as definições de recursos do Terraform violam as políticas atuais da organização e Detectores da Análise de integridade da segurança que são aplicados aos seus recursos do Google Cloud.

Para mais informações sobre a validação da IaC, consulte Validar a IaC em relação às políticas da 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 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.

Ativar o Security Command Center ativa os securityposture.googleapis.com e APIs do 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.

Defina suas políticas

Defina seu 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.

Instalar e configurar o plug-in

  1. No console do Jenkins, clique em Manage Jenkins > Gerenciar plug-ins.
  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. organização que inclua 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 Jenkins.

  3. No console do Jenkins, no projeto de estilo livre do Jenkins, acesse a Configuração.

  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 no formato JSON. Por exemplo, mytfplan.json.

Adicionar o plug-in ao projeto do Jenkins

  1. No console do Jenkins, no seu projeto freestyle do Jenkins, acesse a página Configuration.
  2. Em Build Steps, clique em Add build step > Perform Code Scan during Build.
  3. Insira o ID da organização.
  4. Informe o caminho para seu 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 (E ou OR).

    1. Clique em Reprovar violação do recurso.

    2. Se você quiser que o build falhe somente se a contagem de problemas de todos se os níveis de gravidade forem atingidos, selecione E. Se você quiser que o build falhe Se a contagem de problemas de qualquer nível de gravidade for atingida, selecione OU. Por exemplo, se você quiser que o build falhe se encontrar um erro ou um problema de alta gravidade, defina o valor agregado como OU.

    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 recurso Violação.

  6. Clique em Salvar.

Agora é possível executar o build para validar seu arquivo de plano do Terraform.

Acessar 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 falhar, um relatório de resumo de erros
  3. Resolva todas as violações no código do Terraform antes de aplicá-lo.

A seguir