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
- Habilitar la autorización binaria.
- Crea un clúster.
- 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.
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, Distributed Cloud, Cloud Run y Cloud 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:
defaultAdmissionRule: enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG evaluationMode: ALWAYS_ALLOW globalPolicyEvaluationMode: ENABLE 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.
Para agregar una imagen exenta a la lista de entidades permitidas, agrega lo siguiente al archivo de políticas:
admissionWhitelistPatterns: - namePattern: EXEMPT_IMAGE_PATH
Reemplaza EXEMPT_IMAGE_PATH
por la ruta de acceso a la imagen que se exime. Para eximir imágenes adicionales, agrega entradas - namePattern
adicionales. Obtén más información sobre admissionWhitelistPatterns
.
Configura la regla predeterminada
Esta sección se aplica a GKE, Distributed Cloud, Cloud Run y Cloud 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 especificasREQUIRE_ATTESTATION
, también debes agregar un bloquerequireAttestationsBy
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
enREQUIRE_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, Distributed Cloud, Cloud Run y Cloud 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 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 ruta de acceso 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 Distributed Cloud.
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 Distributed Cloud.
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, los clústeres conectados de GKE y GKE on AWS, el formato es
CLUSTER_LOCATION.CLUSTER_NAME
; por ejemplo,us-central1-a.test-cluster
.Para el software de Google Distributed Cloud (clústeres de GKE en equipos físicos o 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. Para ver un ejemplo de una regla específica del clúster, consulta Políticas de ejemplo.
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 especificasREQUIRE_ATTESTATION
, también debes agregar un bloquerequireAttestationsBy
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
enREQUIRE_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 Cloud Service Mesh
Para establecer una regla para una identidad de servicio de Cloud Service Mesh, 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 Cloud 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 especificasREQUIRE_ATTESTATION
, también debes agregar un bloquerequireAttestationsBy
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
enREQUIRE_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 especificasREQUIRE_ATTESTATION
, también debes agregar un bloquerequireAttestationsBy
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
enREQUIRE_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 especificasREQUIRE_ATTESTATION
, también debes agregar un bloquerequireAttestationsBy
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
enREQUIRE_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, Distributed Cloud, Cloud Run y Cloud 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?
- Usa el certificador
built-by-cloud-build
para implementar solo imágenes compiladas por Cloud Build. - Usa certificaciones.
- Implementa una imagen de GKE.