Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)
Auf dieser Seite werden verschiedene Mechanismen zur Zugriffssteuerung für die Airflow-UI und die DAG-UI beschrieben. Sie können diese Mechanismen zusätzlich zur Zugriffssteuerung von IAM verwenden, um Nutzer in der Airflow-UI und der DAG-UI Ihrer Umgebung zu trennen.
Überblick über die Zugriffssteuerung für die Airflow-UI in Managed Airflow
Der Zugriff auf die Airflow-UI und die DAG-UI sowie die Sichtbarkeit von Daten und Vorgängen in diesen UIs werden in Managed Airflow auf zwei Ebenen gesteuert:
Der Zugriff auf die Airflow-UI und die DAG-UI in Managed Airflow wird von IAM gesteuert.
Wenn ein Konto keine Rolle hat, mit der Managed Airflow-Umgebungen in Ihrem Projekt angezeigt werden können, sind die Airflow-UI und die DAG-UI nicht verfügbar.
IAM bietet keine zusätzliche detaillierte Berechtigungssteuerung in der Airflow-UI oder der DAG-UI.
Mit dem Apache Airflow-Zugriffssteuerungsmodell kann die Sichtbarkeit in der Airflow-UI und der DAG-UI basierend auf der Nutzerrolle eingeschränkt werden.
Die Apache Airflow-Zugriffssteuerung ist ein Feature von Airflow mit einem eigenen Modell von Nutzern, Rollen und Berechtigungen, das sich von IAM unterscheidet.
Die Apache Airflow-Zugriffssteuerung verwendet ressourcenbasierte Berechtigungen. Alle Airflow-Nutzer mit einer bestimmten Airflow-Rolle erhalten die Berechtigungen dieser Rolle. Airflow-Nutzer mit einer Rolle mit der Berechtigung can delete on Connections können beispielsweise Verbindungen auf der Seite „Connections“ (Verbindungen) in der Airflow-UI löschen.
Sie können auch Berechtigungen auf DAG-Ebene für einzelne DAGs zuweisen. So können beispielsweise nur Nutzer mit einer bestimmten Airflow-Rolle einen bestimmten DAG in der Airflow-UI sehen. In Managed Airflow können Sie Berechtigungen auf DAG-Ebene automatisch zuweisen, basierend auf dem Unterordner, in dem sich die DAG-Datei im Bucket der Umgebung befindet.
Wenn Sie den Zugriff für externe Identitäten über die Mitarbeiteridentitätsföderationeinrichten möchten, gewähren Sie zuerst Zugriff auf Ihre Umgebung in IAM, wie im Abschnitt IAM-Rollen externen Identitäten zuweisen beschrieben. Anschließend können Sie die Zugriffssteuerung für die Airflow-UI wie gewohnt verwenden. Airflow-Nutzer für externe Identitäten verwenden ihre Haupt-ID anstelle der E-Mail-Adresse und haben andere Werte in anderen Feldern des Nutzereintrags als Google-Konten.
Hinweis
- Die Registrierung von Rollen pro Ordner ist in Managed Airflow 2.0.16 und höher verfügbar.
Airflow-Rollen und Einstellungen für die Zugriffssteuerung verwalten
Nutzer mit der Rolle „Administrator“ (oder gleichwertig) können die Einstellungen für die Zugriffssteuerung in der Airflow-UI aufrufen und ändern.
In der Airflow-UI können Sie die Einstellungen für die Zugriffssteuerung über das Menü Security (Sicherheit) konfigurieren. Weitere Informationen zum Airflow-Zugriffssteuerungs modell, zu den verfügbaren Berechtigungen und zu den Standardrollen finden Sie in der Dokumentation zur Zugriffssteuerung für die Airflow-UI.
Airflow verwaltet eine eigene Liste von Nutzern. Nutzer mit der Rolle „Administrator“ (oder gleichwertig) können die Liste der Nutzer aufrufen, die die Airflow-UI einer Umgebung geöffnet und sich in Airflow registriert haben. Diese Liste enthält auch Nutzer, die manuell von einem Administrator vorregistriert wurden, wie im folgenden Abschnitt beschrieben.
Nutzer in der Airflow-UI registrieren
Neue Nutzer werden automatisch registriert, wenn sie die Airflow-UI einer Managed Airflow-Umgebung zum ersten Mal öffnen.
Bei der Registrierung erhalten Nutzer die Rolle, die in der Airflow-Konfigurationsoption [webserver]rbac_user_registration_role angegeben ist. Sie können
die Rolle neu registrierter Nutzer steuern, indem Sie diese Airflow-Konfigurationsoption mit einem anderen Wert überschreiben.
Wenn nicht anders angegeben, ist die Standardregistrierungsrolle in Umgebungen mit Airflow 2 und 3 Op.
Zum Erstellen einer einfachen Rollenkonfiguration für die Airflow-UI werden folgende Schritte empfohlen:
Umgebungsadministratoren öffnen die Airflow-UI für die neu erstellte Umgebung.
Gewähren Sie den Administratorkonten die Rolle
Admin. Die Standardrolle für neue Konten istOp. Führen Sie zum Zuweisen der RolleAdminden folgenden Airflow-Befehlszeilenbefehl mit der gcloud CLI aus:gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ users add-role -- -e USER_EMAIL -r AdminErsetzen Sie:
ENVIRONMENT_NAMEdurch den Namen der Umgebung.LOCATIONdurch die Region, in der sich die Umgebung befindet.USER_EMAILdurch die E-Mail-Adresse eines Nutzerkontos.
Administratoren können jetzt die Zugriffssteuerung für neue Nutzer konfigurieren und beispielsweise die Rolle
Adminanderen Nutzern zuweisen.
Nutzer vorregistrieren
Nutzer werden automatisch mit numerischen IDs von Google-Nutzerkonten (nicht E-Mail-Adressen) als Nutzernamen registriert. Sie können einen Nutzer auch manuell vorregistrieren und ihm eine Rolle zuweisen, indem Sie einen Nutzereintrag hinzufügen, bei dem das Feld für den Nutzernamen auf die primäre E-Mail-Adresse des Nutzers festgelegt ist. Wenn sich ein Nutzer mit einer E-Mail-Adresse zum ersten Mal in der Airflow-UI anmeldet, die mit einem vorregistrierten Nutzereintrag übereinstimmt, wird sein Nutzername durch die Nutzer-ID ersetzt, die derzeit zum Zeitpunkt der ersten Anmeldung durch seine E-Mail-Adresse identifiziert wird. Die Beziehung zwischen Google-Identitäten (E-Mail-Adressen) und Nutzerkonten (Nutzer-IDs) ist nicht festgelegt. Google-Gruppen können nicht vorregistriert werden.
Wenn Sie Nutzer vorregistrieren möchten, können Sie die Airflow-UI verwenden oder einen Airflow-Befehlszeilenbefehl über die Google Cloud CLI ausführen.
Führen Sie den folgenden Airflow-Befehlszeilenbefehl aus, um einen Nutzer mit einer benutzerdefinierten Rolle über die Google Cloud CLI vorzuregistrieren:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
users create -- \
-r ROLE \
-e USER_EMAIL \
-u USER_EMAIL \
-f FIRST_NAME \
-l LAST_NAME \
--use-random-password # The password value is required, but is not used
Ersetzen Sie Folgendes:
ENVIRONMENT_NAME: der Name der UmgebungLOCATION: die Region, in der sich die Umgebung befindetROLE: eine Airflow-Rolle für den Nutzer, z. B.OpUSER_EMAIL: die E-Mail-Adresse des NutzersFIRST_NAMEundLAST_NAME: Vor- und Nachname des Nutzers
Beispiel:
gcloud composer environments run example-environment \
--location us-central1 \
users create -- \
-r Op \
-e "example-user@example.com" \
-u "example-user@example.com" \
-f "Name" \
-l "Surname" \
--use-random-password
Nutzer entfernen
Wenn Sie einen Nutzer aus Airflow löschen, wird der Zugriff für diesen Nutzer nicht widerrufen, da er beim nächsten Zugriff auf die Airflow-UI automatisch wieder registriert wird. Wenn Sie den Zugriff auf die gesamte Airflow-UI widerrufen möchten, entfernen Sie die composer.environments.get
Berechtigung aus der Zulassungsrichtlinie für Ihr Projekt.
Sie können die Rolle des Nutzers auch auf „Öffentlich“ ändern. Dadurch bleibt die Registrierung des Nutzers erhalten, aber alle Berechtigungen für die Airflow-UI werden entfernt.
Berechtigungen auf DAG-Ebene automatisch konfigurieren
Mit der Funktion „Registrierung von Rollen pro Ordner“ wird automatisch eine
benutzerdefinierte Airflow-Rolle für jeden Unterordner
direkt im Ordner /dags erstellt und dieser Rolle wird Zugriff auf DAG-Ebene für alle
DAGs gewährt, deren Quelldatei in diesem Unterordner gespeichert ist. Dadurch wird die Verwaltung benutzerdefinierter Airflow-Rollen und deren Zugriff auf DAGs vereinfacht.
Funktionsweise der Registrierung von Rollen pro Ordner
Die Registrierung von Rollen pro Ordner ist eine automatisierte Methode zum Konfigurieren von Rollen und deren Berechtigungen auf DAG-Ebene. Daher kann es zu Konflikten mit anderen Airflow-Mechanismen kommen, die Berechtigungen auf DAG-Ebene gewähren:
- DAG-Berechtigungen manuell Rollen zuweisen.
- DAGs Rollen über das Attribut
access_controlin einem DAG zuweisen.
Um solche Konflikte zu vermeiden, ändert die Aktivierung der Registrierung von Rollen pro Ordner auch das Verhalten dieser Mechanismen.
In Airflow 2 und 3:
- Sie können Rollen über das
access_controlAttribut Zugriff auf DAGs gewähren, das im DAG-Quellcode definiert ist. - Das manuelle Gewähren von DAG-Berechtigungen (über die Airflow-UI oder die gcloud CLI) kann zu Konflikten führen. Wenn Sie beispielsweise einer Rolle pro Ordner manuell Berechtigungen auf DAG-Ebene gewähren, können diese Berechtigungen entfernt oder überschrieben werden, wenn der DAG-Prozessor einen DAG synchronisiert. Wir empfehlen, DAG-Berechtigungen nicht manuell zu gewähren.
- Rollen haben eine Kombination von DAG-Zugriffsberechtigungen, die über die Registrierung von Rollen pro Ordner
registriert und im
access_controlAttribut von dem DAG definiert sind.
DAGs, die sich direkt im Ordner /dags der obersten Ebene befinden, werden keiner Rolle pro Ordner automatisch zugewiesen. Sie sind mit keiner Rolle pro Ordner zugänglich. Andere Rollen wie „Administrator“, „Operator“, „Nutzer“ oder eine benutzerdefinierte Rolle, der Berechtigungen gewährt wurden, können über die Airflow-UI und die DAG-UI darauf zugreifen.
Wenn Sie DAGs in Unterordner mit Namen hochladen, die mit integrierten Airflow-Rollen und von Managed Airflow erstellten Rollen übereinstimmen, werden die Berechtigungen für DAGs in diesen Unterordnern weiterhin diesen Rollen zugewiesen. Wenn Sie beispielsweise einen DAG in den Ordner /dags/Admin hochladen, werden der Rolle „Administrator“ Berechtigungen für diesen DAG gewährt. Zu den integrierten Airflow-Rollen gehören „Administrator“, „Operator“, „Nutzer“, „Betrachter“ und „Öffentlich“.
Managed Airflow erstellt „UserNoDags“, nachdem die Funktion „Registrierung von Rollen pro Ordner“ aktiviert wurde.
Airflow führt die Registrierung von Rollen pro Ordner aus, wenn DAGs im Airflow-Planer verarbeitet werden. Wenn sich mehr als 100 DAGs in Ihrer
Umgebung befinden, kann sich die
Zeit für das DAG-Parsing verlängern.
In diesem Fall empfehlen wir, mehr Arbeitsspeicher und CPU für Planer zu verwenden.
Sie können auch den Wert der Airflow-Konfigurationsoption [scheduler]parsing_processes erhöhen.
DAGs automatisch Rollen pro Ordner zuweisen
So weisen Sie DAGs automatisch Rollen pro Ordner zu:
Überschreiben Sie die folgende Airflow-Konfigurationsoption:
Bereich Schlüssel Wert webserverrbac_autoregister_per_folder_rolesTrueÄndern Sie die Rolle für die Registrierung neuer Nutzer in eine Rolle ohne Zugriff auf DAGs. So haben neue Nutzer keinen Zugriff auf DAGs, bis ein Administrator ihren Konten eine Rolle zuweist, die Berechtigungen für bestimmte DAGs hat.
„UserNoDags“ ist eine Rolle, die von Managed Airflow nur erstellt wird, wenn die Funktion „Registrierung von Rollen pro Ordner“ aktiviert ist. Sie entspricht der Rolle „Nutzer“, hat aber keinen Zugriff auf DAGs.
Überschreiben Sie die folgende Airflow-Konfigurationsoption:
Bereich Schlüssel Wert webserverrbac_user_registration_roleUserNoDagsAchten Sie darauf, dass Nutzer in Airflow registriert sind.
Weisen Sie Nutzern Rollen mit einer der folgenden Methoden zu:
- Lassen Sie Airflow automatisch Rollen basierend auf den Unterordnern der DAGs erstellen und weisen Sie dann Nutzer diesen Rollen zu.
- Erstellen Sie vorab leere Rollen für die Unterordner der DAGs, wobei die Rollennamen mit dem Namen eines Unterordners übereinstimmen, und weisen Sie dann Nutzer diesen Rollen zu. Erstellen Sie beispielsweise,
für den Ordner
/dags/CustomFoldereine Rolle mit dem NamenCustomFolder.
Laden Sie DAGs in Unterordner mit Namen hoch, die mit den Rollen übereinstimmen, die Nutzern zugewiesen wurden. Diese Unterordner müssen sich im Ordner
/dagsim Bucket der Umgebung befinden. Airflow fügt DAGs in einem solchen Unterordner Berechtigungen hinzu, sodass nur Nutzer mit der entsprechenden Rolle über die Airflow-UI und die DAG-UI darauf zugreifen können.
Berechtigungen auf DAG-Ebene manuell konfigurieren
Sie können Berechtigungen auf DAG-Ebene für benutzerdefinierte Rollen konfigurieren, um anzugeben, welche DAGs für bestimmte Nutzergruppen sichtbar sind.
So konfigurieren Sie Berechtigungen auf DAG-Ebene in der Airflow-UI:
- Der Administrator erstellt leere Rollen zum Gruppieren von DAGs.
- Der Administrator weist Nutzern die entsprechenden Rollen zu.
- Der Administrator oder die Nutzer weisen Rollen DAGs zu.
- In der Airflow-UI können Nutzer nur DAGs sehen, die ihrer Gruppe zugewiesen sind.
DAGs können Rollen entweder über DAG-Attribute oder über die Airflow-UI zugewiesen werden.
DAGs Rollen in der Airflow-UI zuweisen
Ein Administrator kann den entsprechenden Rollen die gewünschten Berechtigungen auf DAG-Ebene in der Airflow-UI zuweisen.
Dieser Vorgang wird in der DAG-UI nicht unterstützt.
DAGs Rollen in DAG-Attributen zuweisen
Sie können den
access_control DAG-Parameter für einen DAG festlegen und
die DAG-Gruppierungsrollen angeben, denen der DAG zugewiesen ist.
In Airflow 2-Versionen vor 2.1.0 müssen der Administrator, der DAG-Entwickler oder ein
automatisierter Prozess den sync-perm Airflow-Befehl ausführen, um
die neuen Einstellungen für die Zugriffssteuerung anzuwenden.
In Airflow 2.1.0 und höher ist die Ausführung dieses Befehls nicht mehr erforderlich, da der Planer Berechtigungen auf DAG-Ebene anwendet, wenn er einen DAG parst.
dag = DAG(
access_control={
'DagGroup': {'can_edit', 'can_read'},
},
...
)
Audit-Logs in der Airflow-UI Nutzern zuordnen
Audit-Logs in der Airflow-UI werden numerischen IDs von Google-Nutzerkonten zugeordnet. Wenn ein Nutzer beispielsweise einen DAG pausiert, wird den Logs ein Eintrag hinzugefügt.
Sie können Audit-Logs in der Airflow-UI auf der Seite Browse > Audit Logs aufrufen.
In einem typischen Eintrag wird im Feld Owner (Inhaber) eine numerische ID aufgeführt: accounts.google.com:NUMERIC_ID. Sie können numerische IDs auf der
Security > List Users Seite E-Mail-Adressen von Nutzern zuordnen. Diese Seite ist für Nutzer mit der Rolle Admin verfügbar.
Beachten Sie, dass die Beziehung zwischen Google-Identitäten (E-Mail-Adressen) und Nutzerkonten (Nutzer-IDs) nicht festgelegt ist.