Puedes escribir una configuración de compilación que le indique a Cloud Build que valide la infraestructura como código (IaC) que forma parte de tu compilación. La validación de la IaC te permite determinar si las definiciones de recursos de Terraform infringen las políticas 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 IaC, consulta Valida tu IaC según las políticas de la organización de Google Cloud.
Antes de comenzar
Completa estas tareas para comenzar a usar la validación de IaC con Cloud Build.
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 las APIs de securityposture.googleapis.com
y securitycentermanagement.googleapis.com
.
Configurar los permisos
-
Asegúrate de tener los siguientes roles en la organización:
- Security Posture Shift-Left Validator
- Log Writer
- Storage Writer
- Storage Reader
Verifica los roles
-
En la consola de Google Cloud, ve a la página IAM.
Ir a IAM - Selecciona la organización.
-
En la columna Principal, busca la fila que tiene tu dirección de correo electrónico.
Si tu dirección de correo electrónico no está en esa columna, no tienes ningún rol.
- En la columna Función de la fila con la dirección de correo electrónico, verifica si la lista de roles incluye los roles necesarios.
Otorga los roles
-
En la consola de Google Cloud, ve a la página IAM.
Ir a IAM - Selecciona la organización.
- Haz clic en Grant access.
- En el campo Principales nuevas, ingresa tu dirección de correo electrónico.
- En la lista Seleccionar un rol, elige un rol.
- Para otorgar funciones adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.
- Haz clic en Guardar.
Si quieres obtener más información sobre los permisos de validación de IaC, consulta IAM para activaciones a nivel de la organización.
Habilita la API de Cloud Build
-
Habilita la API de Cloud Build.
Define tus políticas
Define las 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 que se encuentran en Crea e implementa una postura.
Crea tu código de Terraform
Para obtener instrucciones, consulta Crea tu código de Terraform.
Valida tu IAC en Cloud Build
Agrega las siguientes tareas a tu archivo cloudbuild.yaml
:
Inicializa Terraform mediante este comando:
- name: hashicorp/terraform args: - '-c' - | terraform init \ -backend-config="bucket=STATE_BUCKET" \ -backend-config="prefix=REPOSITORY_NAME" \ dir: FOLDER id: Terraform Init entrypoint: sh
Reemplaza lo siguiente:
STATE_BUCKET
por el nombre del bucket de Cloud Storage para almacenar el estado de TerraformREPOSITORY_NAME
por el repositorio que aloja el código de TerraformFOLDER
por el nombre de la carpeta en la que se guardarán los artefactos de Terraform
Crea un archivo del plan:
- name: hashicorp/terraform args: - '-c' - | terraform plan -out tf.plan dir: FOLDER id: Terraform Plan entrypoint: sh
Convierte el archivo del plan al formato JSON:
- name: hashicorp/terraform args: - '-c' - | terraform show -json tf.plan > plan.json dir: FOLDER id: Terraform Show entrypoint: sh
Crea el informe de validación de IaC:
- name: gcr.io/cloud-builders/gcloud args: - '-c' - | gcloud scc iac-validation-reports create \ organizations/ORGANIZATION_ID/locations/global --tf-plan-file=plan.json \ --format="json(response.iacValidationReport)" > IaCScanReport_$BUILD_ID.json dir: FOLDER id: Run IaC scan entrypoint: /bin/bash
Reemplaza
ORGANIZATION_ID
por el ID de tu organización.Si usas Cloud Storage, sube el archivo de resultados JSON a Cloud Storage:
- name: gcr.io/cloud-builders/gsutil args: - cp - IaCScanReport_$BUILD_ID.json - SCAN_RESULT_FILE_BUCKET dir: FOLDER id: Upload report file
Reemplaza
SCAN_RESULT_FILE_BUCKET
por el bucket de Cloud Storage al que deseas subir el archivo de resultados.Para ver los resultados en formato SARIF, completa lo siguiente:
Convierte el archivo:
- name: golang args: - '-c' - | go run github.com/google/gcp-scc-iac-validation-utils/SARIFConverter@latest \ --inputFilePath=IaCScanReport_$BUILD_ID.json --outputFilePath=IaCScanReport_$BUILD_ID.sarif.json dir: FOLDER id: Convert to SARIF format entrypoint: /bin/bash
Sube el archivo a Cloud Storage (opcional):
- name: gcr.io/cloud-builders/gsutil args: - cp - IaCScanReport_$BUILD_ID.sarif.json - SCAN_RESULT_FILE_BUCKET dir: FOLDER id: Upload report file
Valida los resultados. Completa este paso en el archivo JSON de resultados que no convertiste al formato SARIF:
- name: golang args: - '-c' - | go run github.com/google/gcp-scc-iac-validation-utils/ReportValidator@latest \ --inputFilePath=IaCScanReport_$BUILD_ID.json --failure_expression=FAILURE_CRITERIA dir: FOLDER id: Validate results entrypoint: /bin/bash
Reemplaza
FAILURE_CRITERIA
por los criterios del umbral de fallas que determinan cuándo falla la compilación. El criterio de umbral se basa en la cantidad de problemas críticos, de gravedad alta, media y baja que encuentra el análisis de validación de la IaC.FAILURE_CRITERIA
especifica cuántos problemas de cada gravedad se permiten y también especifica cómo se agrupan los problemas (AND
oOR
). Por ejemplo, si deseas que la compilación falle si encuentra un problema crítico 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 la IaC encuentra una violación de alguna gravedad, la compilación debe fallar.Si la compilación falla, resuelve cualquier incumplimiento en tu código de Terraform.
¿Qué sigue?
- Consulta el informe de validación de la IaC en Cloud Storage.
- Revisa las secuencias de comandos de validación de la IaC en GitHub.
- Revisa la muestra de
cloud.yaml
.