Puedes usar la acción Analyze Code Security para validar la infraestructura como código (IaC) que forma parte de tu flujo de trabajo de GitHub Actions. La validación de IaC te permite determinar si las definiciones de recursos de Terraform incumplen las políticas de la organización existentes 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 IaC, consulta Valida tu IaC en función de las políticas de tu organización. 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 habilitarán las APIs de securityposture.googleapis.com
y securitycentermanagement.googleapis.com
.
Crea una cuenta de servicio
Crea una cuenta de servicio que puedas usar para la acción Analyze Code Security.
-
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 federación de identidades para cargas de trabajo. 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 del proyectoGoogle Cloud en el que configuraste la federación de Workload Identity.POOL_ID
es el nombre del grupo.PROVIDER_ID
es el nombre de tu proveedor de identidad.
Agrega la acción Autenticarse en Google Cloud a tu flujo de trabajo para autenticar la acción de validación de IaC.
Define tus políticas
Define tus políticas de la organización y los detectores de Security Health Analytics. Para definir estas políticas con una postura de seguridad, completa las tareas en Crea y, luego, implementa una postura.
Crea tu archivo JSON del 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 del plan de Terraform. Por ejemplo,myplan.tfplan
Convierte tu 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 del 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 Google Cloud ID de tu organización.scan_file_ref
con la ruta de acceso a tu archivo de plan de Terraform, en formato JSON.failure_criteria
con los criterios del umbral de falla 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 los problemas (AND
oOR
). Por ejemplo, si deseas que la acción falle si encuentra un problema crítico o un problema 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 Artifacts, el informe de incumplimiento (
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 comparar con los resultados incluidos en el informe. - Es un campo
results
que describe las modificaciones propuestas del recurso que incumplen una regla específica.
- Un campo
Resuelve 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.