Configura clústeres con GKE Identity Service a nivel de la flota
Este documento está dirigido a los administradores de clústeres o los operadores de aplicaciones que deseen configurar GKE Identity Service en sus clústeres. Tiene instrucciones para configurar GKE Identity Service a nivel de la flota en tus clústeres con tu proveedor de identidad preferido.
Habilita las APIs
Para comenzar, debes habilitar las APIs relevantes.
Console
Asegúrate de que el proyecto en el que se registran los clústeres esté seleccionado.
-
Enable the GKE Hub and Kubernetes Engine APIs.
gcloud
Ejecuta el siguiente comando a fin de habilitar las API necesarias para la configuración:
gcloud services enable
gkehub.googleapis.com
container.googleapis.com
Configura los clústeres
Para configurar los clústeres para que usen el proveedor seleccionado, GKE Identity Service necesita que especifiques detalles sobre el proveedor de identidad, la información en los tokens JWT que proporciona para la identificación de usuarios y otra información brindada cuando registras GKE Identity Service como una aplicación cliente.
Por ejemplo, si tu proveedor crea tokens de identidad con los siguientes campos (entre otros), en los que iss
es el URI del proveedor de identidad, sub
identifica al usuario y groupList
enumera los grupos de seguridad que usuario pertenece a:
{ '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 la plataforma, o la persona que administre 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 configuración para algunos proveedores de identidad de uso frecuente, consulta Configuraciones específicas del proveedor.
GKE Identity Service te permite crear o actualizar esta configuración y aplicarla desde la consola de Google Cloud o a través de Google Cloud CLI.
Console
Habilita GKE Identity Service
En la consola de Google Cloud, ve a la página Administrador de funciones.
Haz clic en Habilitar en el panel Identity Service y, luego, vuelve a hacer clic en Habilitar en el panel que se muestra. Esto crea una instancia nueva del controlador de GKE Identity Service para administrar el ciclo de vida de este en los clústeres de tu flota.
Seleccionar clústeres
- En la página Administrador de funciones, haz clic en Detalles en el panel Identity Service para abrir el panel de detalles del servicio. Esto muestra los clústeres de tu proyecto y su estado de GKE Identity Service a nivel de la flota.
- Haz clic en Actualizar el servicio de identidad para abrir el panel de configuración.
- Selecciona los clústeres que deseas configurar. Solo se pueden seleccionar tipos de clúster compatibles. 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. Para obtener más información, consulta Configura los valores predeterminados a nivel de la flota.
- En el menú desplegable Proveedor de identidad, elige cómo deseas configurar el clúster. Si el clúster tiene una configuración de GKE Identity Service existente, puedes optar por actualizarla. Si un clúster registrado existente tiene una configuración de GKE Identity Service que deseas usar, puedes elegir copiarla en los clústeres seleccionados. Para crear una configuración completamente nueva, sigue las instrucciones del proveedor que elegiste, como se describe en la siguiente sección.
Configura los detalles del proveedor
Los detalles del proveedor que debes agregar dependen del tipo de proveedor de identidad que deseas usar para la configuración.
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 minúscula 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 que se muestra cuando registras GKE Identity Service con tu proveedor 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 minúscula 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 que se muestra cuando registras GKE Identity Service con tu proveedor 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 minúscula 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.
Establece atributos
Los atributos que debes agregar dependen de tu proveedor de identidad y las opciones de configuración que elige el administrador de la plataforma cuando configuras el proveedor para GKE Identity Service.
OIDC
Completa los atributos de configuración:
- 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 string de certificado con codificación PEM para el proveedor de identidad.
- Reclamación grupal (opcional): La reclamación de JWT (nombre del 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í, GKE Identity Service 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 el proxy de la consola de Google Cloud (opcional): Si se habilita, se implementa un proxy que permite que la consola de Google Cloud se conecte a un proveedor de identidad local al que no se puede acceder públicamente a través de Internet.
- URI de redireccionamiento de
Azure AD
Completa los atributos de configuración:
- 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í, GKE Identity Service 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
Agregar un proveedor de identidad
- Si tienes proveedores de identidad adicionales que deseas configurar para tu flota, tienes la opción de agregar los proveedores aquí. Sigue los pasos para especificar proveedores de identidad adicionales.
Actualizar configuración
- Haz clic en Actualizar configuración. Esto instala GKE Identity Service si es necesario (solo clústeres de EKS, los clústeres de GKE que ya tienen instalado GKE Identity Service de forma predeterminada) y aplica la configuración del cliente en los clústeres seleccionados.
gcloud
Cree el archivo de configuración
GKE Identity Service 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 GKE Identity Service para interactuar con el proveedor de identidad.
En las siguientes secciones, se proporciona la configuración para OIDC y LDAP, en los que creas un archivo llamado auth-config.yaml
con la configuración.
OIDC
En el siguiente archivo, se muestra una configuración oidc
y una configuración azuread
. Para obtener más información acerca de cuándo usar oidc
o azuread
, 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: NAME
proxy: PROXY_URL
azureAD:
clientID: CLIENT_ID
clientSecret: CLIENT_SECRET
tenant: TENANT_UUID
kubectlRedirectURI: http://localhost:PORT/callback
Si configuraste más de un proveedor de identidad, puedes enumerar varias configuraciones de autenticación en el archivo auth-config.yaml
debajo del anclaje authentication
en el mismo formato que en la configuración anterior.
En la siguiente tabla, se describen los campos del objeto oidc
y azuread
del ClientConfig. La mayoría de los campos son opcionales. Los campos que debes agregar dependen de tu proveedor de identidad y las opciones de configuración que elige el administrador de la plataforma cuando configuras el proveedor de GKE Identity Service.
Campo | Obligatorio | Descripción | Formato |
---|---|---|---|
nombre | sí | El nombre que deseas usar para identificar esta configuración, que suele ser el nombre del proveedor de identidad. El nombre de configuración debe comenzar con una letra minúscula seguida con un máximo de 39 letras minúsculas, números o guiones, y no puede terminar con un guion. | String |
certificateAuthorityData | No | Si el administrador de la plataforma lo proporciona, una string de certificado con codificación PEM para el proveedor de identidad. Incluye la string resultante en certificateAuthorityData como una sola línea. |
String |
clientID | Sí | El identificador de cliente que se muestra cuando registras GKE Identity Service con tu proveedor. | String |
clientSecret | Sí | El secreto del cliente que se muestra cuando registras GKE Identity Service con tu proveedor. | String |
deployCloudConsoleProxy | No | Especifica si se implementa un proxy que permite que la consola de Google Cloud se conecte a un proveedor de identidad local al que no se puede acceder públicamente a través de Internet. El valor predeterminado es de false . |
Booleano |
extraParams | No | Parámetros clave=valor adicionales para enviar al proveedor de identidad, especificado como una lista separada por comas, por ejemplo, “prompt=consent,access_type=offline”. | Lista delimitada por comas |
enableAccessToken | No | Si se habilita, GKE Identity Service puede usar el extremo userinfo
del proveedor de identidad para obtener información de los grupos cuando un usuario accede desde la
línea de comandos. Esto te permite usar grupos de seguridad para autorización si tienes
un proveedor (como Okta) que proporcione reclamaciones de grupos desde este extremo. Si
no la estableces, se considerará false . |
Booleano |
groupsClaim | No | La reclamación de JWT (nombre de campo) que usa tu proveedor para mostrar los grupos de seguridad de una cuenta. | String |
groupPrefix | No | 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). | String |
issuerURI | Sí | El URI en el que se realizan las solicitudes de autorización al proveedor de identidad. El URI debe usar HTTPS. | String de URL |
kubectlRedirectURI | Sí | 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 formato http://localhost:PORT/callback . |
String de URL |
scopes | Sí | Los permisos adicionales que se deben enviar al proveedor de OpenID. Por ejemplo, Microsoft Azure y Okta
requieren el permiso offline_access . |
Lista delimitada por comas |
userClaim | No | La reclamación de JWT (nombre de campo) que usa tu proveedor para identificar una cuenta de usuario. Si no especificas un valor aquí, GKE Identity Service 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. | String |
userPrefix | No | El prefijo que deseas anteponer a las reclamaciones de los usuarios para evitar conflictos con los nombres existentes, si no deseas usar el prefijo predeterminado. | String |
usuario | Sí | El tipo de cuenta de Azure AD que se autenticará. Los valores admitidos son el ID del usuario o su nombre para las cuentas que pertenecen a una instancia específica. El nombre del usuario también se conoce como dominio principal. Para obtener detalles sobre cómo encontrar estos valores, consulta Encuentra el ID de usuario de Microsoft Azure AD y el nombre de dominio principal. | String |
proxy | No | 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 . |
String |
SAML
En el siguiente archivo, se muestra una configuración 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 de ClientConfig saml
. Los campos que debes agregar dependen de tu proveedor de identidad y las opciones de configuración que elige el administrador de la plataforma cuando configuras el proveedor de GKE Identity Service.
Campo | Obligatorio | Descripción | Formato |
---|---|---|---|
nombre | sí | El nombre que deseas usar para identificar esta configuración, que suele ser el nombre del proveedor de identidad. El nombre de configuración debe comenzar con una letra minúscula seguida con un máximo de 39 letras minúsculas, números o guiones, y no puede terminar con un guion. | String |
idpEntityID | Sí | El ID de la entidad SAML para el proveedor de SAML, especificado en un formato de URI. Por ejemplo: https://www.idp.com/saml . |
String de URL |
idpSingleSignOnURI | Sí | El extremo de SSO del proveedor de SAML, especificado en un formato de URI. Por ejemplo: https://www.idp.com/saml/sso . |
String de URL |
idpCertificateDataList | Sí | Corresponde a los certificados del proveedor de identidad que se usaron para verificar la respuesta de SAML. Estos certificados deben estar codificados en base64 estándar y tener el formato PEM. Solo se admite un máximo de dos certificados para facilitar la rotación de certificados del proveedor de identidad. | String |
userAttribute | No | Nombre del atributo en la respuesta de SAML que contiene el nombre de usuario. | String |
groupsAttribute | No | Nombre del atributo en la respuesta de SAML que contiene la información del grupo del usuario. | String |
userPrefix | No | El prefijo que deseas anteponer a las reclamaciones de los usuarios para evitar conflictos con los nombres existentes, si no deseas usar el prefijo predeterminado. | String |
groupPrefix | No | 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). | String |
attributeMapping | No | La asignación de atributos de usuario adicionales. | String |
certificateAuthorityData | No | Si el administrador de la plataforma lo proporciona, una string de certificado con codificación PEM para el proveedor de identidad. Incluye la cadena resultante en certificateAuthorityData como una sola línea. |
String |
preferredAuthentication | No | Nombre del método de autenticación preferido configurado en el clúster. | String |
LDAP
En el siguiente archivo, se muestra una configuración 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 de ClientConfig ldap
. Los campos que debes agregar dependen de tu proveedor de identidad y las opciones de configuración que elige el administrador de la plataforma cuando configuras el proveedor de GKE Identity Service:
Campo | Obligatorio | Descripción | Formato |
---|---|---|---|
nombre | sí | Un nombre para identificar esta configuración de LDAP | String |
servidor | |||
host | sí | Nombre de host o dirección IP del servidor LDAP. El puerto es opcional y se establece de forma predeterminada en 389, si no se especifica. Por ejemplo, ldap.server.example.com o 10.10.10.10:389 .
|
String |
connectionType | sí | Es el tipo de conexión LDAP que se utilizará cuando se conecte al servidor LDAP. Si se especifica starttls o ldaps , el campo certificateAuthorityData no debe estar vacío.
|
String |
certificateAuthorityData | Obligatorio para ciertos tipos de conexión LDAP | Contiene un certificado de autoridad certificadora con formato PEM y codificado en Base64 para el servidor LDAP. Solo se debe proporcionar para conexiones de ldaps y startTLS .
|
String |
usuario | |||
baseDN | sí | La ubicación del subárbol en el directorio LDAP para buscar entradas de usuario. | String en formato DN. |
loginAttribute | no | El nombre del atributo que coincide con el nombre de usuario de entrada. Se usa para encontrar al usuario en la base de datos de LDAP, por ejemplo (<LoginAttribute>=<username>) , y se combina con el campo de filtro opcional. El valor predeterminado es userPrincipalName .
|
String |
filtro | no | Filtro opcional que se debe aplicar cuando se busca el usuario. Esto se puede usar para restringir aún más las cuentas de usuario que tienen acceso. Si no se especifica, se establece de forma predeterminada como (objectClass=User) .
|
String |
identifierAttribute | no | Determina qué atributo
usar como identidad del usuario después de la autenticación.
Esto es diferente del campo loginAttribute para
permitir que los usuarios accedan con un nombre de usuario, pero que
su identificador real sea una dirección de correo electrónico o un Nombre distinguido
(DN) completo. Por ejemplo, configurar loginAttribute
en sAMAccountName y identifierAttribute en userPrincipalName
permitiría que un usuario acceda como bsmith , pero las políticas de
RBAC reales 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 .
|
String |
grupo (campo opcional) | |||
baseDN | sí | La ubicación del subárbol en el directorio LDAP para buscar entradas de grupo. | String |
filtro | no | El filtro opcional que se usará cuando se busquen grupos a los que pertenece un usuario. Esto se puede usar para hacer coincidir de manera explícita solo determinados grupos, a fin de reducir la cantidad de grupos que se muestran para cada usuario. La configuración predeterminada es (objectClass=Group) .
|
String |
identifierAttribute | no | El nombre de identificación de cada grupo al que pertenece un usuario. Por ejemplo, si se configura como distinguishedName , los RBAC y otras expectativas del grupo deben escribirse como Nombres distinguidos completos. Si no se especifica, el valor predeterminado es distinguishedName .
|
String |
serviceAccount/simpleBindCredentials | |||
dn | sí | El Nombre distinguido del usuario de la cuenta de servicio. | String |
contraseña | sí | La contraseña del usuario de la cuenta de servicio. | String |
Habilita GKE Identity Service
Para habilitar GKE Identity Service para tu proyecto, ejecuta el siguiente comando:
gcloud container fleet identity-service enable
Esto crea una instancia nueva del controlador de GKE Identity Service para administrar el ciclo de vida de este en los clústeres de tu flota. Solo debes ejecutar este comando una vez por proyecto para usar GKE Identity Service con todos los clústeres compatibles registrados en tu flota de proyectos.
De manera opcional, puedes habilitar GKE Identity Service con una configuración predeterminada a nivel de la flota. Con esta configuración, la configuración del proveedor de GKE Identity Service que especifiques se aplica automáticamente a cada clúster de GKE en Google Cloud registrado en tu flota durante la creación del clúster. Puedes obtener más información para hacerlo en Configura los valores predeterminados a nivel de la flota.
Aplica la configuración a un clúster
Para instalar GKE Identity Service si es necesario (solo clústeres de EKS, todos los demás tipos de clústeres compatibles 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
Reemplaza CLUSTER_NAME
por el nombre único de tu clúster dentro de la flota.
Cuando se ejecuta este comando, el controlador de GKE Identity Service administra la 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.
Esto permite que GKE Identity Service 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 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 de Grupos de Google, consulta Configura la puerta de enlace de Connect con Grupos de Google.
Ten en cuenta que si tienes una configuración existente en tu clúster para las opciones de autenticación, se aplica lo siguiente:
- Si tienes configuraciones a nivel de clúster existentes para los proveedores de OIDC, la aplicación de una configuración de GKE Identity Service a nivel de la flota al clúster reemplaza todas tus especificaciones de autenticación existentes.
- Si tienes configuraciones existentes a nivel de 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.
Si ya no deseas que el controlador de GKE Identity Service administre tu configuración, por ejemplo, si deseas usar opciones de autenticación diferentes, puedes inhabilitar esta función; para ello, sigue las instrucciones incluidas en Inhabilita la administración de GKE Identity Service.
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 GKE Identity Service con Azure AD. El uso de esta configuración permite que GKE Identity Service 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 GKE Identity Service 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 plataformas que admiten esta configuración, consulta Configuración avanzada para Azure AD.
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 (local).
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 GKE Identity Service 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 habilitar GKE Identity Service con una configuración predeterminada a nivel de la flota. Con esta configuración, cada clúster de GKE en Google Cloud registrado durante la creación del clúster o clúster de GKE tendrá GKE Identity Service habilitado en el clúster con la configuración que especifiques. Si tienes clústeres de miembros de la flota existentes cuando habilites esta función, no se actualizarán automáticamente con los parámetros predeterminados de la flota, aunque puedes aplicarles tu configuración predeterminada. 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.
Para configurar GKE Identity Service con una configuración predeterminada a nivel de la flota, haz lo siguiente:
- Crea un archivo llamado
fleet-default.yaml
y propágalo según Crea el archivo de configuración. Habilita GKE Identity Service con una configuración predeterminada a nivel de la flota:
gcloud container fleet identity-service enable --fleet-default-member-config=fleet-default.yaml
Para modificar la configuración predeterminada existente a nivel de la flota o agregar 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 de miembros de la flota existentes que registraste antes de configurar la configuración predeterminada a nivel de la flota no heredan automáticamente la configuración predeterminada. Para aplicar la configuración predeterminada a un clúster de miembro de flota existente, ejecuta el siguiente comando:
gcloud container fleet identity-service apply --origin=fleet --membership=CLUSTER_NAME
Para inhabilitar los valores predeterminados a nivel de la flota para GKE Identity Service, ejecuta el siguiente comando para quitar la configuración predeterminada:
gcloud container fleet identity-service delete --fleet-default-member-config
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.