Puedes usar la acción Analizar seguridad del código para validar la infraestructura como código (IaC) que forma parte de tu flujo de trabajo de GitHub Actions. La validación de la IaC te permite determinar si las definiciones de recursos de Terraform vulneran las políticas existentes de la organización y los detectores de Security Health Analytics que se aplican a tus recursos de Google Cloud.
Para obtener más información sobre la validación de la IaC, consulta Cómo validar tu IaC en función de las políticas de tu organización de Google Cloud.
Antes de comenzar
Completa estas tareas para comenzar a usar la validación de IaC con GitHub Actions.
Activa el nivel Premium o Enterprise de Security Command Center
Verifica que el nivel Premium o Enterprise de Security Command Center esté activado a nivel de la organización.
Si activas Security Command Center, se habilitan las APIs de securityposture.googleapis.com
y
securitycentermanagement.googleapis.com
.
Cree una cuenta de servicio
Crea una cuenta de servicio que puedas usar para la acción Analizar seguridad del 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 obtener más información sobre los permisos de validación de IaC, consulta IAM para activaciones a nivel de la organización.
Configura la autenticación
Configura la federación de Workload Identity con tu proveedor de identidad de GitHub. Para obtener instrucciones, consulta Federación de identidades para cargas de trabajo.
Obtén la URL de tu token de ID de la federación de Workload Identity. Por ejemplo,
https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID
.Ten en cuenta lo siguiente:
PROJECT_NUMBER
es el número de proyecto del proyecto de Google Cloud en el que configuraste la federación de identidades para cargas de trabajo.POOL_ID
es el nombre del grupo.PROVIDER_ID
es el nombre de tu proveedor de identidad.
Agrega la acción de autenticación en Google Cloud a tu flujo de trabajo para autenticar la acción de validación de IaC.
Define tus políticas
Define las políticas de tu organización y los detectores de Security Health Analytics. Para definir estas políticas con una postura de seguridad, completa las tareas que se indican en Crea y, luego, implementa una postura.
Crea el archivo JSON de tu plan de Terraform
Crea tu código de Terraform. Para obtener instrucciones, consulta Crea tu código de Terraform.
En tus Acciones de GitHub, inicializa Terraform. Por ejemplo, si usas la acción HashiCorp - Setup Terraform, ejecuta el siguiente comando:
- name: Terraform Init id: init run: terraform init
Crea un archivo de plan de Terraform:
- name: Create Terraform Plan id: plan run: terraform plan -out=TF_PLAN_FILE
Reemplaza
TF_PLAN_FILE
por el nombre del archivo de plan de Terraform. Por ejemplo,myplan.tfplan
Convierte el archivo de plan al formato JSON:
- name: Convert Terraform Plan to JSON id: convert run: terraform show -no-color -json TF_PLAN_FILE > TF_PLAN_JSON_FILE
Reemplaza
TF_PLAN_JSON_FILE
por el nombre del archivo de plan de Terraform, en formato JSON. Por ejemplo,mytfplan.json
Agrega la acción a tu flujo de trabajo de GitHub Actions
- En el repositorio de GitHub, navega hasta tu flujo de trabajo.
- Abre el editor de flujos de trabajo.
- En la barra lateral de GitHub Marketplace, busca Analyze Code Security.
- En la sección Instalación, copia la sintaxis.
- Pega la sintaxis como un paso nuevo en tu flujo de trabajo.
Reemplaza los siguientes valores:
workload_identity_provider
con el vínculo a la URL de tu token de ID de la federación de identidades para cargas de trabajo.service_account
por la dirección de correo electrónico de la cuenta de servicio que creaste para la acción.organization_id
por el ID de la organización de Google Cloud.scan_file_ref
con la ruta de acceso al archivo de plan de Terraform, en formato JSON.failure_criteria
con los criterios de umbral de fallas que determinan cuándo falla la acción. Los criterios de umbral se basan en la cantidad de problemas de gravedad crítica, alta, media y baja que encuentra el análisis de validación de IaC.failure_criteria
especifica cuántos problemas de cada gravedad se permiten y cómo se agregan (AND
oOR
). Por ejemplo, si deseas que la acción falle si encuentra un problema grave o uno de gravedad alta, establecefailure_criteria
enCritical:1,High:1,Operator:OR
. El valor predeterminado esCritical:1,High:1,Medium:1,Low:1,Operator:OR
, lo que significa que, si el análisis de validación de IaC encuentra algún problema, la acción debe fallar.
Ahora puedes ejecutar el flujo de trabajo para validar tu archivo de plan de Terraform. Para ejecutar el flujo de trabajo de forma manual, consulta Cómo ejecutar un flujo de trabajo de forma manual.
Consulta el informe de incumplimientos de IaC
En tu repositorio de GitHub, haz clic en Actions y selecciona tu flujo de trabajo.
Haz clic en la ejecución más reciente de tu flujo de trabajo.
En la sección Artefactos, el informe de incumplimientos (
ias-scan-sarif.json
) está disponible en un archivo ZIP. El informe incluye los siguientes campos:- Un campo
rules
que describe qué políticas incumplió el plan de Terraform. Cada regla incluye unruleID
que puedes hacer coincidir con los resultados que se incluyen en el informe. - Un campo
results
que describe las modificaciones de recursos propuestas que violan una regla específica.
- Un campo
Soluciona los incumplimientos en tu código de Terraform antes de aplicarlo.
¿Qué sigue?
- Consulta el código fuente de la acción analyze-code-security-scc en GitHub.