Configura proveedores de OIDC para la autenticación en clústeres

Este documento está dirigido a los administradores de plataformas o a quienes administran la configuración de identidad en tu organización. En este documento, se explica cómo configurar el proveedor de identidad OpenID Connect (OIDC) que elegiste para la autenticación en clústeres de Kubernetes que no están en Google Cloud.

Registra una aplicación cliente con tu proveedor

Durante el flujo de autenticación para los usuarios, el clúster usa un ID de cliente y un secreto para conectarse a tu proveedor de identidad. Puedes obtener un ID de cliente y un secreto de tu proveedor de identidad configurando una aplicación cliente para Kubernetes. El procedimiento para configurar una aplicación cliente depende de tu proveedor. Encontrarás algunos detalles de registro específicos para los proveedores populares en la siguiente sección.

Para las URL de redireccionamiento, especifica los siguientes valores:

  • https://console.cloud.google.com/kubernetes/oidc es la URL de redireccionamiento de la consola de Google Cloud .
  • http://localhost:PORT/callback es la URL de redireccionamiento de la CLI de gcloud. Puedes especificar cualquier número de puerto superior a 1,024.
  • APISERVER_URL:11001/finish-login es la URL de redireccionamiento si eliges autenticarte con el acceso de FQDN. Reemplaza APISERVER_URL por el FQDN del servidor de la API de Kubernetes del clúster. Por ejemplo, si la APISERVER_URL es https://apiserver.company.com, entonces el redirect_uri debe ser https://apiserver.company.com:11001/finish-login.

Guarda el ID de cliente y el Secret que obtendrás del paso de registro. Comparte estos detalles con los administradores de clústeres que necesitan configurar sus clústeres.

Información de configuración del proveedor de identidad

En esta sección, se proporcionan los pasos para registrar una aplicación cliente con los Servicios de federación de Active Directory (AD FS) de Microsoft o con Microsoft Entra ID.

Microsoft AD FS

Usa un conjunto de asistentes de administración de AD FS para configurar el servidor de AD FS y la base de datos de usuarios de AD.

  1. Abre el panel de administración de AD FS.

  2. Selecciona Application Groups > Acciones > Add an Application Group.

  3. Selecciona Server Application. Ingresa el nombre y la descripción que prefieras. Haz clic en Siguiente.

  4. Ingresa las dos URL de redireccionamiento, como se especificó antes. Se te proporcionará un ID de cliente. AD FS identifica el clúster con este ID de cliente. Guarda el ID de cliente para usarlo más adelante.

  5. Selecciona Generate a shared secret. El mecanismo de autenticación de Kubernetes usa este secreto para autenticarse en el servidor de AD FS. Guarda el secreto para usarlo más adelante.

Configura grupos de seguridad (opcional)

  1. En la administración de AD FS, selecciona Confianza con la parte autenticada > Agrega una nueva relación de confianza con la parte autenticada.

  2. Selecciona Claims aware y haz clic en Iniciar.

  3. Selecciona Enter data about relying party manually.

  4. Ingresa un nombre visible.

  5. Omite los siguientes dos pasos.

  6. Ingresa el identificador de una relación de confianza con la parte autenticada. Sugerencia: token-groups-claim.

  7. En Access control policy, selecciona Permit everyone. Esto significa que todos los usuarios comparten la información de su grupo de seguridad con gcloud CLI y la consola deGoogle Cloud .

  8. Haz clic en Finalizar.

Asigna atributos LDAP a los nombres de reclamaciones

  1. En la administración de AD FS, selecciona Confianza de la parte autenticada > Editar política de emisión de reclamos.

  2. Selecciona Send LDAP Attributes as Claims y haz clic en Siguiente.

  3. En Claim rule name, ingresa groups.

  4. En Attribute store, selecciona Active Directory.

  5. En la tabla, en LDAP Attribute, selecciona lo siguiente:

    • Para la versión 5.0 y posteriores de AD FS: Token-Groups Qualified by Domain name
    • Para versiones de AD FS anteriores a 5.0: Token Groups - Qualified Names
  6. En Outgoing Claim Type, selecciona lo siguiente:

    • Para la versión 5.0 y posteriores de AD FS: Group
    • Para versiones de AD FS anteriores a 5.0: groups
  7. Haz clic en Finalizar y, luego, en Aplicar.

Cómo registrar la aplicación cliente de Kubernetes en AD FS

Abre una ventana de PowerShell en modo de administrador e ingresa este comando:

