La autorización binaria para GKE en Bare Metal es una función de Google Cloud que extiende la aplicación alojada y en el momento de la implementación de la autorización binaria a los clústeres locales. El caso de uso principal para la autorización binaria en GKE en Bare Metal es proteger las cargas de trabajo, pero la autorización binaria funciona con todos los tipos de clústeres. Sigue los pasos que se indican en esta guía para aplicar a tus clústeres las reglas de aplicación de una política de autorización binaria configurada en el proyecto de Google Cloud. Para obtener más información sobre las políticas y reglas de la autorización binaria, consulta Descripción general de la autorización binaria.
Requisitos previos
Antes de habilitar la aplicación de la política de autorización binaria para un clúster, asegúrate de cumplir con los siguientes requisitos previos:
Registrar el clúster con una flota:Un clúster creado con
bmctl
se registra en el proyecto de Google Cloud que especificas en el campogkeConnect.projectID
del archivo de configuración del clúster. Este proyecto se denomina proyecto host de la flota. Para obtener más información sobre las flotas, incluidos los casos de uso, las prácticas recomendadas y ejemplos, consulta la documentación sobre la administración de flotas.Habilita la API de Binary Authorization en tu proyecto de Google Cloud: Habilita el servicio de Autorización binaria en el proyecto host de la flota.
Agrega el rol Evaluador de políticas de autorización binaria al proyecto host de la flota: Para otorgar el rol Evaluador de políticas de autorización binaria (
roles/binaryauthorization.policyEvaluator
) a la cuenta de servicio de Kubernetes en el proyecto host de la flota, ejecuta el siguiente comando:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \ --role="roles/binaryauthorization.policyEvaluator"
Si el clúster se ejecuta detrás de un servidor proxy, asegúrate de que este permita conexiones a la API de autorización binaria (
binaryauthorization.googleapis.com
). Esta API proporciona validación de implementación basada en políticas y control para las imágenes implementadas en tu clúster. Si quieres obtener más información para usar una configuración de proxy, consulta Cómo realizar la instalación detrás de un proxy.
Una vez que cumplas con los requisitos previos, puedes habilitar (o inhabilitar) la política de autorización binaria cuando crees un clúster nuevo o actualices uno existente.
Habilita la política de autorización binaria durante la creación del clúster
Puedes habilitar la aplicación de la política de Autorización Binaria con bmctl
o gcloud CLI.
bmctl
Para habilitar la autorización binaria cuando creas un clúster con bmctl
, haz lo siguiente:
Antes de crear el clúster, agrega
spec.binaryAuthorization.evaluationMode
al archivo de configuración del clúster como se muestra en el siguiente ejemplo:... --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-basic namespace: cluster-user-basic spec: type: user ... binaryAuthorization: evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
Los valores permitidos para
evaluationMode
son los siguientes:PROJECT_SINGLETON_POLICY_ENFORCE
: Aplica las reglas especificadas en la política de autorización binaria, también conocida como política de proyecto singleton, en tu proyecto de Google Cloud para regular la implementación de imágenes de contenedor en el clúster.DISABLE
: Inhabilita el uso de Autorización Binaria para tu clúster. Este es el valor predeterminado. Si omitesbinaryAuthorization
, se inhabilita la función.
Realiza cualquier otro cambio necesario en el archivo de configuración del clúster y, luego, ejecuta el comando
bmctl create cluster
.
Para obtener más información sobre la creación de clústeres, consulta Descripción general de la creación de clústeres.
gcloud CLI
Para crear un clúster de usuario y habilitar la autorización binaria, agrega la marca
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
cuando ejecutes el comandogcloud container bare-metal clusters create
.Esto crea un clúster de usuario que aplica las reglas especificadas en la política de la autorización binaria, también conocida como política de proyecto único. Esta política está asociada a tu proyecto de Google Cloud y especifica reglas para regular la implementación de imágenes de contenedor. Si quieres obtener más información sobre el uso de gcloud CLI para crear un clúster de usuario, consulta Crea un clúster de usuario con clientes de la API de GKE On-Prem. Para obtener más información sobre las políticas y reglas de la autorización binaria, consulta Descripción general de la autorización binaria.
Habilita o inhabilita la política de Autorización Binaria para un clúster existente
Si tienes un clúster existente de la versión 1.16 o posterior, puedes habilitar o inhabilitar la autorización binaria en cualquier momento mediante bmctl
o gcloud CLI.
bmctl
Para habilitar la función, sigue estos pasos:
Edita el archivo de configuración del clúster para agregar los campos
binaryAuthorization
:... --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-basic namespace: cluster-user-basic spec: type: user ... binaryAuthorization: evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
Actualiza el clúster:
bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIG
Reemplaza lo siguiente:
CLUSTER_NAME
: es el nombre del clúster que se actualizará.CLUSTER_KUBECONFIG
: Es la ruta de acceso al archivo kubeconfig del clúster.
Espera a que la Deployment llamada
binauthz-module-deployment
en el espacio de nombresbinauthz-system
esté lista.Cuando la implementación está lista, la autorización binaria aplica las reglas especificadas en la política de la autorización binaria, también conocida como política de project-singleton. Esta política se asocia a tu proyecto de Google Cloud y especifica las reglas para regular la implementación de imágenes de contenedor. Si quieres obtener más información sobre el uso de
bmctl
para actualizar un clúster, consulta Actualiza clústeres. Para obtener más información sobre las políticas y reglas de la autorización binaria, consulta Descripción general de la autorización binaria.
Para ello, sigue estos pasos:
Esta función se puede desactivar si configuras
evaluationMode
enDISABLED
o si quitas la secciónbinaryAuthorization
de la especificación del clúster. Una vez que se realice este cambio, espera unos minutos hasta que se quite el Deployment llamadobinauthz-module-deployment
en el espacio de nombresbinauthz-system
.
gcloud CLI
Para habilitar la autorización binaria en un clúster existente, agrega la marca
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
cuando ejecutes el comandogcloud container bare-metal clusters update
.Esto actualiza un clúster de usuario para que la autorización binaria aplique las reglas especificadas en la política de la autorización binaria, también conocida como política de project-singleton. Esta política se asocia a tu proyecto de Google Cloud y especifica las reglas para regular la implementación de imágenes de contenedor. Si quieres obtener más información sobre el uso de gcloud CLI para actualizar un clúster de usuario, consulta gcloud container bare-metal clusters update en la referencia de gcloud CLI. Para obtener más información sobre las políticas y reglas de la autorización binaria, consulta Descripción general de la autorización binaria.
Para inhabilitar la autorización binaria en un clúster existente, ejecuta el comando
gcloud container bare-metal clusters update
con la marca--binauthz-evaluation-mode=DISABLED
.
Soluciona problemas
Si no cumples con todos los requisitos previos, es posible que no veas ninguna indicación temprana de un problema. Si la autorización binaria comienza a no responder a las solicitudes de creación de Pods, verifica status.conditions
para el ReplicaSet. Un mensaje como el siguiente indica que hay un problema con la configuración de la autorización binaria:
failed to validate Binary Authorization policy (1) Ensure the Binary Authorization API is enabled for your Google Cloud project: gcloud services enable binaryauthorization.googleapis.com --project=PROJECT_ID (2) Ensure an IAM policy binding is in place granting binaryauthorization.policyEvaluator role to the binauthz-system/binauthz-agent Kubernetes service account: gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \ --role=roles/binaryauthorization.policyEvaluator