Integra la validación de IaC en Cloud Build

Puedes escribir una configuración de compilación le indica a Cloud Build que valide la infraestructura como código (IaC). que es parte de tu compilación. La validación de la IaC te permite determinar si tu Las definiciones de recursos de Terraform infringen las políticas 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 IaC, consulta Valida tu IaC con tu de la organización de Google Cloud políticas.

Antes de comenzar

Completa estas tareas para comenzar 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 se activa en el a nivel de la organización.

La activación de Security Command Center habilita el securityposture.googleapis.com y APIs de securitycentermanagement.googleapis.com.

Configura los permisos

  1. 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

    1. En la consola de Google Cloud, ve a la página IAM.

      Ir a IAM
    2. Selecciona la organización.
    3. 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.

    4. 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

    1. En la consola de Google Cloud, ve a la página IAM.

      Ir a IAM
    2. Selecciona la organización.
    3. Haz clic en Grant access.
    4. En el campo Principales nuevas, ingresa tu dirección de correo electrónico.
    5. En la lista Seleccionar un rol, elige un rol.
    6. Para otorgar funciones adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.
    7. Haz clic en Guardar.

Para obtener más información sobre los permisos de validación de IaC, consulta IAM para el nivel de organización activaciones.

Habilita la API de Cloud Build

  1. Habilita la API de Cloud Build.

    Habilita la API

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 de Crear y implementar un postura de seguridad en la nube.

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:

  1. 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 Terraform en
    • REPOSITORY_NAME por el repositorio que aloja tu el código de Terraform.
    • FOLDER por el nombre de la carpeta en la que se guardará el archivo de configuración artefactos.
  2. Crea un archivo del plan:

    - name: hashicorp/terraform
      args:
        - '-c'
        - |
          terraform plan -out tf.plan
      dir: FOLDER
      id: Terraform Plan
      entrypoint: sh
    
  3. 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
    
  4. 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.

  5. 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 El bucket de Cloud Storage al que se subirá el archivo de resultados.

  6. Para ver los resultados en formato SARIF, completa lo siguiente:

    1. 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
      
    2. 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
      
  7. Valida los resultados. Completa este paso en la resultados JSON que no hayas convertido 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 el umbral de fallas. que determinan cuándo falla la compilació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 cuántos problemas de cada gravedad se permiten y especifica cómo se agregan los problemas (AND o OR). Por ejemplo, si desean que la compilación falle si encuentra un problema crítico o un error grave, establece FAILURE_CRITERIA en Critical:1,High:1,Operator:OR. El valor predeterminado es Critical:1,High:1,Medium:1,Low:1,Operator:OR, lo que significa que, si la IaC de validación detecta una infracción de cualquier gravedad, la compilación debe fallar.

  8. Si la compilación falla, resuelve cualquier incumplimiento en tu código de Terraform.

¿Qué sigue?