Configura la administración de la autenticación a nivel de la flota

En este documento, se muestra a los administradores de clústeres cómo configurar varios clústeres para la autenticación de proveedores de identidad externos con flotas. Google Cloud administra la configuración de los clústeres en una flota, lo que genera un proceso de configuración más rápido y menos complejo que la configuración de clústeres individuales. Para obtener más información sobre el proceso de autenticación del proveedor externo, consulta Acerca de la autenticación con identidades de terceros.

Antes de comenzar

  1. Instala y configura Google Cloud CLI:

    1. Install the Google Cloud CLI.

    2. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

    3. Para inicializar gcloud CLI, ejecuta el siguiente comando:

      gcloud init
    4. Después de inicializar gcloud CLI, actualízala y, luego, instala los componentes necesarios:

      gcloud components update
      gcloud components install kubectl
    5. En gcloud CLI, selecciona el proyecto host de tu flota:
      gcloud config set project FLEET_HOST_PROJECT_ID
      Reemplaza FLEET_HOST_PROJECT_ID por el ID del proyecto host de tu flota.

  2. Habilita las API necesarias:

    1. En la consola de Google Cloud , ve a la página del selector de proyectos:

      Ir al selector de proyectos

    2. Selecciona el proyecto host de tu flota.

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

  3. Asegúrate de que el administrador de tu plataforma te haya proporcionado toda la información del proveedor que necesitas para el protocolo seleccionado. Para obtener más información, consulta los siguientes documentos:

Roles obligatorios

Para obtener los permisos que necesitas para configurar clústeres a nivel de la flota, pídele a tu administrador que te otorgue el rol de IAM Administrador de la flota (roles/gkehub/admin) en el proyecto host de la flota. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Habilita la función del servicio de identidad a nivel de la flota

La función del servicio de identidad a nivel de la flota usa un controlador para administrar la configuración en cada uno de los clústeres de la flota. Solo debes habilitar la función a nivel de la flota en el proyecto host de la flota.

Para habilitar la función a nivel de la flota, selecciona una de las siguientes opciones:

Console

  1. En la consola de Google Cloud , ve a la página GKE Identity Service.

    Ir a Administrador de funciones

  2. Haz clic en Habilitar el servicio de identidad.

gcloud

Habilita la función del servicio de identidad a nivel de la flota:

gcloud container fleet identity-service enable

Configura los clústeres

Para configurar tus clústeres, debes especificar la siguiente información:

  • Información sobre tu proveedor de identidad, como un ID de cliente y un secreto
  • Es la información sobre los tokens web JSON (JWT) que usa tu proveedor de identidad para la autenticación.
  • Cualquier parámetro o permiso adicional que sea exclusivo de tu proveedor de identidad

Para obtener más información sobre la información que necesitas de tu administrador de la plataforma o de quien administre la identidad en tu organización, consulta los siguientes documentos:

Si tienes configuraciones a nivel de clúster existentes para los proveedores de OIDC, la aplicación de una configuración a nivel de la flota al clúster reemplaza todas tus especificaciones de autenticación existentes. Además, si tienes configuraciones existentes a nivel del 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.

Para configurar tus clústeres, sigue estos pasos:

