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 la IaC permite determinar si las definiciones de recursos de Terraform infringen las políticas de la organización existentes y los detectores de Security Health Analytics que se aplican a tus Google Cloud recursos de.
Para obtener más información sobre la validación de la IaC, consulta Valida tu IaC en función de las políticas de tu Google Cloud organización.
Antes de comenzar
Completa estas tareas para comenzar a usar la validación de la 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.
-
Asegúrate de tener el rol de IAM de creador de cuentas de servicio
(
-
En la Google Cloud consola de, ve a la página Crear cuenta de servicio.
Ve a Crear cuenta de servicio - Elige tu proyecto.
-
Escribe un nombre en el campo Nombre de cuenta de servicio. La Google Cloud consola completa el campo ID de cuenta de servicio según este nombre.
Opcional: en el campo Descripción de la cuenta de servicio, escribe una descripción. Por ejemplo,
Service account for quickstart. - Haz clic en Crear y continuar.
-
Otorga el rol de Security Posture Shift-Left Validator a la cuenta de servicio.
Para otorgar el rol, busca la lista Seleccionar un rol y, luego, selecciona Security Posture Shift-Left Validator.
- Haz clic en Continuar.
-
Haz clic en Listo para terminar de crear la cuenta de servicio.
roles/iam.serviceAccountCreator) y el rol de IAM de administrador de IAM del proyecto
(roles/resourcemanager.projectIamAdmin). Obtén información para otorgar
roles.
Para obtener más información sobre los permisos de validación de la IaC, consulta IAM para activaciones a nivel de la organización.
Configura la autenticación
Configura la federación de identidades para cargas de trabajo 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_NUMBERes el número de proyecto del Google Cloud proyecto en el que configuraste la federación de identidades para cargas de trabajo.POOL_IDes el nombre del grupo.PROVIDER_IDes el nombre de tu proveedor de identidad.
Agrega la acción Authenticate to Google Cloud a tu flujo de trabajo para autenticar la acción de validación de la IaC.
Define las 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 figuran en Crea e implementa una postura.
Crea tu archivo JSON de plan de Terraform
Crea tu código de Terraform. Para obtener instrucciones, consulta Crea tu código de Terraform code.
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 initCrea un archivo de plan de Terraform:
- name: Create Terraform Plan id: plan run: terraform plan -out=TF_PLAN_FILEReemplaza
TF_PLAN_FILEpor el nombre del archivo de 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_FILEReemplaza
TF_PLAN_JSON_FILEpor 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 flujo de trabajo.
- En la barra lateral de GitHub Marketplace, busca Analyze Code Security.
- En la sección Installation, copia la sintaxis.
- Pega la sintaxis como un paso nuevo en tu flujo de trabajo.
Reemplaza los siguientes valores:
workload_identity_providerpor el vínculo a la URL de tu token de ID de federación de identidades para cargas de trabajo.service_accountpor la dirección de correo electrónico de la cuenta de servicio que creaste para la acción.organization_idpor tu Google Cloud ID de organización.scan_file_refpor la ruta de acceso a tu archivo de plan de Terraform, en formato JSON.failure_criteriapor los criterios del umbral de error que determinan cuándo falla la acción. Los criterios del umbral se basan en la cantidad de problemas de gravedad crítica, alta, intermedia y baja que encuentra el análisis de validación de la IaC.failure_criteriaespecifica cuántos problemas de cada gravedad se permiten y cómo se agregan (ya sea conANDoOR). Por ejemplo, si necesitas que la acción falle en caso de que encuentre un problema crítico o uno de gravedad alta, establecefailure_criteriaenCritical: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 la 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 de forma manual, consulta Ejecuta un flujo de trabajo de forma manual.
Consulta el informe de incumplimiento de la 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
rulesque describe qué políticas incumplió el plan de Terraform. Cada regla incluye unruleIDque puedes hacer coincidir con los resultados que se incluyen en el informe. - Un campo
resultsque describe las modificaciones de recursos propuestas 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.