Blank white background with no objects or features visible.

Werden Sie Teil unseres VAR- und VAD-Ökosystems – und ermöglichen Sie die Governance von Unternehmens-KI über LLMs, MCPs und Agents hinweg. Read →

Hinzufügen von OAuth2 zu Jupyter Notebooks auf Kubernetes

von Srihari Radhakrishna

Aktualisiert: February 1, 2024

Fassen Sie zusammen mit
Metallic silver knot design with interlocking loops and circular shape forming a decorative pattern.
Blurry black butterfly or moth icon with outstretched wings on white background.
Blurry red snowflake on white background, symmetrical frosty design with soft edges and abstract shape.

Wahre Gießerei Benutzer können Stellen Sie Jupyter Notebooks bereit auf ihren persönlichen Cloud-Konten wie AWS, Azure oder GCP. Mit dieser Funktion können sie mühelos Experimente zum maschinellen Lernen und Trainingsjobs auf ihren eigenen Computern durchführen. Anfänglich wurden Notebooks, die über TrueFoundry bereitgestellt wurden, mit einer Kombination aus Benutzername und Passwort gesichert. Als Reaktion auf weit verbreitete Kundenanfragen haben wir jedoch Single Sign-On integriert. Das bedeutet, dass Benutzer jetzt bequem mit demselben Login, das sie für TrueFoundry verwenden, auf ihre Notebooks zugreifen können. Dieser Blogbeitrag befasst sich mit den Einzelheiten, wie wir diese Funktion implementiert haben.

Ein Jupyter Notebook auf TrueFoundry starten

Notizbücher auf TrueFoundry

TrueFoundry verwendet intern einen Fork von Kubeflow Notebook Controller, um die Bereitstellung von Notebooks zu orchestrieren. Der Controller bietet verschiedene Funktionen, die wir nutzen, wie zum Beispiel:

  1. Vereinfachte Notebook-Spezifikation: Die Kubeflow Notebook-APIs sind einfach und der Controller orchestriert die Erstellung der Jupyter Notebook-Bereitstellungen.
  2. Automatisches Ausblenden: Der Controller fährt das Notebook nach einer bestimmten Zeit der Inaktivität automatisch herunter. Dies ist unglaublich nützlich für unsere Kunden, die Experimente auf Notebooks durchführen, die von GPU-Computern unterstützt werden.
  3. Persistentes Home-Verzeichnis: Der Controller sorgt für die Erstellung eines persistenten Volumes, das den Benutzerfortschritt sitzungsübergreifend auf dem Notebook speichert.
  4. Erweiterbare Basis-Images: Der Controller unterstützt eine Reihe von Basis-Notebook-Images von Jupyter Notebook und VS Code, die von TrueFoundry verwaltet werden. Der Benutzer kann die Funktionen dieser Docker-Images erweitern, indem er ein Startskript hinzufügt oder bestimmte Bibliotheken installiert.

Zum Kontext sieht ein einfaches Kubeflow Notebook-Objekt so aus:

API-Version: kubeflow.org/v1
Art: Notizbuch
Metadaten:
 Name: mein-Notizbuch
spezifikation:
 schablone:
 spezifikation:
 Behälter:
 - Name: my-notebook
 Bild: kubeflownotebookswg/jupyter:master
 Argumente:
 [
 "start.sh „,
 „Labor“,
 „--labApp.token="“,
 „--labapp.allow_remote_access='Wahr'“,
 „--labapp.allow_root='Wahr'“,
 „--labapp.ip='*'“,
 „--labapp.base_url=/test/mein-notebook/“,
 „--port=8888",
 „--kein Browser“,
 ]

Basic Auth für Notebooks

Vor der Implementierung von OAuth2 bot TrueFoundry Benutzern die Möglichkeit, die Sicherheit ihrer öffentlichen Notebooks durch die Integration der Standardauthentifizierung zu erhöhen. Diese zusätzliche Sicherheitsebene war entscheidend, um sicherzustellen, dass nur autorisierte Personen auf den vertraulichen Inhalt dieser Notizbücher zugreifen konnten. Um diese Funktion zu implementieren, nutzte TrueFoundry die Funktionen von WebAssembly (Wasm) -Plugins innerhalb des Istio-Proxys, insbesondere der Proxy für Gesandte.

Istio, ein Open-Source-Service-Mesh, bietet ein Framework für die Verwaltung der Netzwerkkommunikation zwischen verschiedenen Service-Workloads. Mit Istio wurde TrueFoundry in die Lage versetzt, benutzerdefinierte Logik direkt in die Netzwerkebene einzufügen, die vom Envoy-Proxy verwaltet wird. Dieser Ansatz ermöglichte eine effektive Kontrolle und Sicherheit des Datenverkehrs, der zu und von ihren Jupyter-Notebooks fließt. Der Schlüssel zur Implementierung der Basisauthentifizierung war das WASMplugin, eine Funktion von Istio, die die Bereitstellung von WebAssembly-Modulen innerhalb des Envoy-Proxys erleichtert.

