Integre a validação de IaC com o Jenkins

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

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.

A validação de IaC só funciona com projetos de estilo livre 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 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 o plug-in Google Analyze Code Security para Jenkins.

  1. Create a service account:

    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.

      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 autorizações de validação de IaC, consulte o artigo IAM para ativações ao nível da organização.

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.

Instale e configure o plug-in

  1. Na consola do Jenkins, clique em Manage Jenkins > Manage Plugins.
  2. No separador Disponível, pesquise google-analyze-code-security.
  3. Conclua os passos de instalação.
  4. Clique em Manage Jenkins > Configure System.
  5. Na secção Segurança do código de análise da Google, clique em Adicionar credencial.
  6. Em ID da organização, introduza o ID da organização que inclui os recursos do Terraform que quer criar ou modificar. Google Cloud
  7. No Security Command Center Credential, adicione a chave da conta de serviço.
  8. Teste a ligação para validar as credenciais da conta de serviço.
  9. Clique em Guardar.

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

  2. Instale o plugin do Terraform para o Jenkins.

  3. Na consola do Jenkins, no seu projeto freestyle do Jenkins, aceda à página Configuração.

  4. Clique em Gestão de código fonte.

  5. Em URL do repositório, introduza o URL do código Terraform que criou.

  6. Clique em Criar etapas.

  7. Adicione os seguintes passos:

    1. Inicialize o Terraform:

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

      terraform plan -out=TF_PLAN_FILE
      

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

    3. Converta o ficheiro do plano no formato JSON:

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

  1. Na consola do Jenkins, no seu projeto freestyle do Jenkins, aceda à página Configuração.
  2. Em Passos de compilação, clique em Adicionar passo de compilação > Executar análise de código durante a compilação.
  3. Introduza o ID da sua organização.
  4. Indique o caminho para o ficheiro do seu plano do Terraform, no formato JSON.
  5. Opcional: defina os critérios de falha na compilação. Os critérios de falha baseiam-se no número de problemas de gravidade crítica, elevada, média e baixa que a análise de validação da IaC encontra. Pode especificar quantos problemas de cada gravidade são permitidos e como os problemas são agregados (com AND ou OR).

    1. Clique em Falhar em violação de recurso.

    2. Se quiser que a compilação falhe apenas se for atingido o número de problemas de todos os níveis de gravidade, selecione E. Se quiser que a compilação falhe se for atingida a contagem de problemas de qualquer nível de gravidade, selecione OU. Por exemplo, se quiser que a compilação falhe se encontrar um problema crítico ou um problema de gravidade elevada, defina o valor agregado como OU.

    3. Indique o número de problemas nos vários níveis de gravidade que quer permitir antes de a compilação falhar.

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

  6. Clique em Guardar.

Agora, pode executar a compilação para validar o ficheiro do plano do Terraform.

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

  1. Na consola do Jenkins, clique no fluxo de trabalho mais recente da sua compilação.

  2. Clique em Estado. Os seguintes ficheiros HTML estão disponíveis como artefactos de compilação:

    • 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 secção de violação descreve que regra não foi cumprida e o ID do recurso do plano do Terraform que violou a regra.

    • Se a compilação falhar, é apresentado um relatório de resumo de erros
  3. Resolva quaisquer violações no seu código Terraform antes de o aplicar.

O que se segue?