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:
- 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
. - 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:
En la consola del centro de administración, abre el menú Identidad y acceso.
En la pestaña Identidad, haz clic en Configurar Anthos Identity Service (OIDC).
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.
Ingresa la URL del proveedor de OIDC, el ID de cliente y el secreto de cliente del proveedor de OIDC.
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.
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 esprefix-
, los usuarios se identifican comoprefix-sally@example.com
. El usuario essally@example.com
, y el prefijo,prefix-
, se usa para distinguir entre diferentes proveedores de identidad.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.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 esgroupprefix-
, los grupos se identificarán comogroupprefix-group
. El grupo esgroup
, 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.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 reclamacionesprofile
predeterminadas del usuario.- Por lo general,
email
incluye las reclamacionesemail
yemail_verified
.
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.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, enbase64
. 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.
Haz clic en Enviar y regresa a la pestaña Identidad y Acceso.
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.
En la pestaña Perfil de identidad, haz clic en Aplicar a los clústeres.
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.
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.
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 comoprefix-alice@example.com
. Consulta más detalles sobre los administradores de plataforma y la autorización en Funciones de autorización.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.
En la página Identidad y acceso, haz clic en la pestaña Identidad y, luego, en la pestaña Clúster.
Busca el clúster llamado administrador y haz clic en Ver detalles de configuración.
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.
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. Comparteadmin-actl-auth-login-config.yaml
con usuarios de confianza que necesiten acceso al clúster.Después de adquirir
admin-actl-auth-login-config.yaml
, los usuarios pueden acceder mediante el comandoactl 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.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}
${ADMIN_OIDC_KUBECONFIG}
también se puede usar para autenticar comandos de la CLIactl
, 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?
- Obtén información sobre cómo configurar las funciones de autorización.