Próximo seminario web: Seguridad empresarial para Claude Code | 21 de abril · 11:00 a. m. PST. Regístrese aquí →

Agregar OAuth2 a Jupyter Notebooks en Kubernetes

Por Srihari Radhakrishna

Actualizado: February 1, 2024

Resumir con

True Foundry los usuarios pueden implementar Jupyter Notebooks en sus cuentas personales en la nube, como AWS, Azure o GCP. Esta función les permite realizar experimentos de aprendizaje automático y trabajos de entrenamiento en sus propias máquinas con facilidad. En un principio, los ordenadores portátiles desplegados a través de TrueFoundry se protegían mediante una combinación de nombre de usuario y contraseña. Sin embargo, en respuesta a las solicitudes generalizadas de los clientes, hemos integrado el inicio de sesión único. Esto significa que los usuarios ahora pueden acceder cómodamente a sus cuadernos con el mismo inicio de sesión que utilizan para TrueFoundry. Esta entrada del blog profundiza en los detalles de cómo implementamos esta función.

Lanzamiento de un Jupyter Notebook en TrueFoundry

Cuadernos en TrueFoundry

TrueFoundry utiliza internamente una bifurcación de Kubeflow Notebook Controller para organizar la implementación de los portátiles. El controlador ofrece varias funciones que aprovechamos, como:

  1. Especificaciones de cuadernos simplificadas: las API de Kubeflow Notebook son sencillas y el controlador organiza la creación de las implementaciones de Jupyter Notebook.
  2. Eliminación automática: el controlador apaga automáticamente el portátil después de un cierto período de inactividad. Esto es increíblemente útil para nuestros clientes que realizan experimentos en ordenadores portátiles respaldados por máquinas con GPU.
  3. Directorio principal persistente: el controlador se encarga de crear un volumen persistente que guarda el progreso del usuario en el portátil entre sesiones.
  4. Imágenes base ampliables: el controlador admite un conjunto de imágenes de cuadernos base de Jupyter Notebook y VS Code mantenidas por TrueFoundry. El usuario puede ampliar las funciones de estas imágenes de Docker añadiendo un script de inicio o instalando bibliotecas específicas.

Para dar contexto, así es como se ve un objeto simple de Kubeflow Notebook:

Versión de API: kubeflow.org/v1
tipo: portátil
metadatos:
nombre: my-notebook
especificación:
plantilla:
especificación:
contenedores:
- nombre: my-notebook
imagen: kubeflownotebookswg/jupyter:master
argumentos:
[
"start.sh «,
«laboratorio»,
«--labApp.token ="»,
«--labapp.allow_remote_access=' Verdadero '»,
«--labapp.allow_root=' Verdadero '»,
«--labapp.ip='*'»,
«--labapp.base_url=/test/my-notebook/»,
«--puerto=8888",
«--sin navegador»,
]

Autenticación básica para ordenadores portátiles

Antes de implementar OAuth2, TrueFoundry ofrecía a los usuarios la opción de mejorar la seguridad de sus ordenadores portátiles públicos mediante la integración de la autenticación básica. Esta capa adicional de seguridad era crucial para garantizar que solo las personas autorizadas pudieran acceder al contenido confidencial de estas computadoras portátiles. Para implementar esta función, TrueFoundry utilizó las capacidades de Complementos de WebAssembly (Wasm) dentro del proxy de Istio, específicamente el Proxy de enviado.

Istio, una malla de servicios de código abierto, ofrece un marco para administrar las comunicaciones de red entre varias cargas de trabajo de servicios. Con Istio, TrueFoundry pudo inyectar lógica personalizada directamente en la capa de red, que es gestionada por el proxy Envoy. Este enfoque permitió un control y una seguridad efectivos del tráfico que fluía hacia y desde sus Jupyter Notebooks. La clave para la implementación de la autenticación básica fue el WASMPlugin, una función de Istio que facilita el despliegue de los módulos de WebAssembly en el proxy de Envoy.