Console

  1. Selecciona los clústeres que deseas configurar:

    1. En la consola de Google Cloud , ve a la página GKE Identity Service.

      Ir a Administrador de funciones

    2. Selecciona una o más casillas de verificación de los clústeres que deseas configurar. 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.

    3. Haz clic en Actualizar configuración. Se abrirá el panel Editar la configuración de los clústeres del servicio de identidad.

    4. En la sección Proveedores de identidad, elige cómo deseas configurar los clústeres. Puedes actualizar una configuración existente, copiar una configuración de otro clúster o crear una configuración nueva. Para crear una configuración nueva, haz clic en Agregar un proveedor de identidad. Aparecerá la sección Nuevo proveedor de identidad.

  2. En la sección Nuevo proveedor de identidad, configura los detalles del proveedor:

    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 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 del proveedor de identidad 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 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 del proveedor de identidad 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 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.
  3. Haz clic en Siguiente. Se abrirá la sección Establecer atributos.

  4. Establece los atributos de tu proveedor de identidad. Para ver los atributos de OIDC o Azure AD, selecciona una de las siguientes opciones:

    OIDC

    • 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 cadena de certificado con codificación PEM para el proveedor de identidad.
    • Reclamación de grupo (opcional): Es la reclamación de JWT (nombre de 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í, el clúster 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 Google Cloud proxy de la consola (opcional): Si se habilita, se implementa un proxy que permite que la Google Cloud consola se conecte a un proveedor de identidad local al que no se puede acceder públicamente a través de Internet.

    Azure AD

    • 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í, el clúster 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.
  5. Haz clic en Listo.

  6. Opcional: Para agregar más proveedores a la configuración, haz clic en Agregar un proveedor de identidad y repite los pasos anteriores.

  7. Haz clic en Actualizar configuración.

Esto instala los componentes necesarios, si es necesario, y aplica la configuración del cliente en los clústeres seleccionados.

gcloud

Para usar la CLI de gcloud para configurar la flota, crea un recurso personalizado de Kubernetes llamado ClientConfig con campos para toda la información que necesita el clúster para interactuar con el proveedor de identidad. Para crear y usar un ClientConfig, sigue estos pasos:

  1. Crea una especificación de ClientConfig en un archivo llamado auth-config.yaml. Para ver ejemplos de configuraciones de OIDC, SAML o LDAP, selecciona una de las siguientes opciones. Para otras configuraciones de proveedores de identidad, consulta Configuraciones específicas del proveedor.

    OIDC

    En el siguiente ejemplo de ClientConfig, se muestran una configuración oidc y una configuración azuread. Para obtener más información sobre 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: azure
        azureAD:
          clientID: CLIENT_ID
          clientSecret: CLIENT_SECRET
          tenant: TENANT_UUID
          kubectlRedirectURI: http://localhost:PORT/callback
          groupFormat: GROUP_FORMAT
          userClaim: USER_CLAIM
    

    Para obtener más información sobre los campos del objeto oidc, consulta Campos de OIDC de ClientConfig.

    SAML

    En el siguiente ejemplo de ClientConfig, 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: <>
    

    Para obtener más información sobre estos campos, consulta Campos SAML de ClientConfig.

    LDAP

    En el siguiente ejemplo de ClientConfig, 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
    

    Para obtener más información sobre estos campos, consulta Campos de LDAP de ClientConfig.

    Puedes agregar varios parámetros de configuración del proveedor de identidad al mismo ClientConfig. El clúster intenta autenticarse con cada configuración en el orden en que se definen y se detiene después de la primera autenticación exitosa.

  2. Aplica el ClientConfig a un clúster:

    gcloud container fleet identity-service apply \
        --membership=CLUSTER_NAME \
        --config=auth-config.yaml
    

    Reemplaza CLUSTER_NAME por el nombre único de tu clúster dentro de la flota.

El clúster instala los componentes necesarios y usa el ClientConfig que creaste. El controlador a nivel de la flota administra la configuración del clúster. El controlador concilia todos los cambios locales en la configuración del clúster con la configuración a nivel de la flota.

Para algunas versiones de clústeres, aplicar la configuración a nivel de la flota también agrega de forma predeterminada una configuración authentication adicional a tus clústeres. Esto permite que el clúster 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 en Google Distributed Cloud (tanto VMware como Bare Metal). 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.

Si ya no deseas que el controlador a nivel de la flota administre tu configuración, por ejemplo, si deseas usar opciones de autenticación diferentes, puedes inhabilitar esta función siguiendo las instrucciones incluidas en Inhabilita la administración de identidades a nivel de la flota.

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 la autenticación con Azure AD. El uso de esta configuración permite que el clúster 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 el clúster 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 las plataformas que admiten esta configuración, consulta Información de configuración del proveedor de identidad.

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 (en las instalaciones).

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 el clúster 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 especificar una configuración predeterminada a nivel de la flota para la autenticación. Con esta configuración, cada clúster nuevo que registres en la flota usará automáticamente la configuración de autenticación que especifiques.

Los clústeres miembros de la flota existentes no se actualizan automáticamente cuando especificas una configuración predeterminada a nivel de la flota. De manera opcional, puedes aplicar tu configuración predeterminada a esos clústeres. 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.

Después de establecer un valor predeterminado a nivel de la flota, cualquier cambio local en la configuración de autenticación de los clústeres individuales se reemplaza cuando el controlador de la flota reconcilia el clúster con la configuración predeterminada.

Para configurar una configuración predeterminada a nivel de la flota, haz lo siguiente:

  1. Crea un ClientConfig en un archivo llamado fleet-default.yaml. Para obtener más información sobre cómo crear el archivo, consulta los pasos de la CLI de gcloud en la sección Configura clústeres.
  2. Para aplicar la configuración predeterminada a nivel de la flota, ejecuta uno de los siguientes comandos:

    • Si la función del servicio de identidad a nivel de la flota no está habilitada, habilítala y especifica la configuración predeterminada a nivel de la flota:

      gcloud container fleet identity-service enable --fleet-default-member-config=fleet-default.yaml
    • Si la función del servicio de identidad a nivel de la flota está habilitada, aplica la nueva configuración predeterminada a nivel de la flota:

      gcloud container fleet identity-service apply --fleet-default-member-config=default-config.yaml

    De forma predeterminada, los clústeres nuevos que registres en la flota usarán esta configuración. Los clústeres miembros existentes de la flota no heredan automáticamente la nueva configuración predeterminada.

  3. Para aplicar la configuración predeterminada a un clúster miembro de la flota existente, ejecuta el siguiente comando:

    gcloud container fleet identity-service apply --origin=fleet --membership=CLUSTER_NAME

Quita la configuración predeterminada a nivel de la flota

Para quitar la configuración predeterminada, ejecuta el siguiente comando:

gcloud container fleet identity-service delete --fleet-default-member-config

Los clústeres nuevos que registres en la flota no usarán automáticamente una configuración de autenticación.

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.