Configura la identidad y la seguridad mediante OIDC

Esta página está destinada a operadores de infraestructura.

En esta página, se describe cómo habilitar la autenticación en el centro de administración de Anthos mediante tu elección de OpenID Connect (proveedor de OIDC). OIDC es una capa de autenticación basada en OAuth 2.0, que especifica una API de HTTP de RESTful y usa JSON como formato de datos.

OIDC te permite usar tu proveedor de identidad existente para administrar la autenticación de usuarios y grupos. Con OIDC, puedes administrar el acceso a un clúster mediante los procedimientos estándar de tu organización para la creación, inhabilitación y habilitación de cuentas.

Antes de comenzar

Antes de configurar OIDC, necesitas la siguiente información:

  1. El nombre de dominio que se usa para acceder al centro de administración, proporcionado por el operador de infraestructura, por ejemplo: anthos.example.com.
  2. Un proveedor de OIDC, como los Servicios de federación de Active Directory de Microsoft (AD FS), el SSO de Google o Keycloak. El clúster y tu navegador deben poder conectarse al proveedor de OIDC. El proveedor de OIDC no tiene que volver a conectarse al clúster de forma directa. Si no tienes un proveedor de OIDC, consulta Autentica con Keycloak para instalar uno. Keycloak es solo para fines de demostración y no se recomienda para un entorno de producción.

Crea perfiles de identidad

Los perfiles de identidad contienen la configuración necesaria a fin de usar un proveedor de identidad para la autenticación. Sigue estos pasos para crear un perfil de identidad:

  1. En la consola del centro de administración, abre el menú Identidad y acceso.

  2. En la pestaña Identidad, haz clic en Configurar Anthos Identity Service (OIDC).

  3. Asigna un nombre de perfil fácil de usar en el campo Nombre de perfil. Este es el nombre al que hace referencia el perfil.

  4. Ingresa la URL del proveedor de OIDC, el ID de cliente y el secreto de cliente del proveedor de OIDC.

  5. Establece el campo Reclamación de nombre de usuario. La reclamación del nombre de usuario es la reclamación en el token de OIDC que contiene el nombre de usuario. Por ejemplo, si la reclamación del nombre de usuario es email, los usuarios se identifican por el campo de usuarios en el token de OIDC.

    Cuando configures esta reclamación, asegúrate de que exista en los permisos solicitados.

  6. Configura el campo Prefijo de nombre de usuario. El prefijo del nombre de usuario se usa para distinguir usuarios de diferentes proveedores de identidad. El prefijo de usuario también debe incluirse cuando se asignan permisos de RBAC a los usuarios.

    Por ejemplo, si la reclamación de nombre de usuario es email y el prefijo de usuario es prefix-, los usuarios se identifican como prefix-sally@example.com. El usuario es sally@example.com, y el prefijo, prefix-, se usa para distinguir entre diferentes proveedores de identidad.

  7. Configura el campo Reclamación de grupos. En la ejecución de Anthos en modo desconectado, el valor predeterminado es groups. Consulta Vinculaciones de funciones para obtener más información sobre los grupos de vinculaciones a las funciones.

  8. Configura el campo Prefijo de grupo. El prefijo de grupo se usa para distinguir entre grupos de diferentes proveedores de identidad. El prefijo de grupo también se debe incluir cuando se asignan permisos de RBAC a los grupos.

    Por ejemplo, si la reclamación del grupo es groups y el prefijo de grupo es groupprefix-, los grupos se identificarán como groupprefix-group. El grupo es group, y el prefijo, groupprefix-, se usa en el grupo. Recomendamos insertar un separador al final del prefijo, como se describe en la configuración del prefijo de nombre de usuario en el paso 6.

  9. Opcional: Configura el campo Permisos si los permisos no son openid email profile.

    Los permisos son los identificadores que se usan para especificar qué privilegios de acceso solicitar en el token de ID:

    • openid es obligatorio para OIDC.
    • profile incluye las reclamaciones profile predeterminadas del usuario.
    • Por lo general, email incluye las reclamaciones email y email_verified.
  10. Si el proveedor de OIDC (como el SSO de Google) requiere parámetros adicionales, establece el campo Parámetros adicionales.

    Por ejemplo, el campo Parámetros adicionales se puede configurar como prompt=consent,access_type=offline para mostrar una pantalla de consentimiento cada vez que se solicite la autorización de permisos de acceso.

  11. Si la conexión HTTPS a la página /.well-known/openid-configuration o a la página JWKS de tu proveedor de OIDC está protegida por un certificado que no es de confianza (como un certificado autofirmado), debes completar el campo Certificado de proveedor de OIDC con el certificado HTTPS que usó tu proveedor de OIDC.

    • Codifica el certificado codificado con PEM para el proveedor de OIDC en base64. Para crear la string, codifica el certificado, incluidos los encabezados, en base64. Incluye la string resultante como una sola línea.

    • Ejemplo: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT==

    • Consulta Autentica con Keycloak para obtener un ejemplo de configuración de este campo.

  12. Haz clic en Enviar y regresa a la pestaña Identidad y Acceso.

  13. Registra la URL de devolución de llamada con el proveedor de OIDC.

