Pode usar a ação Analyze Code Security para validar a infraestrutura como código (IaC) que faz parte do seu fluxo de trabalho do GitHub Actions. A validação da IaC permite-lhe determinar se as definições de recursos do Terraform violam as políticas organizacionais existentes e os detetores do Security Health Analytics que são aplicados aos seus recursos Google Cloud .
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.
Antes de começar
Conclua estas tarefas para começar a usar a validação de IaC com as GitHub Actions.
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 a ação Analyze Code Security.
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator
). Learn how to grant roles. -
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 autorizações de validação de IaC, consulte o artigo IAM para ativações ao nível da organização.
Configure a autenticação
Configure a federação de identidade da carga de trabalho com o seu fornecedor de identidade do GitHub. Para ver instruções, consulte o artigo Federação de identidades da carga de trabalho.
Obtenha o URL do token de ID da federação de identidades 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 projeto no qual configurou a Workload Identity Federation.Google CloudPOOL_ID
é o nome do conjunto.PROVIDER_ID
é o nome do seu Fornecedor de identidade.
Adicione a ação Authenticate to Google Cloud ao seu fluxo de trabalho para autenticar a ação de validação de IaC.
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.
Crie o ficheiro JSON do plano do Terraform
Crie o seu código Terraform. Para ver instruções, consulte o artigo Crie o seu código do Terraform.
Nas ações do GitHub, inicialize o Terraform. Por exemplo, se estiver a usar a ação HashiCorp - Setup Terraform, execute o seguinte comando:
- name: Terraform Init id: init run: terraform init
Crie um ficheiro de plano do Terraform:
- name: Create Terraform Plan id: plan run: terraform plan -out=TF_PLAN_FILE
Substitua
TF_PLAN_FILE
pelo nome do ficheiro do plano do Terraform. Por exemplo,myplan.tfplan
.Converta o ficheiro do plano no 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 ficheiro do plano do Terraform no formato JSON. Por exemplo,mytfplan.json
.
Adicione a ação ao fluxo de trabalho do GitHub Actions
- No repositório do GitHub, procure o seu fluxo de trabalho.
- Abra o editor de fluxo de trabalho.
- Na barra lateral do GitHub Marketplace, pesquise Analyze Code Security.
- Na secção Instalação, copie a sintaxe.
- Cole a sintaxe como um novo passo no seu fluxo de trabalho.
Substitua os seguintes valores:
workload_identity_provider
com o link para o URL do seu token de ID da Workload Identity Federation.service_account
com o endereço de email da conta de serviço que criou para a ação.organization_id
com o ID da sua Google Cloud organização.scan_file_ref
com o caminho para o ficheiro do plano do Terraform no formato JSON.failure_criteria
com os critérios de limite de falhas que determinam quando a ação falha. Os critérios de limite baseiam-se no número de problemas de gravidade crítica, elevada, média e baixa que a análise de validação de IaC encontra.failure_criteria
especifica quantos problemas de cada gravidade são permitidos e como os problemas são agregados (AND
ouOR
). Por exemplo, se quiser que a ação falhe se encontrar um problema crítico ou um problema de gravidade elevada, definafailure_criteria
comoCritical:1,High:1,Operator:OR
. A predefinição éCritical:1,High:1,Medium:1,Low:1,Operator:OR
, o que significa que, se a análise de validação de IaC encontrar algum problema, a ação tem de falhar.
Agora, pode executar o fluxo de trabalho para validar o ficheiro de plano do Terraform. Para executar o fluxo de trabalho manualmente, consulte o artigo Executar manualmente um fluxo de trabalho.
Veja o relatório de violação de IaC
No seu 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 secção Artefactos, o relatório de violação (
ias-scan-sarif.json
) está disponível num ficheiro ZIP. O relatório inclui os seguintes campos:- Um campo
rules
que descreve as políticas que foram violadas pelo plano do Terraform. Cada regra inclui umruleID
que pode fazer corresponder aos resultados incluídos no relatório. - Um campo
results
que descreve as modificações propostas aos recursos que violam uma regra específica.
- Um campo
Resolva quaisquer violações no seu código Terraform antes de o aplicar.
O que se segue?
- Veja o código fonte da ação analyze-code-security-scc no GitHub.