Grant-AD FSApplicationPermission `
  -ClientRoleIdentifier "[CLIENT_ID]" `
 -ServerRoleIdentifier [SERVER_ROLE_IDENTIFIER] `
  -ScopeName "allatclaims", "openid"

Reemplaza lo siguiente:

  • [CLIENT_ID] es el ID de cliente que obtuviste antes.

  • [SERVER_ROLE_IDENTIFIER] es el identificador de la reclamación que ingresaste antes. Recuerda que el identificador sugerido era token-groups-claim.

Microsoft Entra ID

Para registrar un cliente de OAuth con Microsoft Entra ID, completa los pasos que se indican en los siguientes vínculos:

  1. Si aún no lo hiciste, configura un arrendatario de Microsoft Entra.

  2. Registra una aplicación en Microsoft Entra ID.

  3. En el centro de administración de Microsoft Entra, abre la página Registros de aplicaciones y selecciona tu aplicación. Se abrirá la página de descripción general de la aplicación.

  4. Crea un secreto del cliente:

    1. En el menú de navegación, haz clic en Certificados y Secrets.
    2. Haz clic en la pestaña Secretos del cliente.
    3. Haz clic en Nuevo secreto de cliente. Asígnale un nombre al secreto y haz clic en Agregar.
    4. Guarda el valor del secreto en una ubicación segura. No podrás recuperarla después de cerrar o actualizar la página.

    Para obtener más información, consulta Cómo agregar y administrar credenciales de aplicaciones en Microsoft Entra ID.

  5. Agrega URIs de redireccionamiento:

    1. En el menú de navegación, haz clic en Authentication.
    2. En la sección Configuraciones de la plataforma, haz clic en Agregar una plataforma. Se abrirá el panel Configurar plataformas.
    3. Haz clic en Web.
    4. En el campo URI de redireccionamiento, ingresa http://localhost:PORT/callback para el flujo de acceso de gcloud CLI. Elige un PORT mayor que 1024.
    5. Haz clic en Configurar.
    6. Haz clic en Agregar URI para agregar otro URI.
    7. Ingresa https://console.cloud.google.com/kubernetes/oidc para el flujo de acceso a la consola deGoogle Cloud .
    8. Guarde la configuración.

    Para obtener más información, consulta Cómo agregar un URI de redireccionamiento a tu aplicación.

Ahora se completó el registro de cliente. Debes tener la siguiente información para compartir con el administrador de tu clúster:

  • URI de la entidad emisora: https://login.microsoftonline.com/TENANT_ID/v2.0. El ID de usuario se muestra como Directory (tenant) ID en la página de descripción general de la aplicación en el centro de administración de Microsoft Entra.

  • ID de cliente: El ID de cliente se muestra como el Application (client) ID en la página de descripción general de la aplicación en el centro de administración de Microsoft Entra.

  • Secreto de cliente: Es el valor del secreto del cliente que creaste cuando registraste la aplicación cliente. Si no tienes acceso a este valor, genera un secreto nuevo.

Configuración avanzada de Microsoft Entra ID

Considera usar esta configuración avanzada solo cuando quieras configurar clústeres con políticas de autorización basadas en grupos de Microsoft Entra ID, en las que los usuarios de los clústeres pertenecen a más de 200 grupos de Microsoft Entra ID. La configuración avanzada de Microsoft Entra ID admite las siguientes plataformas:

  • Google Distributed Cloud local (tanto VMware como Bare Metal): A partir de la versión 1.14
  • GKE en AWS: Desde la versión 1.14 (versión de Kubernetes 1.25 o posterior)
  • GKE en Azure: Desde la versión 1.14 (versión de Kubernetes 1.25 o posterior)

Antes de comenzar, asegúrate de que cada usuario tenga una dirección de correo electrónico asociada configurada como su identificador en Microsoft Entra ID. Esta dirección de correo electrónico se usa para confirmar la identidad del usuario y autenticar la solicitud.

Debes asegurarte de que el cliente que registraste en la sección anterior tenga permisos delegados para obtener información de usuarios y grupos de la API de Microsoft Graph. Estos permisos permiten que el mecanismo de autenticación de Kubernetes acceda a los extremos de la API de Microsoft Graph desde los que se recupera la información del grupo. Sin este paso, el clúster no puede obtener información del grupo para el usuario, lo que provoca que las políticas de autorización de RBAC basadas en grupos no funcionen como se espera.

Debes tener permisos de administrador de la organización o del administrador global para realizar este paso de configuración.

  1. Accede al centro de administración de Microsoft Entra.
  2. Selecciona el arrendatario de Microsoft Entra que tiene tu aplicación cliente.
  3. Selecciona Registros de aplicaciones y, luego, selecciona tu aplicación cliente.
  4. Selecciona Permisos de API - Agregar un permiso - Microsoft Graph - Permisos delegados.
  5. En la pestaña Grupo, marca Group.Read.All. En la pestaña Usuario, marca User.Read.All.
  6. Haz clic en Agregar permisos para completar el proceso.
  7. Para otorgar consentimiento en nombre de todos los usuarios, haz clic en Otorgar consentimiento de administrador para…. Para obtener más información, consulta Más información sobre los permisos de API y el consentimiento de administrador.

Comparte los detalles del proveedor de identidad

Comparte la siguiente información del proveedor con el administrador de tu clúster para la configuración del clúster:

  • El URI de la entidad emisora del proveedor
  • El secreto del cliente
  • El ID de cliente
  • El puerto y el URI de redireccionamiento que especificaste para la CLI de gcloud
  • El campo de nombre de usuario (reclamación) que tu proveedor usa para identificar a los usuarios en sus tokens (el valor predeterminado previsto cuando se configuran clústeres es sub)
  • El campo de nombre de grupo (reclamación) que usa tu proveedor para mostrar grupos de seguridad, si corresponde.
  • Cualquier parámetro o permiso adicional que sea específico de tu proveedor, como se describió en la sección anterior Por ejemplo, si el servidor de autorización solicita el consentimiento para la autenticación con Microsoft Entra ID y Okta, el administrador del clúster debe especificar prompt=consent como parámetro. Si configuraste AD FS para que proporcione información de grupo de seguridad, el parámetro adicional relevante es resource=token-groups-claim (o lo que elijas como identificador de confianza de parte autenticada).
  • (Opcional) Si tu proveedor no usa un certificado firmado por una autoridad certificadora pública (por ejemplo, si usas certificados autofirmados), necesitarás un certificado (o cadena de certificados) del proveedor de identidad. El certificado (o cadena de certificados) debe contener el certificado raíz como mínimo (se aceptan cadenas parciales, siempre y cuando la cadena sea contigua al certificado raíz). Cuando se proporciona este valor en ClientConfig, se debe formatear como una cadena codificada en base64. Para crear la cadena, concatena los certificados completos codificados con PEM en una sola cadena y, luego, codifícalo en base64.

Para obtener más información sobre los parámetros de configuración de los clústeres, consulta Configura clústeres.

¿Qué sigue?