Este WASMPlugin de autenticación básica está integrado en una secuencia de filtros de red dentro del proxy Envoy. Estos filtros permiten ejecutar funciones de nivel superior relacionadas con el control de acceso, la transformación, el enriquecimiento de datos, la auditoría, etc., lo que mejora la seguridad y la funcionalidad generales de la red de servicios. Esta es una versión simplificada de la especificación para añadir un filtro de autenticación básico a la cadena de filtros de Envoy:

Versión de API: extensions.istio.io/v1alpha1
tipo: WASMPlugin
metadatos:
nombre: basic-auth
espacio de nombres: istio-ingress
especificación:
fase: AUTHN
Configuración del complemento:
reglas_de autenticación básicas:
- credenciales:
- usuario:pass
anfitriones: www.example.com
prefijo: /secret/
selector:
Etiquetas coincidentes:
Lugar: ingressgateway
url: oci: //ghcr.io/istio-ecosystem/wasm-extensions/basic_auth:1.12.0

OAuth2 para Notebook

Para implementar OAuth2 en nuestros ordenadores portátiles, utilizamos un filtro Envoy, pero el enfoque difería del de la autenticación básica. A diferencia de la autenticación básica, en la que podíamos insertar cómodamente un WASMPlugin prediseñado en la cadena de filtros, OAuth2 requería una solución más personalizada. Para lograrlo, empleamos un filtro HTTP diseñado específicamente para OAuth. En TrueFoundry, nuestro sistema de inicio de sesión único se integra con FusionAuth, que actúa como nuestro proveedor de OAuth.

Así es como se ve la especificación del filtro Envoy; consulte los comentarios del archivo para obtener más información:

Versión de API: networking.istio.io/v1alpha3
tipo: EnvoyFilter
metadatos:
name: truefoundry-notebook-tfy-oauth2 # Nombre del filtro EnvoyFilter
espacio de nombres: auth-test # Espacio de nombres donde se implementa el EnvoyFilter
especificación:
Selector de carga de trabajo:
etiquetas:
truefoundry.com/application: truefoundry-notebook # Selector dirigido a cargas de trabajo con etiquetas específicas
Parches de configuración:
- Aplicar a: CLUSTER
partido:
contexto: SIDECAR_OUTBOUND
parche:
operación: AÑADIR
valor:
nombre: tfy-oauth2 # Nombre del clúster para el servicio de autenticación OAuth2
tipo: LOGICAL_DNS # Tipo de descubrimiento de servicios (DNS)
connect_timeout: 5s # Tiempo de espera para establecer una conexión
lb_policy: ROUND_ROBIN # Política de equilibrio de carga
# otra configuración de equilibrio de carga
- Aplicar a: HTTP_FILTER
partido:
contexto: SIDECAR_INBOUND
oyente:
Cadena de filtros:
filtro:
nombre: «envoy.filters.network.http_connection_manager»
Subfiltro:
nombre: envoy.filters.http.jwt_authn
parche:
operación: INSERT_BEFORE # Insertar este filtro antes del filtro de autenticación JWT
valor:
name: envoy.filters.http.tfy-oauth # Nombre del filtro OAuth
configuración_escrita:
"@type «: escriba.googleapis.com/envoy.extensions.filters.http.oauth2.v3.oauth2
configuración:
use_refresh_token: false # Si se debe usar un token de actualización
comparador de pases:
- nombre: Autorización
present_match: true # Pase si el encabezado de autorización está presente
forward_bearer_token: true # Reenviar el token del portador al upstream
auth_type: BASIC_AUTH # Tipo de autenticación usado
token_endpoint:
clúster: tfy-oauth2 # Clúster para punto final de token
tipo: <token-endpoint-uri-of-oauth-provider>
tiempo de espera: 5 s # Tiempo de espera para el punto final del token
punto final de autorización: <authorization-endpoint-uri-of-oauth-provider>
redirect_uri: https://%REQ(:authority)%/truefoundry-notebook/_auth/callback # URL de redireccionamiento para devolución de llamada
redirect_path_matcher:
ruta:
exact: /truefoundry-notebook/_auth/callback # Ruta para el URI de redireccionamiento
ruta_de inicio de sesión:
ruta:
exact: /truefoundry-notebook/_auth/signout # Ruta para cerrar sesión
credenciales:
id_cliente: <client-id-for-oauth>
signo_secreto:
# configuración para obtener el secreto del token
# lea más sobre cómo obtenemos secretos aquí:
https://www.envoyproxy.io/docs/envoy/latest/configuration/security/secret
hmac_secret:
# configuración para buscar hmac

