Usar la validación continua heredada

Esta página está dirigida a usuarios de CV heredado.

La validación continua (CV) ahora admite políticas de la plataforma con verificaciones. Si es la primera vez que usas el CV, te recomendamos que lo uses con políticas de plataforma. Si usas un CV heredado, te recomendamos que actualices las políticas de singleton de tu proyecto a las políticas de la plataforma.

El CV es una función de la Autorización binaria que verifica periódicamente las imágenes de contenedor asociadas con los Pods en ejecución para garantizar el cumplimiento continuo de la política de singleton del proyecto de Autorización binaria. Los registros de CV se registran en Cloud Logging.

La CV no finaliza los Pods en ejecución.

Limitaciones

La CV tiene las siguientes limitaciones:

  • La CV solo es compatible con los Pods implementados en Google Kubernetes Engine (GKE).
  • CV no admite políticas de autorización binaria que especifiquen reglas específicas para identidades de servicio de Anthos Service Mesh, cuentas de servicio de Kubernetes o espacios de nombres de Kubernetes.

Antes de comenzar

  1. Asegúrate de haber configurado la autorización binaria para Google Kubernetes Engine.

  2. Selecciona el ID del proyecto para el que instalaste la autorización binaria. El CV registra los eventos de cumplimiento de las políticas de los Pods en todos los clústeres del proyecto.

  3. Asegúrate de que gcloud CLI esté actualizada a la versión más reciente

Permisos necesarios

Las funciones de Identity and Access Management (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 la CV.

Para configurar los permisos de IAM necesarios, ejecuta los siguientes comandos:

PROJECT_NUMBER=$(gcloud projects list \
  --filter="projectId:ATTESTATION_PROJECT_ID" \
  --format="value(PROJECT_NUMBER)")
SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding ATTESTATION_PROJECT_ID \
    --member="serviceAccount:$SERVICE_ACCOUNT" \
    --role='roles/containeranalysis.occurrences.viewer'

Habilitar CV heredado

Consola

Para habilitar el CV con la consola de Google Cloud, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Política de 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. Expande la sección Configuración adicional para implementaciones de GKE y Anthos.

  5. Selecciona la casilla de verificación Habilitar la validación continua.

  6. Haga clic en Save Policy.

API de REST

Para habilitar la 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 Google Cloud.

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

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

  3. Habilita la 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"}}'
    

La CV ahora está configurada 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, revisa Visualiza eventos de CV en Cloud Logging.

Soluciona problemas

La CV usa otros servicios de Google Cloud, como Cloud Asset Inventory y Pub/Sub. En los casos en que la CV falla, puedes verificar los errores de Cloud Asset Inventory en Cloud Logging.

Además, la CV crea un recurso de feed llamado binauthz-cv-cai-feed. Borrar o modificar el feed podría hacer que la CV falle. La CV restablece automáticamente los feeds faltantes o modificados, pero puede que no registre los resultados hasta que lo haga.

Inhabilita la CV

Consola

Para inhabilitar la CV con la consola de Google Cloud, haz lo siguiente:

  1. En la consola de Google Cloud, 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 Habilitar la validación continua.

  5. Haga clic en Save Policy.

API de REST

Para inhabilitar la 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 Google Cloud.

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

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

  3. Inhabilita la 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 la CV, esta 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 Explorador de registros, 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?