Implementierung von Single Sign On Authentifizierung in Apache Airflow

Georgios Fyntanidis

Geschrieben von: Georgios Fyntanidis - 19 September 2024

Apache Airflow ist eine Open-Source-Orchestrierungsplattform, die eine Code-basierte Python-Schnittstelle zum Planen, Verwalten und Skalieren von Workflows sowie eine Benutzerschnittstelle zur Überwachung des Status aller Workflows und Tasks bietet. Aufgrund seines Code-First-Charakters ist Airflow in hohem Maße anpassbar und erweiterbar, so dass Benutzer ihre eigenen Operatoren und Hooks hinzufügen können. Es zeichnet sich durch seine Flexibilität aus, da es skalierbar ist, um eine beliebige Anzahl von Workflow-Pipelines zu betreiben und kann die Ressourceneffizienz und Workflow-Optimierung durch die parallele Ausführung von Tasks verbessern. Als System von Microservices profitiert es von Vorteilen wie Skalierbarkeit, Fehlerisolierung und Flexibilität bei der Bereitstellung, da der Benutzer einfach einzelne Komponenten bereitstellen oder aktualisieren kann. Obwohl Airflow häufig zur Orchestrierung von Datenverarbeitungspipelines eingesetzt wird, ist es im Allgemeinen unabhängig davon, welche Arten von Tasks es plant. Airflow kann auch für jeden erdenklichen Zweck eingesetzt werden, bei dem digitale Arbeitsabläufe geplant und orchestriert werden müssen.

Kurze Einführung in Single Sign On (SSO)

Heutzutage kann die Verwaltung zahlreicher Online-Konten und die Erinnerung an mehrere Passwörter eine entmutigende Aufgabe sein. SSO bietet eine Lösung, indem es Benutzern den Zugriff auf mehrere Konten mit einem einzigen Satz von Anmeldedaten ermöglicht. Die oben beschriebene Methode ist nicht nur von Vorteil für den Benutzer, der sich nicht an verschiedene Anmeldeinformationen erinnern muss, sondern verbessert auch die Sicherheit und die Verwaltung. Mit dem Einsatz von Microsoft Entra ID als Identity Provider (IdP) zur Einrichtung von SSO in der Organisation wird die IT-Sicherheit gestärkt und die Organisation verfügt über eine effektivere Corporate Governance durch die Verwendung eines zentralisierten Authentifikators.

SSO ist in der Praxis weit verbreitet, um den Zugang der Benutzer zu optimieren und sensible Informationen zu schützen. Es gibt eine Reihe von Möglichkeiten, SSO in einer Anwendung zu implementieren, z. B. SAML oder verschiedene OAuth 2.0-Flows, von denen wir einen im folgenden Beispiel verwenden werden.

Wie funktioniert SSO?

SSO funktioniert, indem der Authentifizierungsprozess bei einem Identity Provider zentralisiert wird. Wenn ein Benutzer aufgefordert wird, seine Anmeldedaten in einer geschützten Anwendung zu hinterlegen, wird der Benutzer zum IdP weitergeleitet, wo er sich authentifizieren muss. Nach erfolgreicher Authentifizierung übernimmt der IdP. Abhängig vom spezifischen Authentifizierungsablauf, der verwendet wird, werden die vom IdP erhaltenen Token verarbeitet und der Benutzer wird wieder zu der Anwendung zurückgeleitet, für die er sich angemeldet hat. 

auth article_Single Sign On

Es gibt eine Vielzahl verschiedener OAuth-Flows für unterschiedliche Anwendungsfälle. In unserem Anwendungsfall werden wir den “OAuth 2.0 authorization code grant”, auch bekannt als“auth code flow”, implementieren. Dies ist ein OAuth-Flow, der häufig von Single Page Web Applications (SPA) und serverbasierten Webanwendungen wie Airflow verwendet wird.

microsoft_oauth_flow_diagram_Single Sign On

source: https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow (Artikel) /
https://learn.microsoft.com/en-us/entra/identity-platform/media/v2-oauth2-auth-code-flow/convergence-scenarios-native.svg (Bild) 

Eine kleine Einführung in Microsoft Entra ID

Microsoft Entra ID, ehemals unter dem Namen Azure Active Directory (Azure AD) bekannt, ist ein cloudbasierter Identitäts- und Zugriffsverwaltungsdienst. Benutzer können diesen innerhalb eines Unternehmens nutzen, um auf interne (alle von Ihrem Unternehmen entwickelten Cloud-Anwendungen) oder externe (Microsoft 365, Azure-Portal oder sogar eine der zahlreichen SaaS-Anwendungen) Anwendungen zuzugreifen. Er bietet den Benutzern je nach ihrer Rolle unterschiedliche Vorteile, wie in der folgenden Tabelle dargestellt:

Rolle

Vorteile

IT Admins

Ermöglicht die Verwaltung des Zugriffs auf Anwendungen und Ressourcen auf der Grundlage von Geschäftsanforderungen durch die Möglichkeit der Multi-Faktor-Authentifizierung zwischen wichtigen Ressourcen.

App Developers

