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 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 recursos de Google Cloud .
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 organización de Google Cloud .
Antes de empezar
Completa estas tareas para empezar a usar la validación de la 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.
Si activas Security Command Center, se habilitarán las APIs de securityposture.googleapis.com
y securitycentermanagement.googleapis.com.
Configura los permisos
-
Make sure that you have the following role or roles on the organization:
- Security Posture Shift-Left Validator
- Log Writer
- Storage Writer
- Storage Reader
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the organization.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Ir a IAM - Selecciona la organización.
- Haz clic en Otorgar acceso.
-
En el campo Principales nuevas, ingresa tu identificador de usuario. Esta suele ser la dirección de correo electrónico de una Cuenta de Google.
- En la lista Seleccionar un rol, elige uno.
- Para otorgar roles adicionales, haz clic en Agregar otro rol y agrega uno más.
- Haz clic en Guardar.
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.
Habilita la API de Cloud Build
-
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
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 código de Terraform
Para obtener instrucciones, consulta Crea tu código de Terraform.
Valida tu IaC en Cloud Build
Agrega las tareas siguientes a tu archivo
cloudbuild.yaml:Inicializa Terraform:
- name: hashicorp/terraform args: - '-c' - | terraform init \ -backend-config="bucket=STATE_BUCKET" \ -backend-config="prefix=REPOSITORY_NAME" \ dir: FOLDER id: Terraform Init entrypoint: shReemplaza lo siguiente:
STATE_BUCKETpor el nombre del bucket de Cloud Storage en el que se almacenará el estado de TerraformREPOSITORY_NAMEpor el repositorio que aloja el código de TerraformFOLDERpor el nombre de la carpeta en la que se guardarán los artefactos de Terraform
Crea un archivo de plan:
- name: hashicorp/terraform args: - '-c' - | terraform plan -out tf.plan dir: FOLDER id: Terraform Plan entrypoint: shConvierte el archivo de plan al formato JSON:
- name: hashicorp/terraform args: - '-c' - | terraform show -json tf.plan > plan.json dir: FOLDER id: Terraform Show entrypoint: shCrea el informe de validación de la 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/bashReemplaza
ORGANIZATION_IDpor el ID de tu organización.Si usas Cloud Storage, sube el archivo JSON de los resultados a Cloud Storage:
- name: gcr.io/cloud-builders/gcloud args: - storage - cp - IaCScanReport_$BUILD_ID.json - SCAN_RESULT_FILE_BUCKET dir: FOLDER id: Upload report fileReemplaza
SCAN_RESULT_FILE_BUCKETpor el bucket de Cloud Storage en el que se subirá el archivo de resultados.Para ver los resultados en formato SARIF, haz 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/bashSube el archivo a Cloud Storage (opcional):
- name: gcr.io/cloud-builders/gcloud args: - storage - 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 los resultados que no convertiste en 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/bashReemplaza
FAILURE_CRITERIApor los criterios del umbral de error que determinan cuándo falla la compilació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, también, cómo se agregan (ya sea conANDoOR). Por ejemplo, si necesitas que la compilació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 un incumplimiento de cualquier gravedad, la compilación debe fallar.Si la compilación falla, resuelve los incumplimientos 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.