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

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

Configura la autenticación

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

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

  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 utilizas Ejecuta el siguiente comando en HashiCorp - Setup Terraform action:

    - 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 plan de Terraform. . Por ejemplo, myplan.tfplan

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

  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 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 o OR). Por ejemplo, si quieres que la acción falle si encuentra un problema crítico o un problema de gravedad alta, establece la failure_criteria a 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 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

  1. En tu repositorio de GitHub, haz clic en Acciones 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 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 un ruleID 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.
  3. Resuelve cualquier incumplimiento en tu código de Terraform antes de aplicarlo.

¿Qué sigue?