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.

    Enable the 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

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

    Ir a Administrador de funciones

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

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

  1. Selecciona New Open ID Connect para crear una configuración de OIDC nueva.
  2. 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.
  3. Especifica el ID de cliente que se muestra cuando registras GKE Identity Service con tu proveedor en el campo ID de cliente.
  4. 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.
  5. 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.
  6. Haz clic en Siguiente para configurar los atributos de OIDC.

Azure AD

  1. Selecciona New Azure Active Directory para crear una configuración nueva de Azure AD.
  2. 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.
  3. Especifica el ID de cliente que se muestra cuando registras GKE Identity Service con tu proveedor en el campo ID de cliente.
  4. 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.
  5. Especifica el usuario que será la cuenta de Azure AD que se autenticará en Usuario.
  6. Haz clic en Siguiente para configurar los atributos de Azure AD.

LDAP

  1. Selecciona LDAP para crear una configuración de LDAP nueva.
  2. 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.
  3. Haz clic en Siguiente.
  4. Especifica el nombre de host (obligatorio), el tipo de conexión LDAP y el certificado de la AC codificado en base64 del servidor LDAP.
  5. Haz clic en Siguiente para configurar el servidor.
  6. Especifica el nombre distinguido, el filtro, el atributo de acceso y el atributo del identificador del usuario.
  7. Haz clic en Siguiente para configurar los detalles del usuario.
  8. Si eliges usar grupos, especifica el nombre distinguido, el filtro y el atributo del identificador del grupo.
  9. Haz clic en Siguiente para configurar los detalles del grupo.
  10. Especifica el nombre de usuario y la contraseña de la cuenta de servicio.
  11. 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 formato http://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.

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 formato http://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.

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 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 El identificador de cliente que se muestra cuando registras GKE Identity Service con tu proveedor. String
clientSecret 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 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 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 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 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 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 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 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 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 Un nombre para identificar esta configuración de LDAP String
servidor
host 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 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 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 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 El Nombre distinguido del usuario de la cuenta de servicio. String
contraseña 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:

  1. Crea un archivo llamado fleet-default.yaml y propágalo según Crea el archivo de configuración.
  2. 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

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

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