Cuando un usuario intenta acceder a un servicio protegido por el filtro OAuth2 por primera vez, se le redirige a punto final de autorización. Este punto final es la URL de nuestro proveedor de OAuth externo, que, en nuestra implementación, es el modal de inicio de sesión de TrueFoundry basado en FusionAuth. Esta redirección es un paso fundamental en el proceso de OAuth, ya que guía a los usuarios a una ubicación segura donde pueden autenticarse y, en consecuencia, conceder los permisos necesarios para acceder al servicio.

Una vez completado el inicio de sesión, FusionAuth lo redirigirá a redireccion_uri (configurado en la especificación del filtro), añadiendo allí un código de autorización temporal y secreto. El filtro intercepta esta solicitud y envía una solicitud a token_endpoint, intercambiando el código por un token JWT. Por último, el filtro establece las cookies con el token JWT.

Los accesos posteriores al servicio pasan a través del filtro HTTP, ya que la cookie establece el Autorización encabezado con JWT como valor. El filtro está configurado para procesar dichas solicitudes (consulte pass_through_matcher en la especificación). Para validar que el JWT es un token válido, creamos una política de RequestAuthentication que verificaremos con el proveedor de OAuth:

Versión de API: security.istio.io/v1beta1
tipo: RequestAuthentication
metadatos:
#...
especificación:
selector:
#...
Reglas de JWT:
- emisor: «truefoundry.com»
De los encabezados:
- nombre: Autorización
prefijo: «Bearer»
audiencias:
- <client-id>
JWK dice: <oauth-provider-jwks-uri>
ForwardOriginalToken: verdadero

Finalmente, agregamos la Política de autorización que especifica qué solicitudes aplicar Solicitar autenticación para. Queremos aplicar la autorización a todas las solicitudes en el puerto 8888:

Versión de API: security.istio.io/v1beta1
tipo: Política de autorización
metadatos:
nombre: best-notebook-tfy-oauth2
espacio de nombres: auth-test
especificación:
selector:
Etiquetas coincidentes:
truefoundry.com/application: el mejor portátil
acción: DENEGAR
reglas:
- desde:
- fuente:
Principales de NotRequest: ["*"]
para:
- operación:
puertos:
- «888»

La forma más rápida de crear, gobernar y escalar su IA

Inscríbase
Tabla de contenido

Controle, implemente y rastree la IA en su propia infraestructura

Reserva 30 minutos con nuestro Experto en IA

Reserve una demostración

La forma más rápida de crear, gobernar y escalar su IA

Demo del libro

Descubra más

October 5, 2023
|
5 minutos de lectura

<Webinar>GenAI Showcase para empresas

Best Fine Tuning Tools for Model Training
May 3, 2024
|
5 minutos de lectura

Las 6 mejores herramientas de ajuste para el entrenamiento de modelos en 2026

May 25, 2023
|
5 minutos de lectura

LLM de código abierto: abrazar o perecer

August 27, 2025
|
5 minutos de lectura

Mapeando el mercado de la IA local: desde chips hasta aviones de control

April 22, 2026
|
5 minutos de lectura

Mercados de agentes de IA: el futuro de la automatización de nivel empresarial

No se ha encontrado ningún artículo.
Detailed Guide to What is an AI Gateway?
April 22, 2026
|
5 minutos de lectura

¿Qué es AI Gateway? Conceptos básicos y guía

No se ha encontrado ningún artículo.
April 22, 2026
|
5 minutos de lectura

Aprovechar la puerta de enlace de IA de TrueFoundry para el cumplimiento de FIPS

No se ha encontrado ningún artículo.
April 22, 2026
|
5 minutos de lectura

Integración de GraySwan con TrueFoundry

No se ha encontrado ningún artículo.
April 22, 2026
|
5 minutos de lectura

Guía para el aprovisionamiento automático de nodos en la nube

Kubernetes

Blogs recientes

Realice un recorrido rápido por el producto
Comience el recorrido por el producto
Visita guiada por el producto