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 página, asegúrate de estar familiarizado 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
Puedes configurar el control de acceso con Grupos de Google a través de la puerta de enlace de Connect para los siguientes tipos de clústeres:
- GKE en Google Cloud: Todas las versiones disponibles. Para configurar la puerta de enlace de Connect, configura Grupos de Google para RBAC y, luego, otorga roles de IAM a Grupos de Google.
- Google Distributed Cloud (solo software) en VMware y equipos físicos: todas las versiones disponibles.
- Google Distributed Cloud conectado: Todas las versiones disponibles.
- Clústeres conectados de GKE: versión 1.28.0-gke.2 y posteriores
GKE en AWS y GKE en Azure: todas las versiones disponibles.
Para usar esta función con entornos que no se encuentren en la lista anterior, 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 membresía del 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. Puedes configurar la puerta de enlace de Connect para obtener información de la pertenencia a Grupos de Google para cada usuario que acceda al clúster. Luego, puedes usar esta información 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.comcomo miembro.Es un grupo anidado de
gke-security-groups@example.com.
- El usuario
alice@example.comaccede 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ústerkubeconfigcomo 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
kubectlo la apertura de las páginas Cargas de trabajo o Navegador de objetos de Google Kubernetes Engine en laGoogle Cloud consola. - El servicio de Connect, que realiza una verificación de autorización con 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 se acompaña de la información de credenciales del usuario para su uso en la autenticación y autorización en el 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 al Pod
anthos-identity-serviceen el clúster, que valida la solicitud. - El Pod
anthos-identity-servicedevuelve 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
- Accede a tu cuenta de Google Cloud . Si es la primera vez que usas Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Verifica que tengas los permisos necesarios para completar esta guía.
Habilita las APIs de Connect Gateway, GKE Connect, GKE Hub, Anthos Identity Service y Cloud Resource Manager, si aún no están habilitadas:
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.gcloud services enable connectgateway.googleapis.com
gkeconnect.googleapis.com gkehub.googleapis.com anthosidentityservice.googleapis.com cloudresourcemanager.googleapis.com -
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Verifica que tengas los permisos necesarios para completar esta guía.
Habilita las APIs de Connect Gateway, GKE Connect, GKE Hub, Anthos Identity Service y Cloud Resource Manager, si aún no están habilitadas:
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.gcloud services enable connectgateway.googleapis.com
gkeconnect.googleapis.com gkehub.googleapis.com anthosidentityservice.googleapis.com cloudresourcemanager.googleapis.com - Para los clústeres fuera de Google Cloud, los componentes de autenticación de tu clúster deben llamar a la API de Cloud Identity. Verifica si tienes políticas de red que requieran que el tráfico de salida de tu clúster pase por un proxy.
Roles obligatorios
Para obtener los permisos que
necesitas para configurar la puerta de enlace de Connect y tus clústeres,
pídele a tu administrador que te otorgue el rol de IAM de
Editor (roles/editor) en el proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
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. - 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.
Configura la compatibilidad con grupos
La puerta de enlace de Connect usa componentes de autenticación en tu clúster para recuperar información de pertenencia a grupos. Para habilitar los componentes necesarios, consulta uno de los siguientes documentos según el tipo de clúster:
- GKE en Google Cloud: Configura Grupos de Google para RBAC y, luego, pasa a la sección Otorga roles de IAM a grupos.
- Clústeres conectados de GKE:
Google Distributed Cloud: Para habilitar la compatibilidad con grupos, actualiza el recurso personalizado ClientConfig en tu clúster. Distributed Cloud crea automáticamente un ClientConfig llamado
defaulten el espacio de nombreskube-publicde cada clúster. Para verificar que este recurso personalizado exista, ejecuta el siguiente comando:kubectl --kubeconfig CLUSTER_KUBECONFIG get ClientConfig default -n kube-publicReemplaza
CLUSTER_KUBECONFIGpor la ruta de acceso al kubeconfig del clúster.
En las siguientes secciones, se muestra cómo actualizar el recurso personalizado ClientConfig para habilitar la compatibilidad con grupos. Estas secciones se aplican solo a los clústeres de Google Distributed Cloud. Para otros tipos de clústeres, como GKE en Google Cloud, GKE en AWS y GKE en Azure, ve a la sección Otorga roles de IAM a grupos.
En Distributed Cloud, puedes configurar la compatibilidad con grupos para clústeres individuales o para una flota. El tipo de clúster que uses determina cómo configurar la compatibilidad con grupos, de la siguiente manera:
- Distributed Cloud conectado: Solo clústeres individuales. No se admite la configuración a nivel de la flota.
- Google Distributed Cloud (solo software) en VMware y equipos físicos: Clústeres o flotas individuales
Configura la compatibilidad con grupos con la API de Fleet de GKE
En el caso de Google Distributed Cloud (solo software) en VMware y equipos físicos, puedes configurar la compatibilidad con grupos a nivel de la flota. Si ya configuraste la autenticación a nivel de la flota, como para un proveedor de identidad diferente, la autenticación de grupos ya está habilitada. Sin embargo, si tu política de red requiere que el tráfico de salida pase por un proxy, debes actualizar la configuración existente con información sobre ese proxy.
Para configurar la compatibilidad con grupos a nivel de la flota, selecciona una de las siguientes opciones:
Console
En la consola de Google Cloud , ve a la página Servicio de identidad de GKE.
Haz clic en Habilitar el servicio de identidad.
Selecciona los clústeres de Google Distributed Cloud (solo software) en VMware y equipos físicos que deseas configurar.
Haz clic en Actualizar configuración. Se abrirá el panel Editar la configuración de los clústeres del servicio 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
- Habilita la función de servicio de identidad a nivel de la flota y configura los clústeres, como se describe en Configura la administración de la autenticación a nivel de la flota.
En el archivo
auth-config.yamlque contiene la especificación de ClientConfig, agrega el siguiente campo:spec: authentication: - name: google-authentication-method google: disable: falseEl valor de
falseen el campogoogle.disablehabilita la compatibilidad con grupos. Para inhabilitar la compatibilidad con grupos, modifica este valor atrue.Opcional: Si necesitas acceder al proveedor de Google Identity a través de un proxy, agrega el campo
proxya la configuración anterior:spec: authentication: - name: google-authentication-method google: disable: false proxy: PROXY_URLReemplaza
PROXY_URLpor la dirección del servidor proxy para conectarte a la identidad de Google. Por ejemplo:http://user:password@10.10.10.10:8888Aplica la configuración a un clúster de tu flota:
gcloud container fleet identity-service apply \ --membership=CLUSTER_NAME \ --config=/path/to/auth-config.yaml
Reemplaza
CLUSTER_NAMEpor el nombre de membresía único del clúster dentro de la flota.
Después de configurar la compatibilidad con grupos a nivel de la flota, el controlador de la flota administra la configuración. La configuración a nivel de la flota reemplaza cualquier cambio local que realices en la configuración de un clúster específico.
Configura la compatibilidad con grupos para clústeres individuales
Para todos los clústeres de Distributed Cloud, incluido Distributed Cloud conectado, habilita la compatibilidad con grupos actualizando el objeto default ClientConfig en cada clúster:
Obtén los detalles de la membresía del clúster:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get memberships membership -o yamlReemplaza
USER_CLUSTER_KUBECONFIGpor 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.En la respuesta, consulta el campo
spec.owner.idpara recuperar los detalles de la membresía del clúster. El identificador de membresía tiene el formato//gkehub.googleapis.com/projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP.El resultado es similar a lo siguiente:
id: //gkehub.googleapis.com/projects/123456789/locations/global/memberships/xy-ab12cd34efAbre el ClientConfig
defaulten tu clúster para editarlo:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig defaultPara habilitar la compatibilidad con grupos, agrega el campo
googleal campospec.authentication:spec: internalServer: https://kubernetes.default.svc authentication: - google: audiences: - "CLUSTER_IDENTIFIER" name: google-authentication-methodReemplaza
CLUSTER_IDENTIFIERpor los detalles de membresía de tu clúster.Asegúrate de que el campo
internalServertenga un valor dehttps://kubernetes.default.svc.Opcional: Si necesitas acceder al proveedor de Google Identity a través de un proxy, agrega el campo
proxya la configuración anterior:spec: internalServer: https://kubernetes.default.svc authentication: - google: audiences: - "CLUSTER_IDENTIFIER" name: google-authentication-method proxy: PROXY_URLReemplaza
PROXY_URLpor la dirección del servidor proxy para conectarte a la identidad de Google. Por ejemplo:http://user:password@10.10.10.10:8888
Otorga funciones de IAM a Grupos de Google
Los grupos necesitan los siguientes roles adicionales de Google Cloud para interactuar con los clústeres conectados a través de la puerta de enlace:
roles/gkehub.gatewayAdmin: Este rol permite que los miembros del grupo accedan 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.gatewayReaderen su lugar. - Si los miembros del grupo necesitan acceso de lectura/escritura a los clústeres conectados, se puede usar
roles/gkehub.gatewayEditoren 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.gatewayReaderogkehub.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 para usar la puerta de enlace de Connect para conectarte a clústeres desde la línea de comandos.
- En nuestro instructivo Integración con Cloud Build, puedes ver un ejemplo de cómo usar la puerta de enlace de conexión como parte de la automatización de DevOps.