Dieses grundlegende WASM-Plugin für die Authentifizierung ist in eine Abfolge von Netzwerkfiltern innerhalb des Envoy-Proxys integriert. Diese Filter ermöglichen die Ausführung übergeordneter Funktionen in Bezug auf Zugriffskontrolle, Transformation, Datenanreicherung, Prüfung und mehr und verbessern so die allgemeine Sicherheit und Funktionalität des Service Mesh. Hier ist eine vereinfachte Version der Spezifikation für das Hinzufügen eines einfachen Authentifizierungsfilters zur Envoy-Filterkette:

API-Version: extensions.istio.io/v1alpha1
Art: WASM-Plugin
Metadaten:
 Name: Basic-Auth
 Namespace: istio-ingress
spezifikation:
 Phase: AUTHN
 Plugin-Konfiguration:
 grundlegende Authentifizierungsregeln:
 - Referenzen:
 - Benutzer:Pass
 Gastgeber: www.example.com
 Präfix: /secret/
 Selektor:
 Labels abgleichen:
 istio: ingressgateway
 url: oci: //ghcr.io/istio-ecosystem/wasm-extensions/basic_auth:1.12.0

OAuth2 für Notebook

Für die Implementierung von OAuth2 in unseren Notebooks verwendeten wir einen Envoy-Filter, aber der Ansatz unterschied sich von dem der Standardauthentifizierung. Im Gegensatz zur Basisauthentifizierung, bei der wir bequem ein vorgefertigtes WASM-Plugin in die Filterkette einfügen konnten, benötigte OAuth2 eine maßgeschneidertere Lösung. Um dies zu erreichen, verwendeten wir einen HTTP-Filter, der speziell für OAuth entwickelt wurde. Bei TrueFoundry lässt sich unser Single Sign-On-System integrieren mit FusionAuth, der als unser OAuth-Anbieter fungiert.

So sieht die Envoy-Filter-Spezifikation aus — weitere Informationen finden Sie in den Kommentaren in der Datei:

API-Version: networking.istio.io/v1alpha3
Art: EnvoyFilter
Metadaten:
 name: truefoundry-notebook-tfy-oauth2 # Name des EnvoyFilters
 namespace: auth-test # Namespace, in dem der EnvoyFilter eingesetzt wird
spezifikation:
 Workload-Selektor:
 Beschriftungen:
 truefoundry.com/application: truefoundry-notebook # Selektor für Workloads mit bestimmten Labels
 Patches konfigurieren:
 - Bewerben Sie sich bei: CLUSTER
 Spiel:
 Kontext: SIDECAR_OUTBOUND
 Patch:
 Bedienung: ADD
 wert:
 name: tfy-oauth2 # Name des Clusters für den OAuth2-Authentifizierungsdienst
 type: LOGICAL_DNS # Art der Diensterkennung (DNS)
 connect_timeout: 5s # Timeout für den Verbindungsaufbau
 lb_policy: ROUND_ROBIN # Lastausgleichsrichtlinie
 # andere Load Balancing-Konfiguration
 - Anwenden auf: HTTP_FILTER
 Spiel:
 Kontext: SIDECAR_INBOUND
 Zuhörer:
 Filterkette:
 filtern:
 Name: „envoy.filters.network.http_connection_manager“
 Unterfilter:
 Name: envoy.filters.http.jwt_authn
 Patch:
 operation: INSERT_BEFORE # Diesen Filter vor dem JWT-Authentifizierungsfilter einfügen
 wert:
 name: envoy.filters.http.tfy-oauth # Name des OAuth-Filters
 typ_config:
 "@type „: type.googleapis.com/envoy.extensions.filters.http.oauth2.v3.oauth2
 Konfiguration:
 use_refresh_token: false # Ob ein Aktualisierungstoken verwendet werden soll
 pass_through_matcher:
 - Name: Autorisierung
 present_match: true # Durchlaufen, wenn der Autorisierungsheader vorhanden ist
 forward_bearer_token: true # Forward-Inhaber-Token an Upstream
 auth_type: BASIC_AUTH # Art der verwendeten Authentifizierung
 token_endpoint:
 cluster: tfy-oauth2 # Cluster für Token-Endpunkt
 uri: <token-endpoint-uri-of-oauth-provider>
 Timeout: 5s # Timeout für Token-Endpunkt
 Authorization_Endpunkt: <authorization-endpoint-uri-of-oauth-provider>
 redirect_uri: https://%REQ(:authority)%/truefoundry-notebook/_auth/callback # Umleitungs-URI für Rückruf
 Umleitungspfad_Matcher:
 Pfad:
 exakt: /truefoundry-notebook/_auth/callback # Pfad für die Umleitungs-URI
 Abmeldepfad:
 Pfad:
 exact: /truefoundry-notebook/_auth/signout # Pfad zum Abmelden
 Referenzen:
 Kunden-ID: <client-id-for-oauth>
 token_secret:
 # Konfiguration zum Abrufen des Token-Geheimnisses
 # Lesen Sie hier mehr darüber, wie wir Geheimnisse abrufen:
 # https://www.envoyproxy.io/docs/envoy/latest/configuration/security/secret
 hmac_secret:
 # Konfiguration zum Abrufen von HMAC