Para crear perfiles de identidad adicionales, haz clic en Agregar en la pestaña Perfil de identidad.

Aplica perfiles de identidad al clúster de administrador

Los perfiles de identidad deben aplicarse a los clústeres después de crearlos.

  1. En la pestaña Perfil de identidad, haz clic en Aplicar a los clústeres.

    Aplica perfiles al clúster de administrador

  2. Haz clic en la pestaña Clúster de administrador. En la lista desplegable Perfiles, selecciona el nombre del perfil que creaste antes. Puedes seleccionar varios perfiles para aplicarlos al clúster.

    Página de perfil de OIDC

  3. Verifica el nombre de dominio del perfil. Este es el nombre de dominio que se asigna al perfil del proveedor de identidad. Se indica a los usuarios no autenticados que intenten acceder a las rutas de acceso en el dominio que lo hagan con este proveedor de identidad. El operador de la infraestructura asigna este nombre de dominio.

    Si se aplica más de un perfil a la vez, se debe asignar un nombre de dominio diferente a cada perfil.

    Consulta Configura el nombre de dominio para acceder al centro de administración a fin de obtener detalles sobre la configuración de un nombre de dominio.

  4. Ingresa un nombre de usuario inicial que obtendrá derechos de acceso de administrador de plataforma (p. ej., alice@example.com, bob@example.com). El nombre de usuario debe tener el prefijo del usuario configurado en el perfil. Por ejemplo, si el prefijo es prefix-, el nombre de usuario en el campo Administrador de plataforma inicial debería verse como prefix-alice@example.com. Consulta más detalles sobre los administradores de plataforma y la autorización en Funciones de autorización.

  5. Aplica la configuración y espera unos minutos hasta que se apliquen las configuraciones y se reinicien los servicios.

Ahora puedes acceder al Centro de administración con tu nombre de dominio. Si no has accedido, se te redireccionará a tu proveedor de OIDC para acceder.

Configura OIDC mediante la API

En lugar de configurar OIDC mediante el centro de administración, también puedes configurarlo a través de la API. Para configurar la autenticación de OIDC, debes configurar el CRD de ClientConfig de tu clúster de administrador con detalles de autenticación. Para ello, crea un archivo con el siguiente contenido (por ejemplo, admin-cluster-oidc-config.yaml):

spec:
  authentication:
  - name: CONFIGURATION_NAME
    oidc:
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      # The URI to redirect users going through the OAuth flow using cloud
      # console.
      # This is a required parameter not supported by Anthos private mode, so
      # a dummy value is required.
      cloudConsoleRedirectURI: http://cloud.console.not.enabled
      extraParams: EXTRA_PARAMS
      issuerURI: ISSUER_URI
      # The redirect URL that kubectl uses for authorization.
      kubectlRedirectURI: http://localhost:9879/callback
      scopes: SCOPES
      userClaim: USER_CLAIM
      groupsClaim: GROUPS_CLAIM
      certificateAuthorityData: CERT_AUTHORITY_DATA

