Configura una política mediante la CLI de gcloud

En esta página, se proporcionan instrucciones para configurar una política de autorización binaria mediante Google Cloud CLI. Como alternativa, también puedes realizar estas tareas con la consola de Google Cloud o la API de REST. Este paso forma parte de la configuración de la autorización binaria.

Para configurar una política con la herramienta de línea de comandos, exporta la política existente como un archivo YAML. Después de modificar el archivo, puedes importarlo para actualizar la política, como se describe más adelante en esta guía. Para obtener más información sobre el formato YAML de la política, consulta Referencia de la política de YAML.

Antes de comenzar

  1. Habilitar la autorización binaria.
  2. Crea un clúster.
  3. Si deseas usar certificaciones, te recomendamos que crees certificadores antes de configurar la política. Puedes crear certificadores mediante una herramienta de línea de comandos o la consola de Google Cloud.
  4. Configura el ID del proyecto en el que habilitaste la autorización binaria:

    PROJECT_ID=PROJECT_ID
    gcloud config set project ${PROJECT_ID}
    

Exporta el archivo de políticas en formato YAML

Esta sección se aplica a GKE, clústeres de GKE, Cloud Run y Anthos Service Mesh.

Para actualizar la política, primero debes exportarla a un archivo YAML local de la siguiente manera:

gcloud container binauthz policy export > /tmp/policy.yaml

De forma predeterminada, el contenido del archivo es similar al siguiente:

