Você pode usar a ação Analyze Code Security 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 seus Google Cloud recursos.
Para mais informações sobre a validação da IaC, consulte Validar sua IaC em relação às Google Cloud políticas da sua organização.
Antes de começar
Conclua estas tarefas para começar a usar a validação da IaC com o GitHub Actions.
Ativar o nível Security Command Center Premium ou Enterprise
Verifique se o nível Security Command Center Premium ou Enterprise está ativado no nível da organização.
Ativar o 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 ser usada para a ação Analyze Code Security.
-
Verifique se você tem o papel do IAM de criador de contas de serviço
(
-
No Google Cloud console, acesse a página Criar conta de serviço.
Acesse "Criar conta de serviço" - Selecione o projeto.
-
No campo Nome da conta de serviço, insira um nome. O Google Cloud console preenche o campo ID da conta de serviço com base nesse nome.
No campo Descrição da conta de serviço, insira uma descrição. Por exemplo,
Service account for quickstart. - Clique em Criar e continuar.
-
Conceda o papel Validador de mudança de postura de segurança à esquerda à conta de serviço.
Para conceder o papel, encontre a lista Selecionar um papel e selecione Validador de mudança de postura de segurança à esquerda.
- Clique em Continuar.
-
Clique em Concluído para terminar a criação da conta de serviço.
roles/iam.serviceAccountCreator) e o papel de administrador do IAM do projeto
(roles/resourcemanager.projectIamAdmin). Saiba como conceder
papéis.
Para mais informações sobre permissões de validação da IaC, consulte IAM para ativações no nível da organização.
Configurar a autenticação
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.
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 projeto em que você configurou a federação de identidade da carga de trabalho.Google CloudPOOL_IDé o nome do pool.PROVIDER_IDé o nome do provedor de identidade.
Adicione a ação Authenticate to Google Cloud action ao fluxo de trabalho para autenticar a ação de validação da IaC.
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.
Criar o arquivo JSON do plano do Terraform
Crie seu código do Terraform. Para instruções, consulte Criar seu código do Terraform.
No GitHub Actions, inicialize o Terraform. Por exemplo, se você estiver usando a ação HashiCorp - Setup Terraform, execute o seguinte comando:
- name: Terraform Init id: init run: terraform initCrie um arquivo de plano do Terraform:
- name: Create Terraform Plan id: plan run: terraform plan -out=TF_PLAN_FILESubstitua
TF_PLAN_FILEpelo nome do arquivo de plano do Terraform. Por exemplo,myplan.tfplan.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_FILESubstitua
TF_PLAN_JSON_FILEpelo 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
- No repositório do GitHub, navegue até o fluxo de trabalho.
- Abra o editor de fluxo de trabalho.
- Na barra lateral do GitHub Marketplace, pesquise Analyze Code Security.
- Na seção Instalação, copie a sintaxe.
- Cole a sintaxe como uma nova etapa no fluxo de trabalho.
Substitua os seguintes valores:
workload_identity_providerpelo link para o URL do token de ID da federação de identidade da carga de trabalho.service_accountpelo endereço de e-mail da conta de serviço que você criou para a ação.organization_idpelo ID da Google Cloud organização.scan_file_refpelo caminho para o arquivo de plano do Terraform, no formato JSON.failure_criteriapelos critérios de limite de falha que determinam quando a ação falha. Os critérios de limite se baseiam no número de problemas de gravidade crítica, alta, média e baixa encontrados pela verificação de validação da IaC.failure_criteriaespecifica quantos problemas de cada gravidade são permitidos e como eles são agregados (ANDouOR). Por exemplo, se você quiser que a ação falhe se ela encontrar um problema crítico ou um problema de alta gravidade, definafailure_criteriacomoCritical: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 da IaC encontrar qualquer problema, a ação vai falhar.
Agora você pode 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.
Conferir o relatório de violação da IaC
No repositório do GitHub, clique em Ações e selecione o fluxo de trabalho.
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
rulesque descreve quais políticas foram violadas pelo plano do Terraform. Cada regra inclui umruleIDque pode ser correspondido aos resultados incluídos no relatório. - Um campo
resultsque descreve as modificações de recursos propostas que violam uma regra específica.
- Um campo
Resolva as violações no código do Terraform antes de aplicá-lo.
A seguir
- Confira o código-fonte da ação analyze-code-security-scc no GitHub.