Reemplaza lo siguiente:

  • CONFIGURATION_NAME: El nombre de la configuración de OIDC que deseas crear.
  • CLIENT_ID: Es el ID de la aplicación cliente que realiza solicitudes de autenticación al proveedor de OpenID.
  • CLIENT_SECRET: El secreto de la aplicación cliente.
  • EXTRA_PARAMS: Parámetros de clave-valor adicionales (separados por comas) que se enviarán al proveedor de OpenID.
  • ISSUER_URI: La URL a la que se envían las solicitudes de autorización para tu OpenID.
  • SCOPES: Son permisos adicionales (separados por comas) que se envían al proveedor de OpenID.
  • USER_CLAIM: Es la reclamación de JWT que se debe usar como nombre de usuario. Puedes elegir otras reclamaciones, como el correo electrónico o el nombre, según el proveedor de OpenID. Sin embargo, las reclamaciones que no sean de correo electrónico tienen el prefijo de la URL de la entidad emisora para evitar conflictos de nombres.
  • GROUPS_CLAIM: Es el nombre de la reclamación en el token de ID de OIDC que contiene la información del grupo del usuario.
  • CERT_AUTHORITY_DATA: Es el certificado opcional con codificación PEM codificada en base64 para el proveedor de OIDC. Si no es necesario, quítalo. Para crear la string, codifica el certificado, incluidos los encabezados, en base64. Incluye la string resultante en certificateAuthorityData como una sola línea.

Después de editar el archivo con la configuración deseada, ejecuta el siguiente comando:

kubectl patch --kubeconfig=ADMIN_KUBECONFIG clientconfig default -n kube-public \
  --type=merge --patch "$(cat OIDC_CONFIG)"

Reemplaza lo siguiente:

  • ADMIN_KUBECONFIG: Ruta al archivo kubeconfig del clúster de administrador.
  • OIDC_CONFIG: Ruta de acceso al archivo de configuración que creaste.

Accede con OIDC al servidor de la API de Kubernetes del clúster de administrador

Los usuarios pueden descargar admin-actl-auth-login-config.yaml desde la página Identidad y acceso después de configurar OIDC.

  1. En la página Identidad y acceso, haz clic en la pestaña Identidad y, luego, en la pestaña Clúster.

  2. Busca el clúster llamado administrador y haz clic en Ver detalles de configuración.

  3. Haz clic en Descargar configuración de acceso a fin de descargar la configuración usada para acceder con identidad al servidor de la API de Kubernetes del clúster de administrador.

    Botón de descarga de configuración de AIS

  4. El archivo de salida admin-actl-auth-login-config.yaml contiene la configuración necesaria para que los usuarios se autentiquen con el clúster de administrador. Comparte admin-actl-auth-login-config.yaml con usuarios de confianza que necesiten acceso al clúster.

  5. Después de adquirir admin-actl-auth-login-config.yaml, los usuarios pueden acceder mediante el comando actl auth login. Cuando los usuarios acceden de forma correcta a través de un navegador, se produce un archivo kubeconfig. Los usuarios pueden usar ese archivo nuevo para acceder al clúster con sus credenciales federadas:

    # Where to store the new kubeconfig
    export ADMIN_OIDC_KUBECONFIG=$(pwd)/admin-oidc-kubeconfig
    
    actl auth login --login-config=admin-actl-auth-login-config.yaml --cluster=admin \
      --kubeconfig=${ADMIN_OIDC_KUBECONFIG} \
      --preferred-auth="CONFIGURATION_NAME"
    

    Reemplaza CONFIGURATION_NAME por el nombre del perfil de identidad con el cual autenticar.

  6. Ahora los usuarios ahora pueden usar ${ADMIN_OIDC_KUBECONFIG} para acceder a los recursos del clúster de administrador, por ejemplo:

    kubectl get pods -n anthos-management-center --kubeconfig=${ADMIN_OIDC_KUBECONFIG}
    
  7. ${ADMIN_OIDC_KUBECONFIG} también se puede usar para autenticar comandos de la CLI actl, por ejemplo:

    actl platform management-center describe --kubeconfig=${ADMIN_OIDC_KUBECONFIG}
    

Restablece la configuración de autenticación

Si un administrador de la plataforma pierde acceso al Centro de administración debido a un error en la configuración de autenticación, ejecuta el siguiente comando para restablecer la autenticación OIDC a la configuración original y obtener la nueva URL de acceso al Centro de administración.

actl auth reset --kubeconfig=ADMIN_KUBECONFIG

# Get the new access URL to management center.
actl platform management-center describe --kubeconfig=ADMIN_KUBECONFIG

¿Qué sigue?