admissionWhitelistPatterns:
- namePattern: gcr.io/google_containers/*
- namePattern: gcr.io/google-containers/*
- namePattern: k8s.gcr.io/**
- namePattern: gke.gcr.io/**
- namePattern: gcr.io/stackdriver-agents/*
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
  evaluationMode: EVALUATION_MODE
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
name: projects/PROJECT_ID/policy

Para modificar la política, edita el archivo y agrega o actualiza las secciones, como se describe más adelante en esta guía. Después de guardar el archivo, puedes importar la política.

Configura la regla predeterminada

Esta sección se aplica a GKE, clústeres de GKE, Cloud Run y Anthos Service Mesh.

Una regla es la parte de una política que define las restricciones que las imágenes de contenedor deben cumplir para que puedan implementarse. La regla predeterminada define las restricciones que se aplican a todas las imágenes no exentas que no tienen su propia regla específica del clúster. Cada política debe tener una regla predeterminada.

La regla predeterminada se define en el nodo defaultAdmissionRule del archivo de políticas en formato YAML. Para obtener más información sobre las partes de esta regla, consulta ADMISSION_RULE en la referencia de políticas en formato YAML. Para ver ejemplos de reglas predeterminadas, consulta Políticas de ejemplo.

Para configurar la regla predeterminada, edita el nodo defaultAdmissionRule en el archivo policy.yaml según sea necesario:

defaultAdmissionRule:
  evaluationMode: EVALUATION_MODE
  enforcementMode: ENFORCEMENT_MODE
  requireAttestationsBy:
  - ATTESTOR
  - ...

Reemplaza lo siguiente:

  • EVALUATION_MODE: El modo de evaluación especifica el tipo de restricción que el ejecutor de la autorización binaria aplica en el momento de la implementación. Reemplaza EVALUATION_MODE por una de las siguientes opciones:

    • ALWAYS_ALLOW: Permite implementar todas las imágenes.
    • ALWAYS_DENY: No permite que se implementen todas las imágenes.
    • REQUIRE_ATTESTATION: Permite implementar una imagen si tiene una o más certificaciones que pueden verificar todos los certificadores que agregas a esta regla. En el momento de la implementación, el ejecutor verifica la certificación mediante los certificadores que agregas a la lista ATTESTOR en esta regla. Para obtener información sobre cómo crear certificadores, consulta Crea certificadores. Si especificas REQUIRE_ATTESTATION, también debes agregar un bloque requireAttestationsBy que contenga al menos un certificador. Para obtener información sobre cómo crear certificadores, consulta Crea certificadores.
  • ENFORCEMENT_MODE: El modo de aplicación especifica cómo responde el ejecutor cuando una imagen infringe una regla. Reemplaza ENFORCEMENT_MODE por uno de los siguientes valores:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Bloquea las imágenes que infringen la regla y registra información sobre el incumplimiento en los Registros de auditoría de Cloud (predeterminado).
    • DRYRUN_AUDIT_LOG_ONLY: Permite que todas las imágenes se implementen, pero registra información sobre la aplicación, incluida información sobre incumplimientos, en los Registros de auditoría de Cloud.
  • ATTESTOR: Si configuras EVALUATION_MODE en REQUIRE_ATTESTATION, también debes agregar un bloque requireAttesationsBy. En el bloque, se enumeran uno o más certificadores, por ID de recurso. El ID de recurso tiene el siguiente formato:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Para obtener más información sobre cómo crear certificadores, consulta Crea certificadores.

Administra imágenes exentas

Esta sección se aplica a GKE, clústeres de GKE, Cloud Run y Anthos Service Mesh.

Una imagen exenta es una imagen que está exenta de las reglas de política. La autorización binaria siempre permite que se implementen imágenes exentas.

Para especificar imágenes exentas, enumera sus rutas de registro en admissionWhitelistPatterns. La ruta de acceso hace referencia a Container Registry o a otro registro de imágenes. En el momento de la implementación, la autorización binaria exime a la lista de imágenes especificadas por admissionWhitelistPatterns después de las imágenes que especifica la política del sistema.

Para agregar una imagen exenta, agrega un nodo namePattern en una lista admissionWhitelistPatterns en el archivo policy.yaml:

admissionWhitelistPatterns:
- namePattern: MATCHING_PATTERN

Reemplaza MATCHING_PATTERN por la ruta a una sola imagen en tu registro por coincidencia exacta o a cualquier imagen que coincida con un patrón que use el símbolo de comodín (*, **).

Cloud Run

Esta sección se aplica a Cloud Run.

No puedes especificar directamente los nombres de imágenes que contengan una etiqueta. Por ejemplo, no puedes especificar IMAGE_PATH:latest.

Si deseas especificar nombres de imágenes que contienen etiquetas, debes especificar el nombre de la imagen con un comodín de la siguiente manera:

  • * para todas las versiones de una sola imagen; por ejemplo, us-docker.pkg.dev/myproject/container/hello@*
  • ** para todas las imágenes de un proyecto; por ejemplo, us-docker.pkg.dev/myproject/**

Puedes usar nombres de rutas para especificar un resumen en el formato IMAGE_PATH@DIGEST.

Modo de evaluación de la política del sistema

Esta sección se aplica a GKE y clústeres de GKE.

El modo de evaluación de políticas del sistema es una configuración de política que hace que la autorización binaria evalúe una política del sistema antes de evaluar la política que configuraste. Google administra la política del sistema, que exime una lista de imágenes del sistema mantenidas por Google que GKE usa. La aplicación de las políticas no bloquea las imágenes enumeradas en la política del sistema. Si no habilitas la configuración, debes administrar la lista de imágenes exentas por tu cuenta. Obtén más información para administrar imágenes exentas.

Puedes ver el contenido del sistema global mediante el siguiente comando:

gcloud alpha container binauthz policy export-system-policy

Para habilitar el modo de evaluación del sistema global, agrega la siguiente línea al archivo policy.yaml:

globalPolicyEvaluationMode: ENABLE

Para inhabilitar el modo de evaluación del sistema global, agrega lo siguiente:

globalPolicyEvaluationMode: DISABLE

Puedes exportar la política del sistema asociada con una región específica de la siguiente manera:

gcloud alpha container binauthz policy export-system-policy \
  --location=REGION > /tmp/policy.yaml

Reemplaza REGION por la región asociada a la política del sistema que deseas exportar (o “global”). Los ejemplos incluyen: asia-east1, europe-west1, us-central1.

Si omites --location o especificas --location=global, el comando genera una política del sistema de una región en el último grupo de regiones para recibir actualizaciones. Debido a que la mayoría de los cambios en la política del sistema son adiciones, el resultado muestra el conjunto de imágenes del sistema que están permitidas en todas las regiones.

Configura reglas específicas del clúster (opcional)

Esta sección se aplica a GKE y clústeres de GKE.

Un clúster también puede tener una o más reglas específicas del clúster. Este tipo de regla se aplica solo a las imágenes que se deben implementar solo en clústeres de GKE específicos. Las reglas específicas del clúster son una parte opcional de una política.

Las reglas específicas del clúster se definen en los nodos clusterAdmissionRules en el archivo de la política en formato YAML. Para obtener más información sobre las partes de esta regla, consulta ADMISSION_RULE en la referencia de políticas en formato YAML. Para ver un ejemplo, consulta Usa una regla específica del clúster en las Políticas de ejemplo.

Para agregar una regla específica del clúster, haz lo siguiente:

En el archivo policy.yaml, agrega un nodo clusterAdmissionRules:

clusterAdmissionRules:
  CLUSTER_SPECIFIER:
    evaluationMode: EVALUATION_MODE
    enforcementMode: ENFORCEMENT_MODE
    requireAttestationsBy:
    - ATTESTOR
    - ...

Reemplaza lo siguiente:

  • CLUSTER_SPECIFIER: El ID del recurso del clúster al que se aplica la regla. Debes dar formato a la regla de la siguiente manera:

    • Para GKE, clústeres conectados de GKE y GKE on AWS, el formato es CLUSTER_LOCATION.CLUSTER_NAME, por ejemplo, us-central1-a.test-cluster.
    • Para GKE en Bare Metal y GKE en VMware, el formato es FLEET_MEMBERSHIP_LOCATION.FLEET_MEMBERSHIP_ID, por ejemplo, global.test-membership.

      Otras propiedades se describen en Configura la regla predeterminada, una sección anterior en esta guía. Consulta Políticas de ejemplo para ver un ejemplo de una regla específica del clúster.

  • EVALUATION_MODE: El modo de evaluación especifica el tipo de restricción que el ejecutor de la autorización binaria aplica en el momento de la implementación. Reemplaza EVALUATION_MODE por una de las siguientes opciones:

    • ALWAYS_ALLOW: Permite implementar todas las imágenes.
    • ALWAYS_DENY: No permite que se implementen todas las imágenes.
    • REQUIRE_ATTESTATION: Permite implementar una imagen si tiene una o más certificaciones que pueden verificar todos los certificadores que agregas a esta regla. En el momento de la implementación, el ejecutor verifica la certificación mediante los certificadores que agregas a la lista ATTESTOR en esta regla. Para obtener información sobre cómo crear certificadores, consulta Crea certificadores. Si especificas REQUIRE_ATTESTATION, también debes agregar un bloque requireAttestationsBy que contenga al menos un certificador. Para obtener información sobre cómo crear certificadores, consulta Crea certificadores.
  • ENFORCEMENT_MODE: El modo de aplicación especifica cómo responde el ejecutor cuando una imagen infringe una regla. Reemplaza ENFORCEMENT_MODE por uno de los siguientes valores:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Bloquea las imágenes que infringen la regla y registra información sobre el incumplimiento en los Registros de auditoría de Cloud (predeterminado).
    • DRYRUN_AUDIT_LOG_ONLY: Permite que todas las imágenes se implementen, pero registra información sobre la aplicación, incluida información sobre incumplimientos, en los Registros de auditoría de Cloud.
  • ATTESTOR: Si configuras EVALUATION_MODE en REQUIRE_ATTESTATION, también debes agregar un bloque requireAttesationsBy. En el bloque, se enumeran uno o más certificadores, por ID de recurso. El ID de recurso tiene el siguiente formato:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Para obtener más información sobre cómo crear certificadores, consulta Crea certificadores.

Configura reglas específicas (opcional)

Puedes crear reglas que se apliquen a una identidad de servicio de malla, una cuenta de servicio de Kubernetes o un espacio de nombres de Kubernetes.

Establece una regla para una identidad de servicio de Anthos Service Mesh

A fin de establecer una regla para una identidad de servicio de Anthos Service Mesh (vista previa), edita el archivo policy.yaml y agrega un bloque istioServiceIdentityAdmissionRules, por ejemplo:

defaultAdmissionRule:
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
istioServiceIdentityAdmissionRules:
  SERVICE_IDENTITY_ID:
    enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
    evaluationMode: ENFORCEMENT_MODE
    requireAttestationsBy:
    - <var>ATTESTOR</var>
    - ...

name: projects/PROJECT_ID/policy

Reemplaza lo siguiente:

  • SERVICE_IDENTITY_ID: La identidad del servicio de Anthos Service Mesh a la que se aplicará esta regla. La identidad del servicio tiene el siguiente formato: PROJECT_ID.svc.id.goog/ns/NAMESPACE/sa/SERVICE_ACCOUNT. En el ID de identidad del servicio, reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto en el que defines tus recursos de Kubernetes.
    • NAMESPACE: El espacio de nombres de Kubernetes.
    • SERVICE_ACCOUNT: La cuenta de servicio.
  • EVALUATION_MODE: El modo de evaluación especifica el tipo de restricción que el ejecutor de la autorización binaria aplica en el momento de la implementación. Reemplaza EVALUATION_MODE por una de las siguientes opciones:

    • ALWAYS_ALLOW: Permite implementar todas las imágenes.
    • ALWAYS_DENY: No permite que se implementen todas las imágenes.
    • REQUIRE_ATTESTATION: Permite implementar una imagen si tiene una o más certificaciones que pueden verificar todos los certificadores que agregas a esta regla. En el momento de la implementación, el ejecutor verifica la certificación mediante los certificadores que agregas a la lista ATTESTOR en esta regla. Para obtener información sobre cómo crear certificadores, consulta Crea certificadores. Si especificas REQUIRE_ATTESTATION, también debes agregar un bloque requireAttestationsBy que contenga al menos un certificador. Para obtener información sobre cómo crear certificadores, consulta Crea certificadores.
  • ENFORCEMENT_MODE: El modo de aplicación especifica cómo responde el ejecutor cuando una imagen infringe una regla. Reemplaza ENFORCEMENT_MODE por uno de los siguientes valores:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Bloquea las imágenes que infringen la regla y registra información sobre el incumplimiento en los Registros de auditoría de Cloud (predeterminado).
    • DRYRUN_AUDIT_LOG_ONLY: Permite que todas las imágenes se implementen, pero registra información sobre la aplicación, incluida información sobre incumplimientos, en los Registros de auditoría de Cloud.
  • ATTESTOR: Si configuras EVALUATION_MODE en REQUIRE_ATTESTATION, también debes agregar un bloque requireAttesationsBy. En el bloque, se enumeran uno o más certificadores, por ID de recurso. El ID de recurso tiene el siguiente formato:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Para obtener más información sobre cómo crear certificadores, consulta Crea certificadores.

Configurar una regla para una cuenta de servicio de Kubernetes

A fin de establecer una regla para una cuenta de servicio de Kubernetes, edita tu archivo policy.yaml y agrega un bloque kubernetesServiceAccountAdmissionRules, por ejemplo:

defaultAdmissionRule:
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
kubernetesServiceAccountAdmissionRules:
  KUBERNETES_SERVICE_ACCOUNT_ID:
    enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
    evaluationMode: ENFORCEMENT_MODE
    requireAttestationsBy:
    - <var>ATTESTOR</var>
    - ...
name: projects/PROJECT_ID/policy

Reemplaza lo siguiente:

  • KUBERNETES_SERVICE_ACCOUNT_ID: La cuenta de servicio de Kubernetes a la que se aplicará la regla. Este ID de cuenta de servicio tiene el siguiente formato: NAMESPACE:SERVICE_ACCOUNT. En el ID de la cuenta de servicio, reemplaza lo siguiente:

    • NAMESPACE: El espacio de nombres de Kubernetes.
    • SERVICE_ACCOUNT: El nombre de la cuenta de servicio.
  • EVALUATION_MODE: El modo de evaluación especifica el tipo de restricción que el ejecutor de la autorización binaria aplica en el momento de la implementación. Reemplaza EVALUATION_MODE por una de las siguientes opciones:

    • ALWAYS_ALLOW: Permite implementar todas las imágenes.
    • ALWAYS_DENY: No permite que se implementen todas las imágenes.
    • REQUIRE_ATTESTATION: Permite implementar una imagen si tiene una o más certificaciones que pueden verificar todos los certificadores que agregas a esta regla. En el momento de la implementación, el ejecutor verifica la certificación mediante los certificadores que agregas a la lista ATTESTOR en esta regla. Para obtener información sobre cómo crear certificadores, consulta Crea certificadores. Si especificas REQUIRE_ATTESTATION, también debes agregar un bloque requireAttestationsBy que contenga al menos un certificador. Para obtener información sobre cómo crear certificadores, consulta Crea certificadores.
  • ENFORCEMENT_MODE: El modo de aplicación especifica cómo responde el ejecutor cuando una imagen infringe una regla. Reemplaza ENFORCEMENT_MODE por uno de los siguientes valores:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Bloquea las imágenes que infringen la regla y registra información sobre el incumplimiento en los Registros de auditoría de Cloud (predeterminado).
    • DRYRUN_AUDIT_LOG_ONLY: Permite que todas las imágenes se implementen, pero registra información sobre la aplicación, incluida información sobre incumplimientos, en los Registros de auditoría de Cloud.
  • ATTESTOR: Si configuras EVALUATION_MODE en REQUIRE_ATTESTATION, también debes agregar un bloque requireAttesationsBy. En el bloque, se enumeran uno o más certificadores, por ID de recurso. El ID de recurso tiene el siguiente formato:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Para obtener más información sobre cómo crear certificadores, consulta Crea certificadores.

Establece una regla para un espacio de nombres de Kubernetes

A fin de establecer una regla para un espacio de nombres de Kubernetes, edita tu archivo policy.yaml y agrega un bloque kubernetesNamespaceAdmissionRules, por ejemplo:

defaultAdmissionRule:
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  evaluationMode: ALWAYS_DENY
globalPolicyEvaluationMode: ENABLE
kubernetesNamespaceAdmissionRules:
  KUBERNETES_NAMESPACE:
    enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
    evaluationMode: EVALUATION_MODE
    requireAttestationsBy:
    - <var>ATTESTOR</var>
    - ...
name: projects/PROJECT_ID/policy

Reemplaza lo siguiente:

  • KUBERNETES_NAMESPACE: El espacio de nombres de Kubernetes al que se aplicará esta regla.

  • EVALUATION_MODE: El modo de evaluación especifica el tipo de restricción que el ejecutor de la autorización binaria aplica en el momento de la implementación. Reemplaza EVALUATION_MODE por una de las siguientes opciones:

    • ALWAYS_ALLOW: Permite implementar todas las imágenes.
    • ALWAYS_DENY: No permite que se implementen todas las imágenes.
    • REQUIRE_ATTESTATION: Permite implementar una imagen si tiene una o más certificaciones que pueden verificar todos los certificadores que agregas a esta regla. En el momento de la implementación, el ejecutor verifica la certificación mediante los certificadores que agregas a la lista ATTESTOR en esta regla. Para obtener información sobre cómo crear certificadores, consulta Crea certificadores. Si especificas REQUIRE_ATTESTATION, también debes agregar un bloque requireAttestationsBy que contenga al menos un certificador. Para obtener información sobre cómo crear certificadores, consulta Crea certificadores.
  • ENFORCEMENT_MODE: El modo de aplicación especifica cómo responde el ejecutor cuando una imagen infringe una regla. Reemplaza ENFORCEMENT_MODE por uno de los siguientes valores:

    • ENFORCED_BLOCK_AND_AUDIT_LOG: Bloquea las imágenes que infringen la regla y registra información sobre el incumplimiento en los Registros de auditoría de Cloud (predeterminado).
    • DRYRUN_AUDIT_LOG_ONLY: Permite que todas las imágenes se implementen, pero registra información sobre la aplicación, incluida información sobre incumplimientos, en los Registros de auditoría de Cloud.
  • ATTESTOR: Si configuras EVALUATION_MODE en REQUIRE_ATTESTATION, también debes agregar un bloque requireAttesationsBy. En el bloque, se enumeran uno o más certificadores, por ID de recurso. El ID de recurso tiene el siguiente formato:

    projects/PROJECT_ID/attestors/ATTESTOR_NAME.

    Para obtener más información sobre cómo crear certificadores, consulta Crea certificadores.

Importa el archivo de políticas en formato YAML

Esta sección se aplica a GKE, clústeres de GKE, Cloud Run y Anthos Service Mesh.

Para volver a importar el archivo YAML de la política en la autorización binaria, ingresa lo siguiente:

gcloud container binauthz policy import /tmp/policy.yaml

¿Qué sigue?