Configura la puerta de enlace de Connect con Grupos de Google
Esta guía está dirigida a los administradores de la plataforma que necesitan configurar la puerta de enlace de Connect para que la usen las cuentas de usuarios del proyecto a través de Grupos de Google para la autorización. Antes de leer esta guía, debes familiarizarte con los conceptos de nuestra descripción general. Para autorizar cuentas individuales, consulta la configuración predeterminada.
Esta configuración permite que los usuarios accedan a los clústeres de flotas configurados a través de Google Cloud CLI, la puerta de enlace de Connect y la consola de Google Cloud.
Esta función usa Grupos de Google asociados con Google Workspace o cualquier edición de Cloud Identity.
Tipos de clústeres compatibles
Si usas clústeres de GKE con la puerta de enlace de Connect en Google Cloud, no necesitas seguir toda esta configuración con el servicio de identidad de GKE para usar Grupos de Google para la autorización. En su lugar, sigue las instrucciones en Configura Grupos de Google para RBAC, que también permite a los usuarios acceder a los clústeres de GKE desde la consola de Google Cloud con los Grupos de Google para el control de acceso. Una vez que hayas hecho esto, sigue las instrucciones que se indican a continuación en Otorga roles de IAM a Grupos de Google para permitir que los miembros del grupo accedan a los clústeres a través de la puerta de enlace de Connect.
Puedes configurar el control de acceso con Grupos de Google por medio de la puerta de enlace de Connect para clústeres de GKE registrados, clústeres en implementaciones de Google Distributed Cloud (locales) en VMware y en Bare Metal desde Anthos (GKE Enterprise) versión 1.13 en adelante y para GKE en AWS y GKE en Azure a partir de la versión 1.25 de Kubernetes. Si necesitas actualizar los clústeres locales para usar esta función, consulta Actualiza clústeres en VMWare y Actualiza clústeres en equipos físicos.
Para usar esta función con clústeres conectados o entornos de clústeres de GKE que no sean los mencionados anteriormente, comunícate con la Atención al cliente de Cloud o con el equipo de la puerta de enlace de Connect.
Cómo funciona
Como se describe en la descripción general, suele ser útil poder brindar a los usuarios acceso a los clústeres según su pertenencia a Grupos de Google, es decir, grupos creados en Google Workspace. La autorización basada en la pertenencia a un grupo significa que no tienes que configurar una autorización distinta para cada cuenta, lo que simplifica la administración de las políticas y facilita su auditoría. Por ejemplo, puedes compartir con facilidad el acceso al clúster a un equipo, sin la necesidad de agregar o quitar usuarios individuales de los clústeres cuando se unen al equipo o salen de él. Si realizas algunos pasos de configuración adicionales con GKE Identity Service, puedes configurar la puerta de enlace de Connect para obtener información de la pertenencia a un Grupo de Google para cada usuario que acceda al clúster. Luego, puedes usar esta información de los grupo en tus políticas de control de acceso.
A continuación, se muestra el flujo típico de un usuario que se autentica y ejecuta comandos en un clúster con este servicio habilitado. Para que este flujo funcione correctamente, debe existir una política de RBAC en el clúster para un grupo que cumpla con lo siguiente:
Contiene al usuario
alice@example.com
como miembro.Es un grupo anidado de
gke-security-groups@example.com
.
- El usuario
alice@example.com
accede con su identidad de Google y, si planea usar el clúster desde la línea de comandos, obtiene la puerta de enlace del clústerkubeconfig
como se describe en Usa la puerta de enlace de Connect. - El usuario envía una solicitud a través de la ejecución de un comando
kubectl
o la apertura de las páginas Cargas de trabajo o Navegador de objetos de Google Kubernetes Engine en la consola de Google Cloud. - El servicio de Connect, que realiza una verificación de autorización mediante IAM, recibe la solicitud.
- El servicio de Connect reenvía la solicitud al agente de Connect que se ejecuta en el clúster. La solicitud incluye la información de la credencial del usuario para usarla en la autenticación y la autorización del clúster.
- El agente de Connect reenvía la solicitud al servidor de la API de Kubernetes.
- El servidor de la API de Kubernetes reenvía la solicitud a GKE Identity Service, que la valida.
- GKE Identity Service muestra la información del usuario y el grupo al servidor de la API de Kubernetes. El servidor de la API de Kubernetes puede usar esta información para autorizar la solicitud en función de las políticas de RBAC configuradas del clúster.
Antes de comenzar
Asegúrate de tener instaladas las siguientes herramientas de línea de comandos:
- La versión más reciente de Google Cloud CLI, la herramienta de línea de comandos para interactuar con Google Cloud.
- La herramienta de línea de comandos de Kubernetes,
kubectl
, para interactuar con tus clústeres.
Si usas Cloud Shell como entorno de shell para interactuar con Google Cloud, estas herramientas están instaladas.
Asegúrate de haber inicializado la CLI de gcloud para usarla en tu proyecto.
En esta guía, se supone que tienes
roles/owner
en tu proyecto. Si no eres propietario de un proyecto, es posible que necesites permisos adicionales para realizar algunos de los pasos de configuración.Para los clústeres fuera de Google Cloud, GKE Identity Service necesita llamar a la API de Google Identity desde tu clúster. Verifica si tu política de red requiere que el tráfico saliente pase por un proxy.
Configura los usuarios y grupos
Asegúrate de que los grupos que deseas usar con esta función estén configurados de la siguiente manera:
- Asegúrate de que haya un grupo en Google Workspace de tu organización con el formato
gke-security-groups@YOUR-DOMAIN
. Si no tienes ese grupo, sigue las instrucciones que se indican en Crea un grupo en tu organización para crear el grupo con la Consola del administrador de Google Workspace. - Sigue las instrucciones en Agrega un grupo a otro grupo para agregar los grupos que deseas usar para el control de acceso como grupos anidados de
gke-security-groups
. No agregues usuarios individuales como miembros degke-security-groups
.
Las cuentas de usuario que desees utilizar con esta función deben usar el mismo nombre de dominio que el de su grupo.
Habilita las APIs
Para agregar la puerta de enlace al proyecto, habilita la API de puerta de enlace de Connect y las API de dependencia requeridas. Si tus usuarios solo desean autenticarse en los clústeres mediante la consola de Google Cloud, no necesitas habilitar connectgateway.googleapis.com
, pero sí debes habilitar las API restantes.
PROJECT_ID=example_project
gcloud services enable --project=${PROJECT_ID} \
connectgateway.googleapis.com \
anthos.googleapis.com \
gkeconnect.googleapis.com \
gkehub.googleapis.com \
cloudresourcemanager.googleapis.com
Configura GKE Identity Service
La función de Grupos de Google de la puerta de enlace de Connect usa GKE Identity Service para obtener información de pertenencia a un grupo de Google. Puedes obtener más información sobre GKE Identity Service en Introducción a GKE Identity Service.
Si usas clústeres de GKE con la puerta de enlace, no necesitas configurar GKE Identity Service para usar el control de acceso de Grupos de Google. En su lugar, sigue las instrucciones que se indican en Configura Grupos de Google para RBAC y, luego, continúa con la sección Otorga roles de IAM a Grupos de Google para permitir que los miembros del grupo accedan a los clústeres con la puerta de enlace de Connect.
Asegúrate de que GKE Identity Service esté instalado
GKE Identity Service se instala de forma predeterminada en los clústeres de GKE a partir de la versión 1.7 (aunque la función de Grupos de Google requiere la versión 1.13 o una posterior). Para confirmar que esté instalado correctamente en tu clúster, ejecuta el siguiente comando:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get all -n anthos-identity-service
donde
USER_CLUSTER_KUBECONFIG
es la ruta al archivo kubeconfig del clúster.
Configura la compatibilidad con Grupos de Google
Si usas GKE en AWS o GKE en Azure, el clúster se configura automáticamente para admitir Grupos de Google y puedes pasar a Otorga roles de IAM a Grupos de Google.
Si usas Google Distributed Cloud en VMware o Bare Metal, la forma en que configuras el servicio de identidad de GKE determina cómo necesitas configurar la función de Grupos de Google.
Si usas GKE Identity Service por primera vez, puedes elegir entre configurar los Grupos de Google a nivel de la flota (recomendado) o por clúster.
Si no es la primera vez que usas GKE Identity Service, ten en cuenta una de las siguientes opciones:
- Si ya configuraste GKE Identity Service para otro proveedor de identidad a nivel de la flota, la función de Grupos de Google está habilitada de forma predeterminada. Consulta la sección Flota que se encuentra a continuación para obtener más detalles y cualquier configuración adicional que puedas necesitar.
Si ya configuraste GKE Identity Service para otro proveedor de identidad por clúster, consulta la sección Por clúster a continuación para obtener instrucciones para actualizar la configuración de la función de Grupos de Google.
Flota
Puedes usar la consola de Google Cloud o la línea de comandos para configurar el acceso a los Grupos de Google a nivel de la flota.
Si ya configuraste GKE Identity Service a nivel de la flota con otro proveedor de identidad (como Okta o Microsoft AD FS), la función de Grupos de Google de la puerta de enlace de Connect ya está habilitada de forma predeterminada en los clústeres configurados, siempre que se pueda acceder al proveedor de identidad de Google sin la necesidad de usar un proxy.
Console
Si no configuraste GKE Identity Service para una flota, sigue las instrucciones en Configura clústeres para GKE Identity Service.
Selecciona los clústeres y actualiza la configuración
En la consola de Google Cloud, ve a la página Funciones de GKE Enterprise.
En la tabla Funciones, haz clic en Detalles en la fila Servicio de identidad. Se muestran los detalles del clúster de tu proyecto.
Haz clic en Actualizar el servicio de identidad para abrir el panel de configuración.
Selecciona los clústeres que deseas configurar. Puedes elegir clústeres individuales o especificar que deseas que todos los clústeres se configuren con la misma configuración de identidad.
En la sección Configure Identity Providers, puedes optar por retener, agregar, actualizar o quitar un proveedor de identidad.
Haz clic en Continuar para ir al siguiente paso de configuración. Si seleccionaste al menos un clúster apto para esta configuración, se mostrará la sección Google Authentication.
Selecciona Habilitar para habilitar la autenticación de Google en los clústeres seleccionados. Si necesitas acceder al proveedor de identidad de Google a través de un proxy, ingresa los detalles del proxy.
Haz clic en Actualizar configuración. Esto aplica la configuración de identidad en los clústeres seleccionados.
gcloud
Si no configuraste GKE Identity Service para una flota, sigue las instrucciones en Configura clústeres para GKE Identity Service.
Especifica solo la siguiente configuración en tu archivo auth-config.yaml
:
spec:
authentication:
- name: google-authentication-method
google:
disable: false
Configura el acceso a los Grupos de Google con un proxy
Si necesitas acceder al proveedor de identidad de Google a través de un proxy, usa un campo proxy
en el archivo auth-config.yaml
. Es posible que debas configurarlo si, por ejemplo, tu clúster está en una red privada y necesita conectarse a un proveedor de identidad pública.
Debes agregar esta configuración incluso si ya configuraste GKE Identity Service para otro proveedor.
Para configurar proxy
, así es como puedes actualizar la sección authentication
del archivo de configuración existente auth-config.yaml
.
spec:
authentication:
- name: google-authentication-method
google:
disable: false
proxy: PROXY_URL
donde
disable
denota si quieres habilitar o inhabilitar la función de Grupos de Google para los clústeres (opcional). Este valor se establece en falso de forma predeterminada. Si deseas inhabilitar esta función, puedes establecerla como verdadero.PROXY_URL
es la dirección del servidor proxy para conectarse a la identidad de Google (opcional). Por ejemplo:http://user:password@10.10.10.10:8888
.
Aplica la configuración
Para aplicar la configuración a un clúster, ejecuta el siguiente comando:
gcloud container fleet identity-service apply \ --membership=CLUSTER_NAME \ --config=/path/to/auth-config.yaml
donde
CLUSTER_NAME
es el nombre de membresía único del clúster dentro de la flota.
Una vez aplicada, el controlador de GKE Identity Service administra esta configuración. El controlador concilia todos los cambios locales realizados en la configuración del cliente de GKE Identity Service con la configuración especificada en esta configuración.
Por clúster
Si deseas configurar tu clúster para usar GKE Identity Service con la función de Grupos de Google,
debes actualizar el ClientConfig
de GKE Identity Service del clúster.
Este es un tipo de recurso personalizado (CRD) de Kubernetes que se usa para la configuración del clúster.
Cada clúster de GKE Enterprise tiene un recurso ClientConfig
llamado default
en el espacio de nombres kube-public
que se actualiza con los detalles de la configuración.
Para editar la configuración, usa el siguiente comando:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default
En el ejemplo anterior,
USER_CLUSTER_KUBECONFIG
es la ruta de acceso al archivo kubeconfig del clúster.
Si hay varios contextos en kubeconfig, se usa el contexto actual. Es posible que debas restablecer el contexto actual en el clúster correcto antes de ejecutar el comando.
Este es un ejemplo de cómo puedes actualizar el ClientConfig
con un método
de autenticación nuevo que tiene una configuración de tipo google
para habilitar la función de Grupos de Google.
Si el campo internalServer
está vacío, asegúrate de que esté configurado como https://kubernetes.default.svc
,
como se muestra a continuación.
spec:
authentication:
- google:
audiences:
- "CLUSTER_IDENTIFIER"
name: google-authentication-method
proxy: PROXY_URL
internalServer: https://kubernetes.default.svc
donde
CLUSTER_IDENTIFIER
denota los detalles de la membresía del clúster (obligatorio).
Puedes recuperar los detalles de la membresía del clúster a través del siguiente comando:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get memberships membership -o yaml
donde
USER_CLUSTER_KUBECONFIG
es la ruta al archivo kubeconfig del clúster.
En la respuesta, consulta el campo spec.owner.id
para recuperar los detalles de la membresía del clúster.
Esta es una respuesta de ejemplo que muestra los detalles de la membresía de un clúster:
id: //gkehub.googleapis.com/projects/123456789/locations/global/memberships/xy-ab12cd34ef
que corresponde al siguiente formato:
//gkehub.googleapis.com/projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP
Otorga funciones de IAM a Grupos de Google
Los grupos necesitan las siguientes funciones adicionales de Google Cloud para interactuar con los clústeres conectados a través de la puerta de enlace:
roles/gkehub.gatewayAdmin
: Esta función permite a los miembros del grupo acceder a la API de la puerta de enlace de Connect.- Si los miembros del grupo necesitan únicamente acceso de solo lectura a los clústeres conectados, se puede usar
roles/gkehub.gatewayReader
en su lugar. - Si los miembros del grupo necesitan acceso de lectura/escritura a los clústeres conectados, se puede usar
roles/gkehub.gatewayEditor
en su lugar.
- Si los miembros del grupo necesitan únicamente acceso de solo lectura a los clústeres conectados, se puede usar
roles/gkehub.viewer
: Este rol permite a los miembros del grupo veer las membresías registradas a los clústeres.
Debes otorgar estas funciones mediante el comando gcloud projects add-iam-policy-binding
, de la siguiente manera:
gcloud projects add-iam-policy-binding --member=group:GROUP_NAME@DOMAIN --role=GATEWAY_ROLE PROJECT_ID gcloud projects add-iam-policy-binding --member=group:GROUP_NAME@DOMAIN --role=roles/gkehub.viewer PROJECT_ID
donde
- GROUP_NAME es el grupo de Google al que deseas otorgar la función.
- DOMAIN es tu dominio de Google Workspace.
- GROUP_NAME@DOMAIN es un grupo anidado en gke-security-groups@DOMAIN
- GATEWAY_ROLE es uno de
roles/gkehub.gatewayAdmin
,roles/gkehub.gatewayReader
ogkehub.gatewayEditor
. - PROJECT_ID es tu proyecto.
Para obtener más información sobre cómo otorgar permisos y roles de IAM, consulta Otorga, cambia y revoca el acceso a los recursos.
Configura políticas de control de acceso basado en roles (RBAC)
Por último, el servidor de la API de Kubernetes de cada clúster debe poder autorizar los comandos de kubectl
que provienen de la puerta de enlace de los grupos que especificaste. Para cada clúster, debes agregar una política de permisos RBAC que especifique qué permisos tiene el grupo en el clúster.
En el siguiente ejemplo, verás cómo otorgar a los miembros del grupo cluster-admin-team
permisos cluster-admin
en el clúster, guardar el archivo de política como /tmp/admin-permission.yaml y aplicarlo al clúster asociado con el contexto actual. Asegúrate de incluir también el grupo cluster-admin-team
en el grupo gke-security-groups
.
cat <<EOF > /tmp/admin-permission.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: gateway-cluster-admin-group
subjects:
- kind: Group
name: cluster-admin-team@example.com
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
EOF
# Apply permission policy to the cluster.
kubectl apply --kubeconfig=KUBECONFIG_PATH -f /tmp/admin-permission.yaml
Puedes obtener más información sobre cómo especificar permisos de RBAC en Usa la autorización de RBAC.
Próximos pasos
- Obtén más información sobre cómo usar la puerta de enlace de Connect para conectarte a clústeres desde la línea de comandos.
- Consulta un instructivo sobre cómo integrar con Cloud Build para ver un ejemplo de cómo usar la puerta de enlace de Connect con parte de tu automatización de DevOps.