Use a ação "Analisar segurança do código" 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 recursos do Google Cloud .
Para mais informações sobre a validação de IaC, consulte Validar sua IaC em relação às políticas da sua organização Google Cloud .
Antes de começar
Conclua estas tarefas para começar a usar a validação de IaC com o GitHub Actions.
Ativar 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.
Ao ativar o Security Command Center, as APIs securityposture.googleapis.com
e securitycentermanagement.googleapis.com
são ativadas.
Criar uma conta de serviço
Crie uma conta de serviço que possa ser usada para a ação "Analisar segurança do código".
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
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
. - Click Create and continue.
-
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.
- Click Continue.
-
Click Done to finish creating the service account.
Para mais informações sobre permissões de validação de 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 projetoGoogle Cloud em que você configurou a federação de identidade da carga de trabalho.POOL_ID
é o nome do pool.PROVIDER_ID
é o nome do seu provedor de identidade.
Adicione a ação Autenticar no Google Cloud ao fluxo de trabalho para autenticar a ação de validação de IaC.
Definir suas políticas
Defina suas 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.
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 - Configurar o Terraform, execute o seguinte comando:
- name: Terraform Init id: init run: terraform init
Crie um arquivo de plano do Terraform:
- name: Create Terraform Plan id: plan run: terraform plan -out=TF_PLAN_FILE
Substitua
TF_PLAN_FILE
pelo 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_FILE
Substitua
TF_PLAN_JSON_FILE
pelo 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é seu 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_provider
com o link para o URL do token de ID da federação de identidade da carga de trabalho.service_account
com o endereço de e-mail da conta de serviço que você criou para a ação.organization_id
pelo ID da sua Google Cloud organização.scan_file_ref
com o caminho para o arquivo de plano do Terraform no formato JSON.failure_criteria
com os critérios de limite de falha que determinam quando a ação falha. Os critérios de limite são baseados no número de problemas de gravidade crítica, alta, média e baixa encontrados pela verificação de validação da IaC.failure_criteria
especifica quantos problemas de cada gravidade são permitidos e como eles são agregados (AND
ouOR
). Por exemplo, se você quiser que a ação falhe se encontrar um problema crítico ou um problema de alta gravidade, definafailure_criteria
comoCritical: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 de IaC encontrar algum problema, a ação vai falhar.
Agora é possível 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.
Ver o relatório de violação da IaC
No repositório do GitHub, clique em Ações e selecione seu 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
rules
que descreve quais políticas foram violadas pelo plano do Terraform. Cada regra inclui umruleID
que pode ser comparado com os resultados incluídos no relatório. - Um campo
results
que descreve as modificações de recurso propostas que violam uma regra específica.
- Um campo
Resolva todas 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.