Integra la validación de IaC con Acciones de GitHub

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 GitHub Actions. La validación de la IaC te permite determinar si las definiciones de recursos de Terraform vulneran las políticas existentes 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 la IaC, consulta Cómo validar tu IaC en función de las políticas de tu organización de Google Cloud.

Antes de comenzar

Completa estas tareas para comenzar a usar la validación de 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 habilitan las APIs de securityposture.googleapis.com y securitycentermanagement.googleapis.com.

Cree una cuenta de servicio

Crea una cuenta de servicio que puedas usar para la acción Analizar seguridad del código.

  1. In the Google Cloud console, go to the Create service account page.

    Go to Create service account
  2. Select your project.
  3. 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.

  4. Click Create and continue.
  5. 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.

  6. Click Continue.
  7. 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 activaciones a nivel de la organización.

Configura la autenticación

  1. Configura la federación de Workload Identity con tu proveedor de identidad de GitHub. Para obtener instrucciones, consulta Federación de identidades para cargas de trabajo.

  2. Obtén la URL de tu token de ID de la federación de Workload Identity. 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.
  3. 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 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 se indican en Crea y, luego, implementa una postura.

Crea el archivo JSON de tu plan de Terraform

  1. Crea tu código de Terraform. Para obtener instrucciones, consulta Crea tu código de Terraform.

  2. En tus Acciones de GitHub, inicializa Terraform. Por ejemplo, si usas la acción HashiCorp - Setup Terraform, ejecuta el siguiente comando:

    - name: Terraform Init
      id: init
      run: terraform init
    
  3. 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 archivo de plan de Terraform. Por ejemplo, myplan.tfplan

  4. Convierte el 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_FILE
    

    Reemplaza TF_PLAN_JSON_FILE por 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

  1. En el repositorio de GitHub, navega hasta tu flujo de trabajo.
  2. Abre el editor de flujos de trabajo.
  3. En la barra lateral de GitHub Marketplace, busca Analyze Code Security.
  4. En la sección Instalación, copia la sintaxis.
  5. Pega la sintaxis como un paso nuevo en tu flujo de trabajo.
  6. Reemplaza los siguientes valores:

    • workload_identity_provider con el vínculo a la URL de tu token de ID de la federación de identidades para cargas de trabajo.
    • service_account por la dirección de correo electrónico de la cuenta de servicio que creaste para la acción.
    • organization_id por el ID de la organización de Google Cloud.
    • scan_file_ref con la ruta de acceso al archivo de plan de Terraform, en formato JSON.
    • failure_criteria con los criterios de umbral de fallas que determinan cuándo falla la acción. Los criterios de umbral se basan en la cantidad de problemas de gravedad crítica, alta, media y baja que encuentra el análisis de validación de IaC. failure_criteria especifica cuántos problemas de cada gravedad se permiten y cómo se agregan (AND o OR). Por ejemplo, si deseas que la acción falle si encuentra un problema grave o uno de gravedad alta, 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 el análisis de validación de IaC encuentra 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 Cómo ejecutar un flujo de trabajo de forma manual.

Consulta el informe de incumplimientos de IaC

  1. En tu repositorio de GitHub, haz clic en Actions y selecciona tu flujo de trabajo.

  2. Haz clic en la ejecución más reciente de tu flujo de trabajo.

    En la sección Artefactos, el informe de incumplimientos (ias-scan-sarif.json) está disponible en un archivo ZIP. El informe incluye los siguientes campos:

    • Un campo rules que describe qué políticas incumplió el plan de Terraform. Cada regla incluye un ruleID que puedes hacer coincidir con los resultados que se incluyen en el informe.
    • Un campo results que describe las modificaciones de recursos propuestas que violan una regla específica.
  3. Soluciona los incumplimientos en tu código de Terraform antes de aplicarlo.

¿Qué sigue?