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 Acciones de GitHub. La validación de la IaC te permite determinar si tu recurso de Terraform infringen las políticas de la organización existentes y 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 Valida la IaC con las políticas de la organización de Google Cloud.
Antes de comenzar
Completa estas tareas para comenzar a usar la validación de la IaC con las acciones de GitHub.
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.
La activación de Security Command Center habilita el securityposture.googleapis.com
y
APIs de securitycentermanagement.googleapis.com
.
Crea una cuenta de servicio
Crea una cuenta de servicio que puedas usar para la seguridad del análisis de código acción.
-
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 las 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 consulta las instrucciones Federación de identidades para cargas de trabajo.
Obtén la URL para el token de ID de la 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 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 tu políticas de la organización y Detectores de Security Health Analytics. Para definir estas políticas con una postura de seguridad, completa las tareas de Crea e implementa una postura.
Crea tu archivo JSON de Terraform plan
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 utilizas Ejecuta el siguiente comando en HashiCorp - Setup Terraform action:
- 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 plan de Terraform. . Por ejemplo,myplan.tfplan
Convierte el archivo del 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 de Terraform plan, en formato JSON. Por ejemplo,mytfplan.json
Agrega la acción a tu flujo de trabajo de Acciones de GitHub
- 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 federación de identidades para cargas de trabajo.service_account
por la dirección de correo electrónico de la cuenta de servicio creado para la acción.organization_id
por el ID de la organización de Google Cloud.scan_file_ref
por la ruta de acceso al archivo terraform plan, en formato JSON.failure_criteria
con los criterios de umbral de falla que determinan cuándo falla la acción. El criterio de umbral es en función de la cantidad de problemas de gravedad crítica, alta, media y baja que que encuentra el análisis de validación de IaC.failure_criteria
especifica la cantidad están permitidos los problemas de cada gravedad y cómo se agrupan (AND
oOR
). Por ejemplo, si quieres que la acción falle si encuentra un problema crítico o un problema de gravedad alta, establece lafailure_criteria
aCritical:1,High:1,Operator:OR
. El valor predeterminado esCritical:1,High:1,Medium:1,Low:1,Operator:OR
, lo que significa que, si la IaC de validación detecta algún problema, la acción debe fallar.
Ahora puedes ejecutar el flujo de trabajo para validar el archivo terraform plan. Para ejecutar flujo de trabajo manualmente, consulta Ejecutar manualmente un flujo de trabajo.
Revisa el informe de incumplimiento de la IaC
En tu repositorio de GitHub, haz clic en Acciones 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 incumplimiento (
ias-scan-sarif.json
) está disponible en un archivo ZIP. El informe incluye las siguientes campos:- Un campo
rules
en el que se describe qué políticas incumplió el terraform plan. Cada regla incluye unruleID
que puedes hacer coincidir con el resultados que se incluyen en el informe. - Un campo
results
en el que se describen las modificaciones de los recursos propuestos que infringen una regla específica.
- Un campo
Resuelve cualquier incumplimiento en tu código de Terraform antes de aplicarlo.
¿Qué sigue?
- Ver la acción de analyze-code-security-scc código fuente en GitHub.