Configurar clústeres con GKE Identity Service a nivel de flota

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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

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

  1. En la Google Cloud consola, ve a la página Gestor de funciones.

    Ir a Gestor de funciones

  2. 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

  1. 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.
  2. Haz clic en Actualizar servicio de identidad para abrir el panel de configuración.
  3. 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.
  4. 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

  1. Selecciona Nuevo OpenID Connect para crear una configuración de OIDC.
  2. 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.
  3. Especifica el ID de cliente devuelto al registrar Identity Service para GKE con tu proveedor en el campo ID de cliente.
  4. 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).
  5. 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.
  6. Haga clic en Siguiente para definir los atributos de OIDC.

Azure AD

  1. Selecciona Nuevo Azure Active Directory para crear una configuración de Azure AD.
  2. 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.
  3. Especifica el ID de cliente devuelto al registrar Identity Service para GKE con tu proveedor en el campo ID de cliente.
  4. 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).
  5. Especifica el cliente que es la cuenta de Azure AD que se va a autenticar en Tenant.
  6. Haz clic en Siguiente para definir los atributos de Azure AD.

LDAP

  1. Selecciona LDAP para crear una configuración de LDAP.
  2. 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.
  3. Haz clic en Siguiente.
  4. Especifica el nombre de host (obligatorio), el tipo de conexión LDAP y el certificado de CA codificado en Base64 del servidor LDAP.
  5. Haga clic en Siguiente para configurar el servidor.
  6. Especifica el nombre distintivo, el filtro, el atributo de inicio de sesión y el atributo de identificador del usuario.
  7. Haz clic en Siguiente para definir los detalles del usuario.
  8. Si decide usar grupos, especifique el nombre completo, el filtro y el atributo de identificador del grupo.
  9. Haz clic en Siguiente para definir los detalles del grupo.
  10. Especifica el nombre de usuario y la contraseña de la cuenta de servicio.
  11. 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 formato http://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 formato http://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 El identificador de cliente devuelto al registrar Identity Service for GKE con tu proveedor. Cadena
clientSecret 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 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 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 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 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 El ID de entidad SAML del proveedor de SAML, especificado en formato URI. Por ejemplo: https://www.idp.com/saml. URL String
idpSingleSignOnURI 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 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:

  1. Crea un archivo llamado fleet-default.yaml y rellénalo según las instrucciones de la sección Crear el archivo de configuración.
  2. 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

  1. En la Google Cloud consola, ve a la página Gestor de funciones.

    Ir a Gestor de funciones

    Todas las funciones habilitadas se muestran como Habilitadas en su panel.

  2. 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.