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 IaC te permite determinar si las definiciones de tus recursos de Terraform infringen las políticas de la organización y los detectores de Security Health Analytics que se aplican a tus Google Cloud recursos.
Para obtener más información sobre la validación de IaC, consulta el artículo Validar tu IaC con las políticas de tu Google Cloud organización.
Antes de empezar
Completa estas tareas para empezar a usar la validación de IaC con GitHub Actions.
Activar el nivel Premium o Enterprise de Security Command Center
Comprueba que el nivel Premium o Enterprise de Security Command Center esté activado a nivel de organización.
Al activar Security Command Center, se habilitan las APIs securityposture.googleapis.com
y securitycentermanagement.googleapis.com
.
Crear una cuenta de servicio
Crea una cuenta de servicio que puedas usar para la acción Analizar seguridad del código.
-
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 obtener más información sobre los permisos de validación de IaC, consulta Gestión de identidades y accesos para activaciones a nivel de organización.
Configurar la autenticación
Configura Workload Identity Federation con tu proveedor de identidades de GitHub. Para obtener instrucciones, consulta Federación de identidades de cargas de trabajo.
Obtén la URL de tu token de ID de federación de identidades de 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 proyecto en el que has configurado la federación de identidades de cargas de trabajo.Google CloudPOOL_ID
es el nombre del grupo.PROVIDER_ID
es el nombre de tu proveedor de identidades.
Añade la acción Authenticate to Google Cloud (Autenticar en Google Cloud) a tu flujo de trabajo para autenticar la acción de validación de IaC.
Definir tus políticas
Define las políticas de tu organización y los detectores de Security Health Analytics. Para definir estas políticas mediante una postura de seguridad, completa las tareas que se indican en Crear e implementar una postura.
Crea el archivo JSON de tu plan de Terraform
Crea tu código de Terraform. Para obtener instrucciones, consulta el artículo sobre cómo crear tu código de Terraform.
En GitHub Actions, 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
Sustituye
TF_PLAN_FILE
por el nombre del archivo del plan de Terraform. Por ejemplo,myplan.tfplan
.Convierte el archivo de tu 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
Sustituye
TF_PLAN_JSON_FILE
por el nombre del archivo de plan de Terraform, en formato JSON. Por ejemplo,mytfplan.json
.
Añade la acción al flujo de trabajo de GitHub Actions
- En el repositorio de GitHub, ve al 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 nuevo paso en tu flujo de trabajo.
Sustituye los siguientes valores:
workload_identity_provider
con el enlace a la URL del token de ID de federación de identidades de carga de trabajo.service_account
con la dirección de correo de la cuenta de servicio que has creado para la acción.organization_id
con el ID de tu organización. Google Cloudscan_file_ref
con la ruta al archivo de plan de Terraform, en formato JSON.failure_criteria
con los criterios del umbral de errores que determinan cuándo falla la acción. Los criterios de umbral se basan en el número 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 quieres que la acción falle si se encuentra con un problema crítico o con un problema de gravedad alta, definefailure_criteria
comoCritical: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 detecta 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 manualmente, consulta Ejecutar un flujo de trabajo manualmente.
Ver el informe de infracciones de IaC
En tu repositorio de GitHub, haz clic en Actions (Acciones) y selecciona tu flujo de trabajo.
Haz clic en la ejecución más reciente del flujo de trabajo.
En la sección Artefactos, el informe de infracción (
ias-scan-sarif.json
) está disponible en un archivo ZIP. El informe incluye los siguientes campos:- Un campo
rules
que describe qué políticas se han infringido en el plan de Terraform. Cada regla incluye unruleID
que puede asociar con los resultados incluidos en el informe. - Un campo
results
que describe las modificaciones propuestas de un recurso que infringen una regla específica.
- Un campo
Resuelve las infracciones en tu código de Terraform antes de aplicarlo.
Siguientes pasos
- Consulta el código fuente de la acción analyze-code-security-scc en GitHub.