Este documento está dirigido a administradores de clústeres u operadores de aplicaciones que quieran configurar GKE Identity Service en sus clústeres. Incluye instrucciones sobre cómo configurar GKE Identity Service a nivel de flota en tus clústeres con el proveedor de identidades que prefieras.
Habilitar APIs
Para empezar, debes habilitar las APIs pertinentes.
Consola
Asegúrate de que esté seleccionado el proyecto en el que están registrados los clústeres.
-
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.enable
permission. Learn how to grant roles.
gcloud
Ejecuta el siguiente comando para habilitar las APIs necesarias para la configuración:
gcloud services enable
gkehub.googleapis.com
container.googleapis.com
Configurar clústeres
Para configurar tus clústeres de forma que usen el proveedor que elijas, GKE Identity Service necesita que especifiques detalles sobre el proveedor de identidades, la información de los tokens JWT que proporciona para identificar a los usuarios y otra información que se proporciona al registrar GKE Identity Service como aplicación cliente.
Por ejemplo, si tu proveedor crea tokens de identidad con los siguientes campos (entre otros), donde iss
es el URI del proveedor de identidades, sub
identifica al usuario y groupList
enumera los grupos de seguridad a los que pertenece el usuario:
{ 'iss': 'https://server.example.com' 'sub': 'u98523-4509823' 'groupList': ['developers@example.corp', 'us-east1-cluster-admins@example.corp'] ... }
...tu configuración tendrá los siguientes campos correspondientes:
issueruri: 'https://server.example.com' username: 'sub' group: 'groupList' ...
El administrador de tu plataforma o la persona que gestione la identidad en tu organización debería proporcionarte la mayor parte de la información que necesitas para crear la configuración. Para ver ejemplos de configuraciones de algunos proveedores de identidades que se usan con frecuencia, consulta Configuraciones específicas de proveedores.
GKE Identity Service te permite crear o actualizar y aplicar esta configuración desde la Google Cloud consola o con la CLI de Google Cloud.
Consola
Habilitar el servicio de identidad de GKE
En la Google Cloud consola, ve a la página Gestor de funciones.
En el panel Servicio de identidad, haz clic en Habilitar y, a continuación, vuelve a hacer clic en Habilitar en el panel que se muestra. De esta forma, se crea una instancia del controlador de GKE Identity Service para gestionar el ciclo de vida de GKE Identity Service en los clústeres de tu flota.
Seleccionar clústeres
- Vuelve a la página Gestor de funciones y haz clic en Detalles en el panel Servicio de identidad para abrir el panel de detalles del servicio. Se mostrarán los clústeres de tu proyecto y su estado de GKE Identity Service a nivel de flota.
- Haz clic en Actualizar servicio de identidad para abrir el panel de configuración.
- Selecciona los clústeres que quieras configurar. Solo se pueden seleccionar tipos de clúster admitidos. Puedes elegir clústeres concretos o especificar que quieres que todos los clústeres se configuren con la misma configuración de identidad. Si has configurado valores predeterminados a nivel de flota, la configuración se reconciliará con el valor predeterminado. Para obtener más información, consulta Configurar valores predeterminados a nivel de flota.
- En el menú desplegable Proveedor de identidades, elige cómo quieres configurar el clúster. Si el clúster tiene una configuración de servicio de identidad de GKE, puedes actualizarla. Si un clúster registrado tiene una configuración de servicio de identidad de GKE que quieres usar, puedes copiarla en los clústeres seleccionados. Para crear una configuración completamente nueva, sigue las instrucciones del proveedor que hayas elegido, tal como se describe en la sección siguiente.
Definir los detalles del proveedor
Los detalles del proveedor que debe añadir dependen del tipo de proveedor de identidades que quiera usar en su configuración.
OIDC
- Selecciona Nuevo OpenID Connect para crear una configuración de OIDC.
- Especifica el nombre que quieras usar para identificar esta configuración en el campo Nombre del proveedor, que suele ser el nombre del proveedor de identidades. El nombre debe empezar por una letra, seguida de un máximo de 39 letras minúsculas, números o guiones, y no puede acabar en guion. No podrás editar este nombre una vez que hayas creado una configuración.
- Especifica el ID de cliente devuelto al registrar Identity Service para GKE con tu proveedor en el campo ID de cliente.
- Especifica el secreto de cliente que se debe compartir entre la aplicación cliente y el proveedor de identidades en el campo Client Secret (Secreto de cliente).
- En el campo URL de la entidad emisora, especifique el URI en el que se realizan las solicitudes de autorización a su proveedor de identidades.
- Haga clic en Siguiente para definir los atributos de OIDC.
Azure AD
- Selecciona Nuevo Azure Active Directory para crear una configuración de Azure AD.
- Especifica el nombre que quieras usar para identificar esta configuración en el campo Nombre del proveedor, que suele ser el nombre del proveedor de identidades. El nombre debe empezar por una letra, seguida de un máximo de 39 letras minúsculas, números o guiones, y no puede acabar en guion. No podrás editar este nombre una vez que hayas creado una configuración.
- Especifica el ID de cliente devuelto al registrar Identity Service para GKE con tu proveedor en el campo ID de cliente.
- Especifica el secreto de cliente que se debe compartir entre la aplicación cliente y el proveedor de identidades en el campo Client Secret (Secreto de cliente).
- Especifica el cliente que es la cuenta de Azure AD que se va a autenticar en Tenant.
- Haz clic en Siguiente para definir los atributos de Azure AD.
LDAP
- Selecciona LDAP para crear una configuración de LDAP.
- Especifica el nombre que quieras usar para identificar esta configuración en el campo Nombre del proveedor, que suele ser el nombre del proveedor de identidades. El nombre debe empezar por una letra, seguida de un máximo de 39 letras minúsculas, números o guiones, y no puede acabar en guion. No podrás 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 CA codificado en Base64 del servidor LDAP.
- Haga clic en Siguiente para configurar el servidor.
- Especifica el nombre distintivo, el filtro, el atributo de inicio de sesión y el atributo de identificador del usuario.
- Haz clic en Siguiente para definir los detalles del usuario.
- Si decide usar grupos, especifique el nombre completo, el filtro y el atributo de identificador del grupo.
- Haz clic en Siguiente para definir los detalles del grupo.
- Especifica el nombre de usuario y la contraseña de la cuenta de servicio.
- Haz clic en Hecho para definir el nombre de la cuenta de servicio.
Definir atributos
Los atributos que debes añadir dependen de tu proveedor de identidades y de las opciones de configuración que haya elegido el administrador de tu plataforma al configurar el proveedor para Identity Service for GKE.
OIDC
Rellena los atributos de configuración:
kubectl
URI de redirección: la URL de redirección y el puerto que usa gcloud CLI y que especifica el administrador de tu plataforma al registrarse. Normalmente, tiene el formatohttp://localhost:PORT/callback
.- Autoridad de certificación (opcional): si el administrador de la plataforma lo proporciona, una cadena de certificado codificada en PEM para el proveedor de identidades.
- Reclamación de grupo (opcional): reclamación JWT (nombre del campo) que usa tu proveedor para devolver los grupos de seguridad de una cuenta.
- Prefijo de grupo (opcional): el prefijo que quieras añadir a los nombres de los grupos de seguridad para evitar conflictos con los nombres de las reglas de control de acceso si tienes configuraciones de varios proveedores de identidades (normalmente, el nombre del proveedor).
- Proxy (opcional): dirección del servidor proxy que se usará para conectarse al proveedor de identidades, si procede. Puede que tengas que definirlo si, por ejemplo, tu clúster está en una red privada y necesita conectarse a un proveedor de identidades público. Por ejemplo:
http://user:password@10.10.10.10:8888
. - Ámbitos (opcional): ámbitos adicionales que requiera tu proveedor de identidades. Microsoft Azure y Okta requieren el permiso
offline_access
. Haz clic en Añadir ámbito para añadir más ámbitos si es necesario. - Reclamación de usuario (opcional): reclamación de JWT (nombre del campo) que usa tu proveedor para identificar una cuenta. Si no especificas ningún valor, GKE Identity Service usará "sub", que es la reclamación de ID de usuario que usan muchos proveedores. Puedes elegir otras reclamaciones, como "email" o "name", en función del proveedor de OpenID. Las reclamaciones que no sean "email" tienen el prefijo de la URL del emisor para evitar conflictos de nombres.
- Prefijo de usuario (opcional): el prefijo que quieres añadir a las reclamaciones de usuario para evitar conflictos con nombres ya utilizados, si no quieres usar el prefijo predeterminado.
- Parámetros adicionales (opcional): cualquier parámetro adicional necesario para su configuración, especificado como clave y valor del parámetro. Haga clic en Añadir parámetro para añadir más parámetros si es necesario.
- Habilitar token de acceso (opcional): si está habilitado, permite la compatibilidad con grupos para proveedores de OIDC como Okta.
- Implementar proxy de consola Google Cloud (opcional): si está habilitado, se implementa un proxy que permite que la consola Google Cloud se conecte a un proveedor de identidades local que no sea accesible públicamente a través de Internet.
Azure AD
Rellena los atributos de configuración:
kubectl
URI de redirección: la URL de redirección y el puerto que usa gcloud CLI y que especifica el administrador de tu plataforma al registrarse. Normalmente, tiene el formatohttp://localhost:PORT/callback
.- Reclamación de usuario (opcional): reclamación de JWT (nombre del campo) que usa tu proveedor para identificar una cuenta. Si no especifica ningún valor, GKE Identity Service usará un valor en el orden "email", "preferred_username" o "sub" para obtener los detalles del usuario.
- Proxy (opcional): dirección del servidor proxy que se usará para conectarse al proveedor de identidades, si procede. Puede que tengas que definirlo si, por ejemplo, tu clúster está en una red privada y necesita conectarse a un proveedor de identidades público. Por ejemplo:
http://user:password@10.10.10.10:8888
.
Añadir proveedor de identidades
- Si tienes otros proveedores de identidades que quieres configurar para tu flota, puedes añadirlos aquí. Sigue los pasos para especificar proveedores de identidades adicionales.
Actualizar la configuración
- Haz clic en Actualizar configuración. De esta forma, se instala GKE Identity Service si es necesario (solo en clústeres de EKS; los clústeres de GKE ya tienen GKE Identity Service instalado de forma predeterminada) y se aplica la configuración del cliente en los clústeres seleccionados.
gcloud
Crea el archivo de configuración
El servicio de identidad de GKE usa un tipo de recurso personalizado (CRD) de Kubernetes llamado ClientConfig para la configuración del clúster, con campos para toda la información que necesita el servicio de identidad de GKE para interactuar con el proveedor de identidades.
En las siguientes secciones se explica cómo configurar OIDC y LDAP. Para ello, debes crear un archivo llamado auth-config.yaml
con tu configuración.
OIDC
En el siguiente archivo se muestran las configuraciones oidc
y azuread
. Para obtener más información sobre cuándo usar oidc
o azuread
, consulta Configuraciones específicas de proveedores.
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: NAME
proxy: PROXY_URL
azureAD:
clientID: CLIENT_ID
clientSecret: CLIENT_SECRET
tenant: TENANT_UUID
kubectlRedirectURI: http://localhost:PORT/callback
Si has configurado más de un proveedor de identidades, puedes incluir varias configuraciones de autenticación en el archivo auth-config.yaml
, en el anclaje authentication
, con el mismo formato que en la configuración anterior.
En la siguiente tabla se describen los campos de los objetos ClientConfig oidc
y azuread
. La mayoría de los campos son opcionales. Los campos que debes añadir dependen de tu proveedor de identidades y de las opciones de configuración que haya elegido el administrador de tu plataforma al configurar el proveedor para el servicio de identidad de GKE.
Campo | Obligatorio | Descripción | Formato |
---|---|---|---|
name | yes | El nombre que quieras usar para identificar esta configuración, normalmente el nombre del proveedor de identidades. El nombre de una configuración debe empezar por una letra, seguida de un máximo de 39 letras minúsculas, números o guiones, y no puede acabar en guion. | Cadena |
certificateAuthorityData | No | Si el administrador de la plataforma lo proporciona, una cadena de certificado codificada en PEM para el proveedor de identidades. Incluye la cadena resultante en certificateAuthorityData como una sola línea. |
Cadena |
clientID | Sí | El identificador de cliente devuelto al registrar Identity Service for GKE con tu proveedor. | Cadena |
clientSecret | Sí | El secreto de cliente devuelto al registrar Identity Service para GKE con tu proveedor. | Cadena |
deployCloudConsoleProxy | No | Especifica si se ha implementado un proxy que permite que la consola se conecte a un proveedor de identidades local al que no se puede acceder públicamente a través de Internet. Google Cloud De forma predeterminada, esta opción está definida en false . |
Booleano |
extraParams | No | Parámetros clave=valor adicionales que se enviarán al proveedor de identidades, especificados como una lista separada por comas. Por ejemplo, `prompt=consent,access_type=offline`. | Lista delimitada por comas |
enableAccessToken | No | Si está habilitado, GKE Identity Service puede usar el endpoint userinfo del proveedor de identidades para obtener información de los grupos cuando un usuario inicia sesión desde la línea de comandos. De esta forma, puedes usar grupos de seguridad para la autorización si tienes un proveedor (como Okta) que proporcione reclamaciones de grupos desde este endpoint. Si no se define, se considera que es false . |
Booleano |
groupsClaim | No | La reclamación JWT (nombre del campo) que usa tu proveedor para devolver los grupos de seguridad de una cuenta. | Cadena |
groupPrefix | No | El prefijo que quieres añadir a los nombres de los grupos de seguridad para evitar conflictos con los nombres de las reglas de control de acceso si tienes configuraciones para varios proveedores de identidades (normalmente, el nombre del proveedor). | Cadena |
issuerURI | Sí | El URI en el que se realizan las solicitudes de autorización a tu proveedor de identidades. El URI debe usar HTTPS. | URL String |
kubectlRedirectURI | Sí | La URL de redirección y el puerto que usa gcloud CLI y que especifica el administrador de tu plataforma durante el registro, normalmente con el formato http://localhost:PORT/callback . |
URL String |
permisos | Sí | Permisos adicionales que se enviarán al proveedor de OpenID. Por ejemplo, Microsoft Azure y Okta requieren el permiso offline_access . |
Lista delimitada por comas |
userClaim | No | La reclamación JWT (nombre del campo) que usa tu proveedor para identificar una cuenta de usuario. Si no especificas ningún valor, GKE Identity Service usará "sub", que es la reclamación de ID de usuario que usan muchos proveedores. Puedes elegir otras reclamaciones, como "email" o "name", en función del proveedor de OpenID. Las reclamaciones que no sean "email" tienen el prefijo de la URL del emisor para evitar conflictos de nombres. | Cadena |
userPrefix | No | El prefijo que quieres que se añada a las reclamaciones de usuario para evitar conflictos con los nombres ya existentes, si no quieres usar el prefijo predeterminado. | Cadena |
cliente | Sí | El tipo de cuenta de Azure AD que se va a autenticar. Los valores admitidos son el ID de arrendatario o el nombre de arrendatario de las cuentas que pertenecen a un arrendatario específico. El nombre de inquilino también se conoce como dominio principal. Para obtener información sobre cómo encontrar estos valores, consulta Buscar el ID de cliente y el nombre de dominio principal de Microsoft Azure AD. | Cadena |
proxy | No | Dirección del servidor proxy que se va a usar para conectarse al proveedor de identidades, si procede. Puede que tengas que definirlo si, por ejemplo, tu clúster está en una red privada y necesita conectarse a un proveedor de identidades público. Por ejemplo: http://user:password@10.10.10.10:8888 . |
Cadena |
SAML
En el siguiente archivo 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: <>
En la siguiente tabla se describen los campos del objeto ClientConfig saml
. Los campos que debes añadir dependen de tu proveedor de identidades y de las opciones de configuración que haya elegido el administrador de tu plataforma al configurar el proveedor para el servicio de identidad de GKE.
Campo | Obligatorio | Descripción | Formato |
---|---|---|---|
name | yes | El nombre que quieras usar para identificar esta configuración, normalmente el nombre del proveedor de identidades. El nombre de una configuración debe empezar por una letra, seguida de un máximo de 39 letras minúsculas, números o guiones, y no puede acabar en guion. | Cadena |
idpEntityID | Sí | El ID de entidad SAML del proveedor de SAML, especificado en formato URI. Por ejemplo: https://www.idp.com/saml . |
URL String |
idpSingleSignOnURI | Sí | El punto de conexión de inicio de sesión único del proveedor de SAML, especificado en formato URI. Por ejemplo: https://www.idp.com/saml/sso . |
URL String |
idpCertificateDataList | Sí | Corresponde a los certificados del proveedor de identidades que se usan para verificar la respuesta SAML. Estos certificados deben estar codificados en Base64 estándar y tener formato PEM. Solo se admiten dos certificados como máximo para facilitar la rotación de certificados del proveedor de identidades. | Cadena |
userAttribute | No | Nombre del atributo de la respuesta SAML que contiene el nombre de usuario. | Cadena |
groupsAttribute | No | Nombre del atributo de la respuesta SAML que contiene la información del grupo del usuario. | Cadena |
userPrefix | No | El prefijo que quieres que se añada a las reclamaciones de usuario para evitar conflictos con los nombres ya existentes, si no quieres usar el prefijo predeterminado. | Cadena |
groupPrefix | No | El prefijo que quieres añadir a los nombres de los grupos de seguridad para evitar conflictos con los nombres de las reglas de control de acceso si tienes configuraciones para varios proveedores de identidades (normalmente, el nombre del proveedor). | Cadena |
attributeMapping | No | La asignación de atributos de usuario adicionales. | Cadena |
certificateAuthorityData | No | Si el administrador de la plataforma lo proporciona, una cadena de certificado codificada en PEM para el proveedor de identidades. Incluye la cadena resultante en certificateAuthorityData como una sola línea. |
Cadena |
preferredAuthentication | No | Nombre del método de autenticación preferido configurado en el clúster. | Cadena |
LDAP
En el siguiente archivo 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: PASSWORD
En la siguiente tabla se describen los campos del objeto ClientConfig ldap
. Los campos que debes añadir dependen de tu proveedor de identidades y de las opciones de configuración que haya elegido el administrador de tu plataforma al configurar el proveedor para el servicio de identidad de GKE:
Campo | Obligatorio | Descripción | Formato |
---|---|---|---|
name | yes | Nombre para identificar esta configuración de LDAP. | Cadena |
servidor | |||
host | yes | Nombre de host o dirección IP del servidor LDAP. El puerto es opcional y, si no se especifica, se usará el puerto 389 de forma predeterminada. Por ejemplo, ldap.server.example.com o 10.10.10.10:389 .
|
Cadena |
connectionType | yes | Tipo de conexión LDAP que se debe usar al conectarse al servidor LDAP. Si se especifica starttls o ldaps , el campo certificateAuthorityData no debe estar vacío.
|
Cadena |
certificateAuthorityData | Obligatorio para determinados tipos de conexión LDAP | Contiene un certificado de autoridad de certificación con formato PEM y codificado en Base64 para el servidor LDAP. Solo se debe proporcionar para las conexiones ldaps y startTLS .
|
Cadena |
usuario | |||
baseDN | yes | Ubicación del subárbol en el directorio LDAP en el que se buscarán las entradas de usuario. | Cadena en formato DN. |
loginAttribute | no | Nombre del atributo que coincide con el nombre de usuario introducido. Se usa para buscar el usuario en la base de datos LDAP, por ejemplo, (<LoginAttribute>=<username>) , y se combina con el campo de filtro opcional. El valor predeterminado es userPrincipalName .
|
Cadena |
filtrar | no | Filtro opcional que se aplica al buscar el usuario. Se puede usar para restringir aún más las cuentas de usuario que pueden iniciar sesión. Si no se especifica, se asigna el valor (objectClass=User) de forma predeterminada.
|
Cadena |
identifierAttribute | no | Determina qué atributo se debe usar como identidad del usuario una vez que se haya autenticado.
Es diferente del campo loginAttribute para permitir que los usuarios inicien sesión con un nombre de usuario, pero que su identificador real sea una dirección de correo o un nombre completo (DN). Por ejemplo, si se asigna el valor sAMAccountName a loginAttribute
y el valor userPrincipalName a identifierAttribute,
un usuario podría iniciar sesión como bsmith , pero las políticas de
control de acceso basado en roles del usuario se escribirían como bsmith@example.com .
Se recomienda usar userPrincipalName , ya que será único para cada usuario. Si no se especifica, el valor predeterminado es userPrincipalName .
|
Cadena |
Grupo (campo opcional) | |||
baseDN | yes | Ubicación del subárbol en el directorio LDAP en el que se buscarán las entradas de grupo. | Cadena |
filtrar | no | Filtro opcional que se usa al buscar los grupos a los que pertenece un usuario. Se puede usar para que solo se incluyan determinados grupos y, de esta forma, reducir el número de grupos devueltos por usuario. El valor predeterminado es (objectClass=Group) .
|
Cadena |
identifierAttribute | no | Nombre identificativo de cada grupo al que pertenece un usuario. Por ejemplo, si se define como distinguishedName , los RBACs y otras expectativas de grupo deben escribirse como DNs completos. Si no se especifica, el valor predeterminado es distinguishedName .
|
Cadena |
serviceAccount/simpleBindCredentials | |||
dn | yes | Nombre completo del usuario de la cuenta de servicio. | Cadena |
contraseña | yes | La contraseña del usuario de la cuenta de servicio. | Cadena |
Habilitar el servicio de identidad de GKE
Para habilitar GKE Identity Service en tu proyecto, ejecuta el siguiente comando:
gcloud container fleet identity-service enable
De esta forma, se crea una instancia de controlador de GKE Identity Service para gestionar el ciclo de vida de GKE Identity Service en los clústeres de tu flota. Solo tienes que ejecutar este comando una vez por proyecto para usar GKE Identity Service con todos los clústeres admitidos registrados en la flota de tu proyecto.
También puedes habilitar Identity Service para GKE con una configuración predeterminada a nivel de flota. Con esta configuración, la configuración del proveedor de servicios de identidad de GKE que especifiques se aplicará automáticamente a todos los clústeres de GKE registrados en tu flota durante la creación del clúster. Google Cloud Para obtener más información sobre cómo hacerlo, consulta el artículo Configurar valores predeterminados a nivel de flota.
Aplica la configuración a un clúster
Para instalar GKE Identity Service si es necesario (solo en clústeres de EKS; todos los demás tipos de clúster admitidos ya tienen GKE Identity Service instalado de forma predeterminada) y 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
Sustituye CLUSTER_NAME
por el nombre único de tu clúster en la flota.
Al ejecutar este comando, la configuración la gestiona el controlador de Identity Service de GKE. El controlador concilia los cambios locales que se hayan hecho en la configuración del cliente de Identity Service for GKE con la configuración especificada en esta configuración.
Esto permite que el servicio de identidad de GKE recupere información de Grupos de Google de las cuentas de usuario que inician sesión con su ID de Google. Esta configuración se aplica a los clústeres de Google Distributed Cloud (tanto VMware como bare metal) a partir de la versión 1.13 de GKE Enterprise. Para obtener más información sobre la función Grupos de Google, consulta el artículo Configurar la pasarela de conexión con Grupos de Google.
Ten en cuenta que, si ya tienes una configuración en tu clúster para alguna de las opciones de autenticación, se aplicará lo siguiente:
- Si ya tienes configuraciones a nivel de clúster para proveedores de OIDC, al aplicar una configuración de GKE Identity Service a nivel de flota al clúster, se sobrescribirán todas las especificaciones de autenticación.
- Si tienes configuraciones a nivel de clúster para proveedores que no son compatibles con la configuración a nivel de flota, esta configuración fallará. Debe eliminar la configuración del proveedor para aplicar la configuración a nivel de flota.
Si ya no quieres que el controlador de GKE Identity Service gestione tu configuración (por ejemplo, si quieres usar otra opción u otras opciones de autenticación), puedes inhabilitar esta función siguiendo las instrucciones que se indican en Inhabilitar la gestión de GKE Identity Service.
Configuraciones específicas de proveedores
En esta sección se ofrecen directrices de configuración para proveedores de OIDC (como Azure AD y Okta), incluida una configuración de ejemplo que puede copiar y editar con sus propios detalles.
Azure AD
Esta es la configuración predeterminada para configurar GKE Identity Service con Azure AD. Con esta configuración, GKE Identity Service puede obtener información de usuarios y grupos de Azure AD, y puedes configurar el control de acceso basado en roles (RBAC) de Kubernetes en función de los grupos. Sin embargo, si usas esta configuración, solo podrás recuperar unos 200 grupos por usuario.
Si necesitas recuperar más de 200 grupos por usuario, consulta las instrucciones de Azure AD (avanzado).
...
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 (avanzado)
Esta configuración opcional de Azure AD permite que GKE Identity Service obtenga información de usuarios y grupos sin límite en el número de grupos por usuario mediante la API Microsoft Graph. Para obtener información sobre las plataformas que admiten esta configuración, consulta Configuración avanzada de Azure AD.
Si necesitas recuperar menos de 200 grupos por usuario, te recomendamos que uses la configuración predeterminada con un oidc
en tu ClientConfig. Para obtener más información, consulta las instrucciones de 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.
...
Sustituye GROUP_FORMAT por el formato en el que quieras obtener la información del grupo. Este campo puede tomar valores correspondientes a ID
o NAME
de los grupos de usuarios. Este ajuste solo está disponible para los clústeres de las implementaciones de Google Distributed Cloud (locales).
Okta
A continuación, se explica cómo configurar la autenticación con usuarios y grupos mediante Okta como proveedor de identidades. Esta configuración permite que GKE Identity Service obtenga las reclamaciones de usuarios y grupos mediante un token de acceso y el endpoint 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.
...
Configurar valores predeterminados a nivel de flota
Puedes habilitar GKE Identity Service con una configuración predeterminada a nivel de flota. Con esta configuración, GKE Identity Service se habilitará automáticamente en todos los clústeres de GKE en Google Cloud registrados durante la creación del clúster o clústeres de GKE nuevos con la configuración que especifiques. Si tienes clústeres miembros de la flota cuando habilitas esta función, no se actualizan automáticamente con los valores predeterminados de la flota, aunque puedes aplicarles tu configuración predeterminada. Para obtener más información sobre cómo gestionar la configuración a nivel de flota, consulta Gestionar funciones a nivel de flota.
Para configurar GKE Identity Service con una configuración predeterminada a nivel de flota, haz lo siguiente:
- Crea un archivo llamado
fleet-default.yaml
y rellénalo según las instrucciones de la sección Crear el archivo de configuración. Habilita GKE Identity Service con la configuración predeterminada a nivel de flota:
gcloud container fleet identity-service enable --fleet-default-member-config=fleet-default.yaml
Para modificar la configuración predeterminada a nivel de flota o añadir una si GKE Identity Service ya está habilitado en tu flota sin esta función, ejecuta el siguiente comando:
gcloud container fleet identity-service apply --fleet-default-member-config=default-config.yaml
Los clústeres miembros de la flota que hayas registrado antes de configurar la configuración predeterminada a nivel de flota no heredarán automáticamente la configuración predeterminada. Para aplicar la configuración predeterminada a un clúster miembro de la flota, ejecuta el siguiente comando:
gcloud container fleet identity-service apply --origin=fleet --membership=CLUSTER_NAME
Para inhabilitar los valores predeterminados a nivel de flota de GKE Identity Service, ejecuta el siguiente comando para quitar la configuración predeterminada:
gcloud container fleet identity-service delete --fleet-default-member-config
Verificar la configuración del servicio de identidad
Una vez que hayas completado la configuración a nivel de flota, podrás verificar si los clústeres de tu flota se han configurado correctamente con la configuración del servicio de identidad que hayas especificado.
Consola
En la Google Cloud consola, ve a la página Gestor de funciones.
Todas las funciones habilitadas se muestran como Habilitadas en su panel.
En el panel Servicio de identidad, haga clic en DETALLES. 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
Siguientes pasos
Una vez que hayas configurado los clústeres, continúa con la configuración del acceso de los usuarios.