En este documento, se muestra a los administradores de clústeres cómo configurar varios clústeres para la autenticación de proveedores de identidad externos con flotas. Google Cloud administra la configuración de los clústeres en una flota, lo que genera un proceso de configuración más rápido y menos complejo que la configuración de clústeres individuales. Para obtener más información sobre el proceso de autenticación del proveedor externo, consulta Acerca de la autenticación con identidades de terceros.
Antes de comenzar
Instala y configura Google Cloud CLI:
-
Install the 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 -
Después de inicializar gcloud CLI, actualízala y, luego, instala los componentes necesarios:
gcloud components update gcloud components install kubectl
- En gcloud CLI, selecciona el proyecto host de tu flota:
Reemplazagcloud config set project FLEET_HOST_PROJECT_ID
FLEET_HOST_PROJECT_IDpor el ID del proyecto host de tu flota.
-
Habilita las API necesarias:
En la consola de Google Cloud , ve a la página del selector de proyectos:
Selecciona el proyecto host de tu flota.
Enable the GKE Hub and Kubernetes Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Asegúrate de que el administrador de tu plataforma te haya proporcionado toda la información del proveedor que necesitas para el protocolo seleccionado. Para obtener más información, consulta los siguientes documentos:
Roles obligatorios
Para obtener los permisos que
necesitas para configurar clústeres a nivel de la flota,
pídele a tu administrador que te otorgue el
rol de IAM Administrador de la flota (roles/gkehub/admin)
en el proyecto host de la flota.
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.
Habilita la función del servicio de identidad a nivel de la flota
La función del servicio de identidad a nivel de la flota usa un controlador para administrar la configuración en cada uno de los clústeres de la flota. Solo debes habilitar la función a nivel de la flota en el proyecto host de la flota.
Para habilitar la función a nivel de la flota, selecciona una de las siguientes opciones:
Console
En la consola de Google Cloud , ve a la página GKE Identity Service.
Haz clic en Habilitar el servicio de identidad.
gcloud
Habilita la función del servicio de identidad a nivel de la flota:
gcloud container fleet identity-service enable
Configura los clústeres
Para configurar tus clústeres, debes especificar la siguiente información:
- Información sobre tu proveedor de identidad, como un ID de cliente y un secreto
- Es la información sobre los tokens web JSON (JWT) que usa tu proveedor de identidad para la autenticación.
- Cualquier parámetro o permiso adicional que sea exclusivo de tu proveedor de identidad
Para obtener más información sobre la información que necesitas de tu administrador de la plataforma o de quien administre la identidad en tu organización, consulta los siguientes documentos:
- Configura proveedores de OIDC para la autenticación en clústeres
- Configura proveedores de SAML para la autenticación en clústeres
- Configura proveedores de LDAP para la autenticación en clústeres
Si tienes configuraciones a nivel de clúster existentes para los proveedores de OIDC, la aplicación de una configuración a nivel de la flota al clúster reemplaza todas tus especificaciones de autenticación existentes. Además, si tienes configuraciones existentes a nivel del clúster para proveedores que no son compatibles con la configuración a nivel de la flota, esta configuración fallará. Debes quitar la configuración del proveedor existente para aplicar la configuración a nivel de la flota.
Para configurar tus clústeres, sigue estos pasos:
Console
Selecciona los clústeres que deseas configurar:
En la consola de Google Cloud , ve a la página GKE Identity Service.
Selecciona una o más casillas de verificación de 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. Si configuraste los valores predeterminados a nivel de la flota, la configuración se concilia a la predeterminada.
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 Proveedores de identidad, elige cómo deseas configurar los clústeres. Puedes actualizar una configuración existente, copiar una configuración de otro clúster o crear una configuración nueva. Para crear una configuración nueva, haz clic en Agregar un proveedor de identidad. Aparecerá la sección Nuevo proveedor de identidad.
En la sección Nuevo proveedor de identidad, configura los detalles del proveedor:
OIDC
- Selecciona New Open ID Connect para crear una configuración de OIDC nueva.
- Especifica el nombre que deseas usar para identificar esta configuración en el campo Nombre del proveedor, por lo general, el nombre del proveedor de identidad. Este nombre debe comenzar con una letra seguida por un máximo de 39 letras minúsculas, números o guiones, y no puede terminar con un guion. No puedes editar este nombre una vez que hayas creado una configuración.
- Especifica el ID de cliente del proveedor de identidad en el campo ID de cliente.
- Especifica el secreto del cliente que se debe compartir entre la aplicación cliente y el proveedor de identidad en el campo Secreto de cliente.
- Especifica el URI en el que se realizan las solicitudes de autorización al proveedor de identidad en el campo URL de la entidad emisora.
- Haz clic en Siguiente para configurar los atributos de OIDC.
Azure AD
- Selecciona New Azure Active Directory para crear una configuración nueva de Azure AD.
- Especifica el nombre que deseas usar para identificar esta configuración en el campo Nombre del proveedor, por lo general, el nombre del proveedor de identidad. Este nombre debe comenzar con una letra seguida por un máximo de 39 letras minúsculas, números o guiones, y no puede terminar con un guion. No puedes editar este nombre una vez que hayas creado una configuración.
- Especifica el ID de cliente del proveedor de identidad en el campo ID de cliente.
- Especifica el secreto del cliente que se debe compartir entre la aplicación cliente y el proveedor de identidad en el campo Secreto de cliente.
- Especifica el usuario que será la cuenta de Azure AD que se autenticará en Usuario.
- Haz clic en Siguiente para configurar los atributos de Azure AD.
LDAP
- Selecciona LDAP para crear una configuración de LDAP nueva.
- Especifica el nombre que deseas usar para identificar esta configuración en el campo Nombre del proveedor, por lo general, el nombre del proveedor de identidad. Este nombre debe comenzar con una letra seguida por un máximo de 39 letras minúsculas, números o guiones, y no puede terminar con un guion. No puedes editar este nombre una vez que hayas creado una configuración.
- Haz clic en Siguiente.
- Especifica el nombre de host (obligatorio), el tipo de conexión LDAP y el certificado de la AC codificado en base64 del servidor LDAP.
- Haz clic en Siguiente para configurar el servidor.
- Especifica el nombre distinguido, el filtro, el atributo de acceso y el atributo del identificador del usuario.
- Haz clic en Siguiente para configurar los detalles del usuario.
- Si eliges usar grupos, especifica el nombre distinguido, el filtro y el atributo del identificador del grupo.
- Haz clic en Siguiente para configurar los detalles del grupo.
- Especifica el nombre de usuario y la contraseña de la cuenta de servicio.
- Haz clic en Listo para establecer el nombre de la cuenta de servicio.
Haz clic en Siguiente. Se abrirá la sección Establecer atributos.
Establece los atributos de tu proveedor de identidad. Para ver los atributos de OIDC o Azure AD, selecciona una de las siguientes opciones:
OIDC
- URI de redireccionamiento de
kubectl: La URL y el puerto de redireccionamiento que usa gcloud CLI y que especifica el administrador de la plataforma durante el registro, por lo general, en el formatohttp://localhost:PORT/callback. - Autoridad certificadora (opcional): Si el administrador de la plataforma la proporciona, es una cadena de certificado con codificación PEM para el proveedor de identidad.
- Reclamación de grupo (opcional): Es la reclamación de JWT (nombre de campo) que usa tu proveedor para mostrar los grupos de seguridad de una cuenta.
- Prefijo de grupo (opcional): El prefijo que quieres anteponer a los nombres de los grupos de seguridad para evitar conflictos con los nombres existentes en las reglas de control de acceso si tienes configuraciones para varios proveedores de identidad (por lo general, el nombre del proveedor).
- Proxy (opcional): Dirección del servidor proxy que se usará para conectarse al proveedor de identidad, si corresponde. 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. Por ejemplo:
http://user:password@10.10.10.10:8888. - Permisos (opcional): Cualquier permiso adicional que requiera tu proveedor de identidad. Microsoft Azure y Okta requieren el permiso
offline_access. Haz clic en Agregar permiso para agregar más permisos si es necesario. - Reclamación del usuario (opcional): La reclamación de JWT (nombre de campo) que tu proveedor usa para identificar una cuenta. Si no especificas un valor aquí, el clúster usa “sub”, que es la reclamación de ID de usuario que usan muchos proveedores. Puedes elegir otras reclamaciones, como "correo electrónico" o "nombre", según el proveedor de OpenID. Las reclamaciones que no sean “correo electrónico” tienen el prefijo de la URL de la entidad emisora para evitar conflictos de nombres.
- Prefijo del usuario (opcional): Si quieres usar el prefijo predeterminado, debes anteponer los reclamos del usuario para evitar conflictos con los nombres existentes.
- Parámetros adicionales (opcional): Cualquier parámetro adicional necesario para la configuración, especificado como el parámetro Clave y Valor. Haz clic en Agregar parámetro para agregar más parámetros si es necesario.
- Habilitar el token de acceso (opcional): Si está habilitado, permite la compatibilidad de grupo para proveedores de OIDC como Okta.
- Implementar Google Cloud proxy de la consola (opcional): Si se habilita, se implementa un proxy que permite que la Google Cloud consola se conecte a un proveedor de identidad local al que no se puede acceder públicamente a través de Internet.
Azure AD
- URI de redireccionamiento de
kubectl: La URL y el puerto de redireccionamiento que usa gcloud CLI y que especifica el administrador de la plataforma durante el registro, por lo general, en el formatohttp://localhost:PORT/callback. - Reclamación del usuario (opcional): La reclamación de JWT (nombre de campo) que tu proveedor usa para identificar una cuenta. Si no especificas un valor aquí, el clúster usa un valor en el orden de "email", "preferred_username" o "sub" para recuperar los detalles del usuario.
- Proxy (opcional): Dirección del servidor proxy que se usará para conectarse al proveedor de identidad, si corresponde. 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. Por ejemplo:
http://user:password@10.10.10.10:8888.
- URI de redireccionamiento de
Haz clic en Listo.
Opcional: Para agregar más proveedores a la configuración, haz clic en Agregar un proveedor de identidad y repite los pasos anteriores.
Haz clic en Actualizar configuración.
Esto instala los componentes necesarios, si es necesario, y aplica la configuración del cliente en los clústeres seleccionados.
gcloud
Para usar la CLI de gcloud para configurar la flota, crea un recurso personalizado de Kubernetes llamado ClientConfig con campos para toda la información que necesita el clúster para interactuar con el proveedor de identidad. Para crear y usar un ClientConfig, sigue estos pasos:
Crea una especificación de ClientConfig en un archivo llamado
auth-config.yaml. Para ver ejemplos de configuraciones de OIDC, SAML o LDAP, selecciona una de las siguientes opciones. Para otras configuraciones de proveedores de identidad, consulta Configuraciones específicas del proveedor.OIDC
En el siguiente ejemplo de ClientConfig, se muestran una configuración
oidcy una configuraciónazuread. Para obtener más información sobre cuándo usaroidcoazuread, consulta Configuraciones específicas del proveedor.apiVersion: authentication.gke.io/v2alpha1 kind: ClientConfig metadata: name: default namespace: kube-public spec: authentication: - name: NAME proxy: PROXY_URL oidc: certificateAuthorityData: CERTIFICATE_STRING clientID: CLIENT_ID clientSecret: CLIENT_SECRET deployCloudConsoleProxy: PROXY_BOOLEAN extraParams: EXTRA_PARAMS groupsClaim: GROUPS_CLAIM groupPrefix: GROUP_PREFIX issuerURI: ISSUER_URI kubectlRedirectURI: http://localhost:PORT/callback scopes: SCOPES userClaim: USER_CLAIM userPrefix: USER_PREFIX - name: azure azureAD: clientID: CLIENT_ID clientSecret: CLIENT_SECRET tenant: TENANT_UUID kubectlRedirectURI: http://localhost:PORT/callback groupFormat: GROUP_FORMAT userClaim: USER_CLAIMPara obtener más información sobre los campos del objeto
oidc, consulta Campos de OIDC de ClientConfig.SAML
En el siguiente ejemplo de ClientConfig, se muestra una configuración de
saml:apiVersion: authentication.gke.io/v2alpha1 kind: ClientConfig metadata: name: default namespace: kube-public spec: authentication: - name: NAME saml: idpEntityID: ENTITY_ID idpSingleSignOnURI: SIGN_ON_URI idpCertificateDataList: IDP_CA_CERT userAttribute: USER_ATTRIBUTE groupsAttribute: GROUPS_ATTRIBUTE userPrefix: USER_PREFIX groupPrefix: GROUP_PREFIX attributeMapping: ATTRIBUTE_KEY_1 : ATTRIBUTE_CEL_EXPRESSION_1 ATTRIBUTE_KEY_2 : ATTRIBUTE_CEL_EXPRESSION_2 certificateAuthorityData: CERTIFICATE_STRING preferredAuthentication: PREFERRED_AUTHENTICATION server: <>Para obtener más información sobre estos campos, consulta Campos SAML de ClientConfig.
LDAP
En el siguiente ejemplo de ClientConfig, se muestra una configuración de
ldap:apiVersion: authentication.gke.io/v2alpha1 kind: ClientConfig metadata: name: default namespace: kube-public spec: authentication: - name: ldap ldap: server: host: HOST_NAME connectionType: CONNECTION_TYPE certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA user: baseDn: BASE_DN loginAttribute: LOGIN_ATTRIBUTE filter: FILTER identifierAttribute: IDENTIFIER_ATTRIBUTE group: baseDn: BASE_DN filter: FILTER identifierAttribute: IDENTIFIER_ATTRIBUTE serviceAccount: simpleBindCredentials: dn: DISTINGUISHED_NAME password: PASSWORDPara obtener más información sobre estos campos, consulta Campos de LDAP de ClientConfig.
Puedes agregar varios parámetros de configuración del proveedor de identidad al mismo ClientConfig. El clúster intenta autenticarse con cada configuración en el orden en que se definen y se detiene después de la primera autenticación exitosa.
Aplica el ClientConfig a un clúster:
gcloud container fleet identity-service apply \ --membership=CLUSTER_NAME \ --config=auth-config.yamlReemplaza
CLUSTER_NAMEpor el nombre único de tu clúster dentro de la flota.
El clúster instala los componentes necesarios y usa el ClientConfig que creaste. El controlador a nivel de la flota administra la configuración del clúster. El controlador concilia todos los cambios locales en la configuración del clúster con la configuración a nivel de la flota.
Para algunas versiones de clústeres, aplicar la configuración a nivel de la flota también agrega de forma predeterminada una configuración authentication adicional a tus clústeres.
Esto permite que el clúster recupere información de Grupos de Google para las cuentas de usuario que acceden con su ID de Google.
Esta configuración se aplica a los clústeres en Google Distributed Cloud (tanto VMware como Bare Metal).
Para obtener más información sobre la función de Grupos de Google, consulta Configura la puerta de enlace de Connect con Grupos de Google.
Si ya no deseas que el controlador a nivel de la flota administre tu configuración, por ejemplo, si deseas usar opciones de autenticación diferentes, puedes inhabilitar esta función siguiendo las instrucciones incluidas en Inhabilita la administración de identidades a nivel de la flota.
Parámetros de configuración específica del proveedor
En esta sección, se proporciona orientación de configuración para los proveedores de OIDC (como Azure AD y Okta), incluida una configuración de ejemplo que puedes copiar y editar con tus propios detalles.
Azure AD
Esta es la configuración predeterminada para configurar la autenticación con Azure AD. El uso de esta configuración permite que el clúster obtenga información de usuarios y grupos de Azure AD, y te permite configurar el control de acceso basado en roles (RBAC) de Kubernetes en función de los grupos. Sin embargo, el uso de esta configuración limita la recuperación de alrededor de 200 grupos por usuario.
Si necesitas recuperar más de 200 grupos por usuario, consulta las instrucciones de Azure AD (Advanced).
...
spec:
authentication:
- name: oidc-azuread
oidc:
clientID: CLIENT_ID
clientSecret: CLIENT_SECRET
cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc
extraParams: prompt=consent, access_type=offline
issuerURI: https://login.microsoftonline.com/TENANT_ID/v2.0
kubectlRedirectURI: http://localhost:PORT/callback
scopes: openid,email,offline_access
userClaim: email
# Rest of the resource is managed by Google. DO NOT MODIFY.
...
Azure AD (Advanced)
Esta configuración opcional para Azure AD permite que el clúster recupere información de usuarios y grupos sin límite en la cantidad de grupos por usuario a través de la API de Microsoft Graph. Si deseas obtener información sobre las plataformas que admiten esta configuración, consulta Información de configuración del proveedor de identidad.
Si necesitas recuperar menos de 200 grupos por usuario, te recomendamos que
uses la configuración predeterminada con un ancla oidc en tu ClientConfig. Si deseas obtener más información, consulta las instrucciones
para Azure AD.
Todos los campos de la configuración de ejemplo son obligatorios.
...
spec:
authentication:
- name: azure
azureAD:
clientID: CLIENT_ID
clientSecret: CLIENT_SECRET
tenant: TENANT_UUID
kubectlRedirectURI: http://localhost:PORT/callback
groupFormat: GROUP_FORMAT
userClaim: USER_CLAIM
# Rest of the resource is managed by Google. DO NOT MODIFY.
...
Reemplaza GROUP_FORMAT por el formato en el que deseas recuperar la información del grupo. Este campo puede tener valores correspondientes a ID o NAME de los grupos de usuarios. Este parámetro de configuración solo está disponible para clústeres en implementaciones de Google Distributed Cloud (en las instalaciones).
Okta
En el siguiente ejemplo, se muestra cómo configurar la autenticación mediante usuarios y grupos con Okta como proveedor de identidad. Esta configuración permite que el clúster recupere reclamaciones de usuarios y grupos a través de un token de acceso y el extremo userinfo de Okta.
...
spec:
authentication:
- name: okta
oidc:
clientID: CLIENT_ID
clientSecret: CLIENT_SECRET
cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc
enableAccessToken: true
extraParams: prompt=consent
groupsClaim: groups
issuerURI: https://OKTA_ISSUER_URI/
kubectlRedirectURI: http://localhost:PORT/callback
scopes: offline_access,email,profile,groups
userClaim: email
# Rest of the resource is managed by Google. DO NOT MODIFY.
...
Configura los valores predeterminados a nivel de la flota
Puedes especificar una configuración predeterminada a nivel de la flota para la autenticación. Con esta configuración, cada clúster nuevo que registres en la flota usará automáticamente la configuración de autenticación que especifiques.
Los clústeres miembros de la flota existentes no se actualizan automáticamente cuando especificas una configuración predeterminada a nivel de la flota. De manera opcional, puedes aplicar tu configuración predeterminada a esos clústeres. Para obtener más información sobre la administración de la configuración a nivel de la flota, consulta Administra funciones a nivel de la flota.
Después de establecer un valor predeterminado a nivel de la flota, cualquier cambio local en la configuración de autenticación de los clústeres individuales se reemplaza cuando el controlador de la flota reconcilia el clúster con la configuración predeterminada.
Para configurar una configuración predeterminada a nivel de la flota, haz lo siguiente:
- Crea un ClientConfig en un archivo llamado
fleet-default.yaml. Para obtener más información sobre cómo crear el archivo, consulta los pasos de la CLI de gcloud en la sección Configura clústeres. Para aplicar la configuración predeterminada a nivel de la flota, ejecuta uno de los siguientes comandos:
Si la función del servicio de identidad a nivel de la flota no está habilitada, habilítala y especifica la configuración predeterminada a nivel de la flota:
gcloud container fleet identity-service enable --fleet-default-member-config=fleet-default.yaml
Si la función del servicio de identidad a nivel de la flota está habilitada, aplica la nueva configuración predeterminada a nivel de la flota:
gcloud container fleet identity-service apply --fleet-default-member-config=default-config.yaml
De forma predeterminada, los clústeres nuevos que registres en la flota usarán esta configuración. Los clústeres miembros existentes de la flota no heredan automáticamente la nueva configuración predeterminada.
Para aplicar la configuración predeterminada a un clúster miembro de la flota existente, ejecuta el siguiente comando:
gcloud container fleet identity-service apply --origin=fleet --membership=CLUSTER_NAME
Quita la configuración predeterminada a nivel de la flota
Para quitar la configuración predeterminada, ejecuta el siguiente comando:
gcloud container fleet identity-service delete --fleet-default-member-config
Los clústeres nuevos que registres en la flota no usarán automáticamente una configuración de autenticación.
Verifica la configuración del servicio de identidad
Después de completar la configuración a nivel de la flota, puedes verificar si los clústeres de tu flota se configuraron de forma correcta con la configuración del servicio de identidad que especificaste.
Console
En la consola de Google Cloud , ve a la página Administrador de funciones.
Ir a Administrador de funciones
Todas las funciones habilitadas se enumeran como Habilitadas en su panel.
Haz clic en Detalles en el panel Identity Service. En un panel de detalles, se muestra el estado de los clústeres registrados.
gcloud
Ejecuta el siguiente comando:
gcloud container fleet identity-service describe
¿Qué sigue?
Después de configurar los clústeres, continúa con la configuración de acceso del usuario.