Usa la validación continua

En esta página, se muestra cómo usar la validación continua (CV) con la autorización binaria.

La validación continua es una función de la autorización binaria que verifica de forma periódica las imágenes de contenedor asociadas con los Pods en ejecución para garantizar el cumplimiento continuo de las políticas. Los resultados de CV registran los resultados en Cloud Logging.

Antes de comenzar

  1. Debes tener configurada la autorización binaria para Google Kubernetes Engine.

  2. Selecciona el ID del proyecto para el que instalaste la autorización binaria. En CV se registran los eventos de conformidad de la política de los Pods en todos los clústeres del proyecto.

Configurar funciones de IAM para CV

Las funciones de administración de identidades y accesos (IAM) incluyen permisos y se pueden asignar a usuarios, grupos y cuentas de servicio. Las siguientes funciones incluyen los permisos enumerados para CV:

Nombre de la función Permisos de CV Descripción
roles/binaryauthorization.policyEditor binaryauthorization.continuousValidationConfig.update Inhabilita y habilita el CV.

Habilitar CV

Console

Para habilitar CV mediante Cloud Console, haz lo siguiente:

  1. En Cloud Console, ve a la página Política de la autorización binaria.

    Ir a Política de autorización binaria

  2. Haz clic en la pestaña Política.

  3. Haz clic en Editar política.

  4. Selecciona la casilla de verificación Validación continua.

  5. Haga clic en Save Policy.

API de REST

Para habilitar CV con la API de REST, haz lo siguiente:

  1. Almacena el ID del proyecto:

    DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID
    

    Reemplaza DEPLOYER_PROJECT_ID por el ID del proyecto en el que ejecutas GKE.

  2. Obtén el token de OAuth para GCP.

    BEARER_TOKEN=$(gcloud auth print-access-token)
    

    El token solo es válido durante un período breve.

  3. Habilitar CV:

    curl "https://binaryauthorization.googleapis.com/v1alpha2/projects/${DEPLOYER_PROJECT_ID}/continuousValidationConfig" -X PUT -H "authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" --data '{"enforcementPolicyConfig": {"enabled": "true"}}'
    

El CV ahora está configurado para registrar eventos.

La entrada de registro de Logging es similar al siguiente ejemplo:

{
  "insertId": "6054e143-0000-2562-aa64-883d24f57e70",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.binaryauthorization.v1beta1.ContinuousValidationEvent",
    "podEvent": {
      "images": [
        {
          "description": "Image <var>IMAGE_NAME@IMAGE_DIGEST</var> denied by
           attestor projects/<var>ATTESTOR_PROJECT_ID</var>/attestors/<var>ATTESTOR_NAME</var>:
           No attestations found that were valid and signed by a key trusted by
           the attestor",
          "image": "<var>IMAGE_NAME@IMAGE_DIGEST</var>",
          "result": "DENY"
        }
      ],
      "verdict": "VIOLATES_POLICY",
      "deployTime": "2021-03-19T17:00:08Z",
      "pod": "<var>POD_NAME</var>"
    }
  },
  "resource": {
    "type": "k8s_cluster",
    "labels": {
      "cluster_name": "<var>CLUSTER_NAME</var>",
      "location": "<var>CLUSTER_LOCATION</var>",
      "project_id": "<var>DEPLOYER_PROJECT_ID</var>"
    }
  },
  "timestamp": "2021-03-19T17:15:43.872702342Z",
  "severity": "WARNING",
  "logName": "projects/<var>DEPLOYER_PROJECY_ID</var>/logs/binaryauthorization.googleapis.com%2Fcontinuous_validation",
  "receiveTimestamp": "2021-03-19T17:57:00.432116179Z"
}

Si deseas obtener información para consultar eventos de CV, consulta Visualiza eventos de CV en Cloud Logging.

Inhabilitar el CV

Console

Para inhabilitar CV con Cloud Console, haz lo siguiente:

  1. En Cloud Console, ve a la página Autorización binaria:

    Ir a Política de autorización binaria

  2. Haz clic en la pestaña Política.

  3. Haz clic en Editar política.

  4. Desmarca la casilla de verificación Validación continua.

  5. Haga clic en Save Policy.

API de REST

Para inhabilitar CV con la API de REST, haz lo siguiente:

  1. Almacena el ID del proyecto:

    DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID
    

    Reemplaza DEPLOYER_PROJECT_ID por el ID del proyecto en el que ejecutas GKE.

  2. Obtén el token de OAuth para GCP.

    BEARER_TOKEN=$(gcloud auth print-access-token)
    

    El token solo es válido durante un período breve.

  3. Inhabilita CV con el siguiente comando:

    curl "https://binaryauthorization.googleapis.com/v1alpha2/projects/${DEPLOYER_PROJECT_ID}/continuousValidationConfig" -X PUT -H "authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" --data '{"enforcementPolicyConfig": {"enabled": "false"}}'
    

Visualiza los eventos de CV en Cloud Logging

Después de habilitar CV, registra con regularidad todos los Pods que infringen la política de autorización binaria en Cloud Logging.

Estas entradas de registro contienen el siguiente nombre de registro:

logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"

Explorador de registros

Para ver los eventos de CV en Cloud Logging mediante el explorador de registros, haz lo siguiente:

  1. Ir al Explorador de registros

  2. Selecciona el ID del proyecto en el que habilitaste Google Cloud's operations suite.

  3. Ingresa la siguiente consulta en el cuadro de búsqueda:

    logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
    
  4. Selecciona el rango de tiempo en el selector de rango de tiempo.

Visor de registros heredado

Para ver los eventos de CV en Cloud Logging mediante el Visor de registros heredado, haz lo siguiente:

  1. Ir al Explorador de registros

  2. Selecciona Volver al visor de registros heredados en el menú desplegable Opciones.

  3. Elige el proyecto de Google Cloud para el que configuraste Google Cloud's operations suite.

  4. Ingresa la siguiente consulta en el cuadro de búsqueda:

    logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
    
  5. Selecciona el rango de tiempo en el selector de rango de tiempo.

gcloud

Para ver los eventos de CV de la última semana en Cloud Logging con gcloud, ejecuta el siguiente comando:

gcloud logging read --order="desc" --freshness=7d \
  'logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"'

¿Qué sigue?