Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Auf dieser Seite werden verschiedene Mechanismen zur Zugriffssteuerung für die Airflow-UI und die DAG-UI beschrieben. Zusätzlich zur Zugriffssteuerung durch IAM können Sie diese Mechanismen verwenden, um Nutzer in der Airflow-UI und der DAG-UI Ihrer Umgebung zu trennen.
Übersicht über die Airflow-UI-Zugriffssteuerung in Cloud Composer
Der Zugriff auf die Airflow-UI und die DAG-UI sowie die Sichtbarkeit von Daten und Vorgängen in diesen UIs werden in Cloud Composer auf zwei Ebenen gesteuert:
Der Zugriff auf die Airflow-UI und die DAG-UI in Cloud Composer wird durch IAM gesteuert.
Wenn ein Konto keine Rolle hat, mit der Cloud Composer-Umgebungen in Ihrem Projekt aufgerufen 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 DAG-UI.
Mit dem Apache Airflow-Zugriffssteuerungsmodell lässt sich die Sichtbarkeit in der Airflow-UI und der DAG-UI basierend auf der Nutzerrolle einschränken.
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-Benutzeroberfläche löschen.
Sie können auch Berechtigungen auf DAG-Ebene für einzelne DAGs zuweisen. So können Sie beispielsweise festlegen, dass nur Nutzer mit einer bestimmten Airflow-Rolle einen bestimmten DAG in der Airflow-Benutzeroberfläche sehen können. In Cloud Composer können Sie Berechtigungen auf DAG-Ebene automatisch zuweisen. Dies basiert auf dem Unterordner, in dem sich die DAG-Datei im Bucket der Umgebung befindet.
Hinweise
Die Airflow-UI mit Zugriffssteuerung ist für Cloud Composer-Versionen 1.13.4 oder höher und Airflow-Versionen 1.10.10 oder höher verfügbar. Für die Umgebung muss auch Python 3 ausgeführt werden.
Die Registrierung von Rollen pro Ordner ist in Cloud Composer 1.18.12 und höher in Airflow 2 sowie in Cloud Composer 1.13.4 und höher in Airflow 1 verfügbar.
Zugriffssteuerung für die Airflow-UI aktivieren
Airflow 2
Die Airflow-UI mit Zugriffssteuerung ist in Airflow 2 immer aktiviert.
Airflow 1
Überschreiben Sie die folgende Airflow-Konfigurationsoption, um die Airflow-UI mit Zugriffssteuerung zu aktivieren:
Bereich | Schlüssel | Wert |
---|---|---|
webserver |
rbac |
True |
Sie können dies für eine vorhandene Umgebung oder beim Erstellen einer neuen Umgebung tun.
Bei dieser Konfiguration wird in Ihrer Umgebung die Airflow-UI mit Zugriffssteuerung anstelle der klassischen Airflow-UI ausgeführt.
Airflow-Rollen und Einstellungen für die Zugriffssteuerung verwalten
Nutzer mit der Administratorrolle (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-Zugriffssteuerungsmodell, den verfügbaren Berechtigungen und den Standardrollen finden Sie in der Dokumentation zur Airflow-UI-Zugriffssteuerung.
In Airflow 1 wird die Nutzerrolle als Vorlage für alle benutzerdefinierten Rollen behandelt. Airflow kopiert Berechtigungen aus der Nutzerrolle kontinuierlich in alle benutzerdefinierten Rollen, mit Ausnahme der Berechtigungen für all_dags
.
Airflow verwaltet eine eigene Liste von Nutzern. Nutzer mit der Rolle „Administrator“ (oder gleichwertig) können die Liste der Nutzer aufrufen, die die Airflow-Benutzeroberfläche einer Umgebung geöffnet haben und in Airflow registriert sind. Diese Liste enthält auch Nutzer, die von einem Administrator manuell vorregistriert wurden, wie im folgenden Abschnitt beschrieben.
Nutzer in der Airflow-Benutzeroberfläche registrieren
Neue Nutzer werden automatisch registriert, wenn sie die Airflow-UI einer Cloud Composer-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 keine Angabe erfolgt, wird in Umgebungen mit Airflow 2 die Standardregistrierungsrolle Op
verwendet.
In Umgebungen mit Airflow 1.10.* ist die Standardregistrierungsrolle Admin
.
Zum Erstellen einer einfachen Rollenkonfiguration für die Airflow-UI werden folgende Schritte empfohlen:
Airflow 2
Umgebungsadministratoren öffnen die Airflow-Benutzeroberfläche für die neu erstellte Umgebung.
Gewähren Sie den Administratorkonten die Rolle
Admin
. Die Standardrolle für neue Konten in Umgebungen mit Airflow 2 istOp
. Führen Sie zum Zuweisen der RolleAdmin
den folgenden Airflow-Befehlszeilenbefehl mit der gcloud CLI aus:gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ users add-role -- -e USER_EMAIL -r Admin
Ersetzen Sie:
ENVIRONMENT_NAME
durch den Namen der Umgebung.LOCATION
durch die Region, in der sich die Umgebung befindet.USER_EMAIL
durch die E-Mail-Adresse eines Nutzerkontos.
Administratoren können jetzt die Zugriffssteuerung für neue Nutzer konfigurieren und beispielsweise die Rolle
Admin
anderen Nutzern zuweisen.
Airflow 1
Umgebungsadministratoren öffnen die Airflow-UI für die neu erstellte Umgebung, in der sie automatisch mit der Rolle
Admin
registriert werden.Überschreiben Sie folgende Airflow-Konfigurationsoption mit der erforderlichen Rolle neuer Nutzer. Beispiel:
User
.Bereich Schlüssel Wert webserver
rbac_user_registration_role
User
oder eine andere Rolle ohne AdministratorberechtigungenAdministratoren können jetzt die Zugriffssteuerung für die Airflow-Benutzeroberfläche für neue Nutzer konfigurieren und beispielsweise die Rolle
Admin
anderen Nutzern zuweisen.
Nutzer vorregistrieren
Nutzer werden automatisch mit numerischen IDs von Google-Nutzerkonten (nicht mit E-Mail-Adressen) als Nutzernamen registriert. Sie können einen Nutzer auch manuell vorab registrieren und ihm eine Rolle zuweisen. Dazu fügen Sie einen Nutzereintrag hinzu, 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, die mit einem vorregistrierten Nutzerdatensatz übereinstimmt, zum ersten Mal in der Airflow-UI anmeldet, 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.
Sie können Nutzer über die Airflow-UI vorregistrieren 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 vorab zu registrieren:
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.Op
USER_EMAIL
: die E-Mail-Adresse des NutzersFIRST_NAME
undLAST_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 Berechtigung composer.environments.get
aus der Zulassungsrichtlinie für Ihr Projekt.
Sie können die Rolle des Nutzers auch auf „Öffentlich“ ändern. Dadurch wird die Registrierung des Nutzers beibehalten, aber alle Berechtigungen für die Airflow-Benutzeroberfläche werden entfernt.
Berechtigungen auf DAG-Ebene automatisch konfigurieren
Mit der Funktion „Rollenregistrierung pro Ordner“ wird automatisch eine benutzerdefinierte Airflow-Rolle für jeden Unterordner direkt im Ordner /dags
erstellt. Außerdem wird dieser Rolle der Zugriff auf DAG-Ebene für alle DAGs gewährt, deren Quelldatei im jeweiligen Unterordner gespeichert ist. Dadurch wird die Verwaltung benutzerdefinierter Airflow-Rollen und ihres Zugriffs auf DAGs vereinfacht.
So funktioniert die Registrierung von Rollen pro Ordner
Die Registrierung von Rollen pro Ordner ist eine automatisierte Methode zum Konfigurieren von Rollen und ihren Berechtigungen auf DAG-Ebene. Daher kann es zu Konflikten mit anderen Airflow-Mechanismen kommen, die Berechtigungen auf DAG-Ebene gewähren:
- DAG-Berechtigungen Rollen manuell zuweisen
- DAGs Rollen über das Attribut
access_control
in einer DAG zuweisen
Um solche Konflikte zu vermeiden, wird durch die Aktivierung der Registrierung von Rollen pro Ordner auch das Verhalten dieser Mechanismen geändert.
In Airflow 1 ist die Verwendung dieser Mechanismen deaktiviert, wenn die Registrierung von Rollen pro Ordner aktiviert ist. Die Verwaltung aller Berechtigungen auf DAG-Ebene erfolgt nur über die Registrierung von Rollen pro Ordner.
In Airflow 2:
- Sie können Rollen über das Attribut
access_control
, das im DAG-Quellcode definiert ist, DAG-Zugriff gewähren. - 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 auf Ordnerebene manuell Berechtigungen auf DAG-Ebene gewähren, können diese Berechtigungen entfernt oder überschrieben werden, wenn der DAG-Prozessor eine DAG synchronisiert. Wir empfehlen, DAG-Berechtigungen nicht manuell zu erteilen.
- Rollen haben eine Vereinigung von DAG-Zugriffsberechtigungen, die über die Registrierung von Rollen pro Ordner registriert und in der
access_control
-Eigenschaft des DAG definiert sind.
DAGs, die sich direkt im /dags
-Ordner der obersten Ebene befinden, werden keiner Rolle pro Ordner zugewiesen. Sie sind mit keiner Rolle auf Ordnerbasis zugänglich. Andere Rollen wie „Admin“, „Op“, „User“ oder benutzerdefinierte Rollen mit Berechtigungen 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 Cloud Composer erstellten Rollen übereinstimmen, werden Berechtigungen für DAGs in diesen Unterordnern weiterhin diesen Rollen zugewiesen. Wenn Sie beispielsweise einen DAG in den Ordner /dags/Admin
hochladen, werden der Administratorrolle Berechtigungen für diesen DAG gewährt. Zu den integrierten Airflow-Rollen gehören „Admin“, „Op“, „User“, „Viewer“ und „Public“.
Cloud Composer erstellt NoDags und UserNoDags, nachdem die Funktion „Rollenregistrierung pro Ordner“ aktiviert wurde.
Airflow führt die Registrierung von Rollen pro Ordner durch, wenn DAGs im Airflow-Planer verarbeitet werden. Wenn in Ihrer Umgebung mehr als 100 DAGs vorhanden sind, kann es zu einer längeren DAG-Parsing-Zeit kommen.
In diesem Fall empfehlen wir, den Parameter [scheduler]max_threads
für eine Airflow 1-Umgebung oder [scheduler]parsing_processes
für Airflow 2 zu erhöhen.
DAGs automatisch Ordnerrollen zuweisen
So weisen Sie DAGs automatisch Rollen pro Ordner zu:
Überschreiben Sie die folgende Airflow-Konfigurationsoption:
Bereich Schlüssel Wert webserver
rbac_autoregister_per_folder_roles
True
Ä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 mit Berechtigungen für bestimmte DAGs zuweist.
UserNoDags und NoDags sind Rollen, die von Cloud Composer nur erstellt werden, wenn die Funktion „Rollenregistrierung pro Ordner“ aktiviert ist. Sie entsprechen der Rolle „Nutzer“, haben aber keinen Zugriff auf DAGs. Die Rolle „UserNoDags“ wird in Airflow 2 und die Rolle „NoDags“ in Airflow 1 erstellt.
In Airflow 2 überschreiben Sie die folgende Airflow-Konfigurationsoption:
Bereich Schlüssel Wert webserver
rbac_user_registration_role
UserNoDags
Überschreiben Sie in Airflow 1 die folgende Airflow-Konfigurationsoption:
Bereich Schlüssel Wert webserver
rbac_user_registration_role
NoDags
Achten 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. Die Rollennamen müssen mit dem Namen eines Unterordners übereinstimmen. Weisen Sie dann Nutzern diese Rollen zu. Erstellen Sie beispielsweise für den Ordner
/dags/CustomFolder
eine Rolle mit dem NamenCustomFolder
.
Laden Sie DAGs in Unterordner mit Namen hoch, die den Nutzern zugewiesenen Rollen entsprechen. Diese Unterordner müssen sich im Ordner
/dags
im 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 für die Gruppierung von DAGs.
- Der Administrator weist Nutzern die entsprechenden Rollen zu.
- Der Administrator oder die Nutzer weisen Rollen DAGs zu.
- In der Airflow-Benutzeroberfläche können Nutzer nur DAGs sehen, die ihrer Gruppe zugewiesen sind.
DAGs können Rollen entweder über DAG-Attribute oder über die Airflow-Benutzeroberfläche zugewiesen werden.
DAGs Rollen in der Airflow-UI zuweisen
Ein Administrator kann den entsprechenden Rollen auch die erforderlichen Berechtigungen auf DAG-Ebene in der Airflow-UI zuweisen.
Dieser Vorgang wird in der DAG-Benutzeroberfläche nicht unterstützt.
DAGs Rollen in DAG-Attributen zuweisen
Sie können den DAG-Parameter access_control
für einen DAG festlegen und die DAG-Gruppierungsrollen angeben, denen der DAG zugewiesen wird.
Airflow 2
dag = DAG(
access_control={
'DagGroup': {'can_edit', 'can_read'},
},
...
)
Airflow 1
dag = DAG(
access_control={
'DagGroup': {'can_dag_edit', 'can_dag_read'},
},
...
)
Audit-Logs in der Airflow-UI Nutzern zuordnen
Audit-Logs in der Airflow-Benutzeroberfläche werden numerischen IDs von Google-Nutzerkonten zugeordnet. Wenn ein Nutzer beispielsweise einen DAG pausiert, wird den Logs ein Eintrag hinzugefügt.
Airflow 2
In Airflow 2 können Sie Audit-Logs in der Airflow-UI auf der Seite Browse > Audit Logs (Durchsuchen > Audit-Logs) ansehen.

Airflow 1
In Airflow 1 können Sie Audit-Logs auf der Seite Browse > Logs aufrufen.

In einem typischen Eintrag wird im Feld Inhaber eine numerische ID aufgeführt:
accounts.google.com:NUMERIC_ID
. Sie können numerische IDs auf der Seite Sicherheit > Nutzer auflisten Nutzer-E-Mail-Adressen zuordnen. Diese Seite ist für Nutzer mit der Rolle Admin
verfügbar.
Die Beziehung zwischen Google-Identitäten (E-Mail-Adressen) und Nutzerkonten (Nutzer-IDs) ist nicht festgelegt.