GKE Identity Service te permite iniciar sesión en clústeres configurados desde la línea de comandos con un nombre de usuario y una contraseña de un proveedor de identidades de terceros. Sigue las instrucciones de esta página si el administrador de tu clúster ha decidido permitirte autenticarte directamente en el servidor de GKE Identity Service con un nombre de dominio completo (FQDN). En el caso de los proveedores de SAML, el acceso de inicio de sesión solo se admite a través de este método de autenticación.
Este método de autenticación solo se admite en clústeres on-premise (Google Distributed Cloud) en VMware y bare metal, a partir de la versión 1.29. No se admiten otros tipos de clústeres.
La versión de la CLI gcloud
necesaria para iniciar sesión con el FQDN que has proporcionado es la 477.0.0 o una posterior.
Flujo de trabajo de inicio de sesión
Estos son los pasos del flujo de trabajo cuando un usuario inicia sesión mediante el método de acceso FQDN:
- Iniciar sesión: el usuario ejecuta el comando
gcloud anthos auth login --server APISERVER-URL
para iniciar el proceso de inicio de sesión. - Selección del proveedor de identidades: se muestra al usuario una lista de proveedores de identidades configurados. El usuario selecciona el proveedor en el que se almacenan sus credenciales.
Autenticación con un proveedor de identidades: el proceso de autenticación varía en función del protocolo del proveedor de identidades que elijas:
- OIDC se redirige al usuario a la página de inicio de sesión del proveedor de OIDC. Después de iniciar sesión correctamente, el proveedor envía un código al servicio de identidad de GKE, que lo intercambia por un token de acceso a través de una comunicación por canal secundario.
- SAML se redirige al usuario a la página de inicio de sesión del proveedor de SAML. Después de iniciar sesión correctamente, el proveedor envía directamente un token (aserto) al servicio de identidad de GKE, lo que evita una devolución de llamada adicional.
- LDAP: en lugar de redirigir a un proveedor externo, GKE Identity Service muestra una página de inicio de sesión en la que el usuario introduce sus credenciales de LDAP, que se verifican directamente con el servidor LDAP.
Verificación de tokens y generación de archivos kubeconfig: el servicio de identidad de GKE verifica el token recibido (o la aserción), crea un token para el usuario y envía un archivo kubeconfig que contiene este token.
Acceso al clúster: el usuario puede acceder al clúster mediante comandos
kubectl
. El clientekubectl
envía automáticamente el token del archivo kubeconfig con cada solicitud.Validación de tokens y autorización de RBAC: el servidor de la API de Kubernetes recibe el token, el servicio de identidad de GKE lo verifica y obtiene las reclamaciones del usuario (nombre de usuario y grupos). Una vez que se ha validado correctamente, el servidor de la API ejecuta comprobaciones de control de acceso basado en roles (RBAC) para determinar los recursos a los que el usuario tiene autorización para acceder.
Iniciar sesión con certificados SNI de confianza
Los certificados SNI simplifican el acceso al clúster, ya que utilizan certificados de confianza que ya están presentes en los dispositivos de la empresa. Los administradores pueden especificar este certificado en el momento de crear el clúster. Si tu clúster usa un certificado SNI de confianza a nivel de clúster, usa el comando de esta sección con el nombre de dominio completo proporcionado por tu administrador para iniciar sesión en el clúster y recibir un token de acceso. También puedes usar un archivo kubeconfig
seguro en el que se almacene el token después de que la autenticación se haya realizado correctamente.
Ejecuta el siguiente comando para autenticarte en el servidor:
gcloud anthos auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE
Haz los cambios siguientes:
- APISERVER-URL: FQDN del servidor de la API de Kubernetes del clúster.
- OUTPUT_FILE: usa esta marca si tu archivo
kubeconfig
se encuentra en una ubicación distinta a la predeterminada. Si se omite esta marca, los tokens de autenticación se añadirán al archivokubeconfig
en la ubicación predeterminada. Por ejemplo:--kubeconfig /path/to/custom.kubeconfig
.
Iniciar sesión con certificados emitidos por la AC del clúster
Si no usas un certificado SNI de confianza a nivel de clúster, la autoridad de certificación (CA) del clúster emitirá el certificado que use el servicio de identidad. Los administradores distribuyen este certificado de CA a los usuarios. Ejecuta el siguiente comando con el certificado de AC del clúster para iniciar sesión en él:
gcloud anthos auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --login-config-cert CLUSTER_CA_CERTIFICATE
Autenticación multidispositivo
La autenticación entre dispositivos te permite iniciar sesión en clústeres de Google Distributed Cloud (GDC) desde dispositivos que no tienen instalado un navegador. Puedes iniciar el proceso de autenticación en tu dispositivo principal (que no tiene ningún navegador instalado) y completarlo en un dispositivo secundario que sí tenga un navegador instalado.
Sigue estos pasos para configurar la autenticación entre dispositivos.
Inicia sesión en tu dispositivo principal
Ejecuta el siguiente comando para autenticarte en el servidor de tu dispositivo principal. Especifica el argumento
--no-browser
para indicar que el dispositivo desde el que necesitas acceder a tu clúster no tiene instalado ningún navegador.gcloud anthos auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --no-browser
El servicio de identidad de GKE devuelve un comando que debes usar cuando inicies sesión desde el segundo dispositivo. Este es un ejemplo de cómo sería el comando:
You are authorizing gcloud CLI without access to a web browser. Please run the following command on a machine with a web browser and copy its output back here. gcloud auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --remote-bootstrap="URL_TO_COPY_ON_THE_SECOND_DEVICE" Enter the output of the above command:
Copia el comando
gcloud
.Iniciar sesión en clústeres en el segundo dispositivo
Antes de iniciar sesión desde el segundo dispositivo, comprueba que tienes instalado el navegador y que tienes conectividad de red con el servidor de la API de Kubernetes. Ejecuta el comando que has copiado en el paso anterior en el segundo dispositivo.
gcloud auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --remote-bootstrap="URL_TO_COPY_ON_THE_SECOND_DEVICE"
Cuando se intenta iniciar sesión desde este dispositivo, se muestra un mensaje de advertencia. Sigue el proceso de autenticación estándar que se muestra en el navegador. Una vez que te hayas autenticado correctamente, recibirás un código de un solo uso. Copia este código.
WARNING: The following line enables access to your Cluster resources. ONLY COPY IT TO A MACHINE YOU TRUST AND RUN 'gcloud auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --no-browser' EARLY ON. Or_mHYQFm90efgJdwhajx0KeC_WXkuvBPuWv_83nFX9J_Eawm3tQcBpxBBWszj6Ix8dAWCgc1QjJBrlt67bzIYIBTexU7dc_ggtkMTNkG7wCIGYZ75zfg9P1gBshP33STe0ks-AoVonzk01YekMbyNugeYSO18CBwFhaDDSMABq4PI-clgbaSh8CPqrvDKRLenbvfD9BSK6SW945I0bOgPURxNzUX4sICWcvFozhQdLYICuwRM0AgarNFwoeh-0wbJGyRqUjq2NJbaYdf-VCaByiZaGPR2B1QVGXO7deKGtUnk1_tTFOnB6sJQvT6UJ8Ge5nkR38rqBeeGkYdlVIBTXShENG80An1Ve524xZupSzCHNSVTJqYg
Completa el inicio de sesión en tu dispositivo principal
Pega el código copiado en el paso anterior en la petición de tu dispositivo principal.
Enter the code you received on the other device: Or_mHYQFm90efgJdwhajx0KeC_WXkuvBPuWv_83nFX9J_Eawm3tQcBpxBBWszj6Ix8dAWCgc1QjJBrlt67bzIYIBTexU7dc_ggtkMTNkG7wCIGYZ75zfg9P1gBshP33STe0ks-AoVonzk01YekMbyNugeYSO18CBwFhaDDSMABq4PI-clgbaSh8CPqrvDKRLenbvfD9BSK6SW945I0bOgPURxNzUX4sICWcvFozhQdLYICuwRM0AgarNFwoeh-0wbJGyRqUjq2NJbaYdf-VCaByiZaGPR2B1QVGXO7deKGtUnk1_tTFOnB6sJQvT6UJ8Ge5nkR38rqBeeGkYdlVIBTXShENG80An1Ve524xZupSzCHNSVTJqYg
Tu dispositivo usa este código para generar una credencial que se guarda en un archivo
kubeconfig
. Este archivo permite acceder al clúster en tu dispositivo principal. Cuando hayas iniciado sesión, se mostrará el siguiente mensaje:You are logged in! Context is stored under the name '{cluster-name}'