Sie können Microsoft Entra ID als standardbasierten Authentifizierungsanbieter verwenden, der ihnen hilft, SSO zu Apps zu integrieren, die mit den vorhandenen Anmeldedaten eines Benutzers arbeiten. Entwickler können auch Microsoft Entra APIs verwenden, um personalisierte Angebote mit Unternehmensdaten zu kreieren.

Cloud services users

Sie verwenden bereits die Microsoft Entra ID, da jeder Microsoft 365, Office 365, Azure und Dynamics CRM Online Tenant automatisch ein Microsoft Entra Tenant ist.

 


Optimieren Sie Ihr Workflowmanagement
mit Apache Airflow!

NextLyitcs Whitepaper Apache Airflow DE


Airflow für die Verwendung von OAuth2 konfigurieren

Die Authentifizierung in Apache Airflow wird über eine zugrunde liegende Implementierung des Flask-AppBuilder verwaltet. Daher muss die Konfiguration der OAuth-Authentifizierung für Apache Airflow in der Konfigurationsdatei für die Webserver-Komponente der Anwendung erfolgen. Da diese auf dem Flask-AppBuilder basiert, kann derselbe Ansatz auch auf andere auf derselben Technologie basierenden Anwendungen angewendet werden, wie zum Beispiel Apache Superset und viele mehr.

Zunächst muss die Variable ”AUTH_TYPE” auf den Wert ”AUTH_OAUTH” gestellt werden.

Die Konfiguration in “OAUTH_PROVIDERS” hängt vom jeweiligen Identity Provider ab, so dass die Einrichtung möglicherweise nicht eins zu eins auf andere OAuth-Identity Provider wie AWS übertragbar ist.

Webserver_config_OauthProvider_Single Sign On

Anschließend müssen Sie eine Rollenzuordnung zwischen den in Ihrer Azure-Anwendung konfigurierten Zugriffsrollen und der Rollenstruktur in Ihrer Instanz von Apache Airflow erstellen. Dadurch wird sichergestellt, dass jeder Benutzer nur auf den Bereich zugreifen kann, den Sie für ihn definiert haben, was besonders bei größeren Bereitstellungen oder Entwicklungsteams nützlich ist. In unserem Fall bedeutet dies, dass die Azure- Applikationsrolle “airflow_prod_admin” auf die Airflow-Rolle “Admin” zugeordnet wird und so weiter.

Webserver_config_RoleMapping_Single Sign On

Abschließend muss noch die Klasse “AzureCustomSecurity” implementiert werden, die das Anfordern und Verarbeiten des Access Tokens vom Identity Provider übernimmt.

Webserver_config_SecurityManager_Single Sign On

 

Konfiguration der Anwendung in Azure

Um eine Anwendung in Azure zu erstellen und zu definieren, was für das SSO auf Airflow erforderlich ist, muss der Nutzer eine Reihe von Schritten ausführen. Zunächst navigieren Sie im Azure-Portal auf Microsoft Entra ID und dann unter dem Menüpunkt Verwalten auf Unternehmensanwendungen. Dort muss der Benutzer eine neue Anwendung erstellen und "Eigene Anwendung erstellen" auswählen.

azure_app_config_1_Single Sign On

Dann müssen Sie die Anwendung erstellen und eine Redirect- und Logout-URL entsprechend Ihrer Airflow-Instanz hinzufügen. Dann konfigurieren Sie im Tab “App-Rollen” die Rollenstruktur, die auf die Airflow Rollenstruktur verweist (siehe Webserver-Konfiguration). Schließlich müssen Sie im Abschnitt "Token configuration" einen optionalen Claim und einen Gruppen-Claim einrichten, die Zugriff auf die Felder "email", "family_name", "given_name", "preferred_username" und "upn" erlauben. Dadurch enthält das vom IdP ausgestellte Token diese Informationen, die von Airflow zur Durchführung der Authentifizierung benötigt werden.

azure_app_config_2_Single Sign On

Implementierung von Single Sign On Authentifizierung - Unser Fazit

Die Integration von SSO in Apache Airflow kann sowohl die Sicherheit als auch die Benutzerfreundlichkeit erheblich verbessern und sich an moderne Authentifizierungsstandards anpassen. Durch die Verwendung eines IdP kann das Unternehmen die Zugriffsverwaltung vereinfachen und die Benutzer müssen sich nicht um zahlreiche Anmeldedaten kümmern, was die Produktivität und das Benutzererlebnis verbessert. Da Unternehmen weiterhin Cloud-basierte Lösungen einsetzen, ist die Implementierung von SSO ein wichtiger Schritt, um sicherzustellen, dass sowohl Unternehmen als auch Benutzer effizient und sicher arbeiten können.

Wenn Sie neugierig sind, wie Sie Airflow an Ihre geschäftlichen Anforderungen anpassen können, oder wenn Sie mehr über unsere anderen Spezialgebiete erfahren möchten, können Sie uns jederzeit kontaktieren!

Erfahren Sie mehr über Apache Airflow

Themen: Machine Learning, Apache Airflow

Beitrag teilen

Sie haben eine Frage zum Blog?
Fragen Sie Georgios Fyntanidis