Wenn ein Benutzer zum ersten Mal versucht, auf einen Dienst zuzugreifen, der durch den OAuth2-Filter geschützt ist, wird er zum authorization_endpoint. Dieser Endpunkt ist die URL unseres externen OAuth-Anbieters, bei dem es sich in unserer Implementierung um das FusionAuth-basierte TrueFoundry-Login-Modal handelt. Diese Umleitung ist ein wichtiger Schritt im OAuth-Prozess. Sie führt Benutzer zu einem sicheren Ort, an dem sie sich authentifizieren und somit die erforderlichen Berechtigungen für den Zugriff auf den Dienst gewähren können.

Sobald die Anmeldung abgeschlossen ist, leitet FusionAuth Sie weiter zum Umleitung_URI (in der Filterspezifikation konfiguriert), indem dort ein geheimer, temporärer Autorisierungscode hinzugefügt wird. Diese Anfrage wird vom Filter abgefangen und er sendet eine Anfrage an token_endpoint, tauscht den Code gegen ein JWT-Token aus. Schließlich setzt der Filter Cookies mit dem JWT-Token.

Nachfolgende Zugriffe auf den Dienst werden durch den HTTP-Filter geleitet, da das Cookie den Autorisierung Header mit JWT als Wert. Der Filter ist so konfiguriert, dass er solche Anfragen durchlässt (siehe pass_through_matcher in der Spezifikation). Um zu überprüfen, ob das JWT ein gültiges Token ist, erstellen wir eine RequestAuthentication-Richtlinie, die beim OAuth-Anbieter nachfragt:

API-Version: security.istio.io/v1beta1
Art: RequestAuthentication
Metadaten:
 #...
spezifikation:
 Selektor:
 #...
 JWT-Regeln:
 - Emittent: „truefoundry.com“
 Aus Headern:
 - Name: Autorisierung
 Präfix: „Träger“
 Publikum:
 - <client-id>
 JWK sagt: <oauth-provider-jwks-uri>
 ForwardOriginalToken: wahr

Schließlich fügen wir die Autorisierungsrichtlinie hinzu, die festlegt, welche Anfragen gelten sollen Authentifizierung anfordern zu. Wir möchten die Autorisierung auf alle Anfragen auf Port 8888 anwenden:

API-Version: security.istio.io/v1beta1
Art: AuthorizationPolicy
Metadaten:
 Name: bestes Notebook-TFY-OAUTH2
 Namespace: Auth-Test
spezifikation:
 Selektor:
 Labels abgleichen:
 truefoundry.com/application: bestes Notizbuch
 Aktion: VERWEIGERN
 Regeln:
 - von:
 - Quelle:
 NotRequestPrincipals: ["*"]
 zu:
 - Bedienung:
 Anschlüsse:
 - „8888"

Der schnellste Weg, deine KI zu entwickeln, zu steuern und zu skalieren

Melde dich an
Inhaltsverzeichniss

Steuern, implementieren und verfolgen Sie KI in Ihrer eigenen Infrastruktur

Buchen Sie eine 30-minütige Fahrt mit unserem KI-Experte

Eine Demo buchen

Der schnellste Weg, deine KI zu entwickeln, zu steuern und zu skalieren

Demo buchen

Entdecke mehr

October 5, 2023
|
Lesedauer: 5 Minuten

<Webinar>GenAi Showcase for Companies

Best Fine Tuning Tools for Model Training
May 3, 2024
|
Lesedauer: 5 Minuten

Die 6 besten Tools zur Feinabstimmung für das Modelltraining im Jahr 2026

May 25, 2023
|
Lesedauer: 5 Minuten

Open-Source-LLMs: Umarmen oder untergehen

August 27, 2025
|
Lesedauer: 5 Minuten

Kartierung des KI-Marktes vor Ort: Von Chips bis zu Steuerflugzeugen

May 16, 2026
|
Lesedauer: 5 Minuten

The Agent Sprawl Problem: Why Enterprises Need Control Before Autonomy

Keine Artikel gefunden.
May 15, 2026
|
Lesedauer: 5 Minuten

Introducing Skills Registry: Reusable Agent Skills for Production AI Systems

Keine Artikel gefunden.
Types of AI agents governed by TrueFoundry enterprise control plane
May 15, 2026
|
Lesedauer: 5 Minuten

Types of AI Agents: Definitions, Roles, and What They Mean for Enterprise Deployment

Keine Artikel gefunden.
May 15, 2026
|
Lesedauer: 5 Minuten

OAuth at the MCP Layer: How We Solved Enterprise Token Management for AI Agents

Keine Artikel gefunden.
April 22, 2026
|
Lesedauer: 5 Minuten

Ein Leitfaden für Cloud Node Auto-Provisioning

Kubernetes

Aktuelle Blogs

Black left pointing arrow symbol on white background, directional indicator.
Black left pointing arrow symbol on white background, directional indicator.
Machen Sie eine kurze Produkttour
Produkttour starten
Produkttour