É possível usar a ação Analisar a segurança do código para validar a infraestrutura como código (IaC) que faz parte do seu fluxo de trabalho do GitHub Actions. 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.
Antes de começar
Conclua estas tarefas para começar a usar a validação de IaC com o GitHub Actions.
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 a ação Analisar a 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 as permissões de validação do 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 do Google 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 provedor de identidade.
Adicione a ação Autenticação no Google Cloud ao seu fluxo de trabalho para autenticar a ação de validação de 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 - 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 Marketplace do GitHub, pesquise Analyze Code Security.
- Na seção Instalação, copie a sintaxe.
- Cole a sintaxe como uma nova etapa no seu fluxo de trabalho.
Substitua os seguintes valores:
workload_identity_provider
com o link para o URL do seu token de ID da federação da identidade da carga de trabalho.service_account
pelo endereço de e-mail da conta de serviço que você criou para a ação.organization_id
pelo ID da organização do Google Cloud.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 que o recurso de verificação de IaC encontra.failure_criteria
especifica quantas questões de cada gravidade são permitidas e como as questões são agregadas (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 do IaC encontrar algum 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 de IaC
No repositório do GitHub, clique em Actions e selecione seu fluxo de trabalho.
Clique na execução mais recente do seu fluxo de trabalho.
Na seção Artifacts, 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 associado aos resultados incluídos no relatório. - Um campo
results
que descreve as modificações de recursos 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.