Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Auf dieser Seite werden verschiedene Mechanismen der Zugriffssteuerung für die Airflow-Benutzeroberfläche und die DAG-Benutzeroberfläche beschrieben. Sie können diese Mechanismen zusätzlich zur Zugriffssteuerung von IAM bereitgestellt, um Nutzer im Airflow-UI und DAG-UI Ihrer Umgebung
Airflow-UI-Zugriffssteuerung in Cloud Composer
Zugriff auf Airflow UI und DAG UI und wird die Sichtbarkeit von Daten und Vorgängen in diesen Benutzeroberflächen auf zwei Ebenen in Cloud Composer:
Der Zugriff auf die Airflow-UI und die DAG-UI in Cloud Composer ist von IAM kontrolliert.
Wenn ein Konto keine Rolle hat, mit der es Cloud Composer-Umgebungen in Ihrem Projekt ansehen kann, sind die Airflow- und DAG-Benutzeroberflächen 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 reduzieren.
Die Zugriffssteuerung von Apache Airflow ist eine Funktion von Airflow mit einem eigenen Modell für Nutzer, Rollen und Berechtigungen, das sich von IAM unterscheidet.
Die Zugriffssteuerung von Apache Airflow verwendet ressourcenbasierte Berechtigungen. Alle Airflow-Nutzer mit einer bestimmten Airflow-Rolle erhalten die Berechtigungen dieser Rolle. Beispiel:
Airflow-Nutzer, die eine Rolle mit der Berechtigung can delete on Connections
haben
können Sie in der Airflow-UI auf der Seite „Verbindungen“ Verbindungen löschen.
Sie können auch Berechtigungen auf DAG-Ebene für einzelne DAGs. Für Damit nur Nutzer mit einer bestimmten Airflow-Rolle einen bestimmten DAG sehen können, auf der Airflow-UI. In Cloud Composer können Sie automatisch Berechtigungen auf DAG-Ebene zuweisen, basierend auf dem Unterordner, in dem sich die DAG-Datei im Bucket.
Hinweise
Die Airflow-UI mit Zugriffssteuerung ist verfügbar für Cloud Composer-Versionen 1.13.4 oder höher und Airflow 1.10.10 und höher. Für die Umgebung muss auch Python 3 ausgeführt werden.
Die Registrierung von Rollen pro Ordner ist in Airflow 2 ab Cloud Composer 1.18.12 und in Airflow 1 ab Cloud Composer 1.13.4 verfügbar.
Zugriffssteuerung für die Airflow-Benutzeroberfläche aktivieren
Airflow 2
Die Airflow-UI mit Zugriffssteuerung ist in Airflow 2 immer aktiviert.
Airflow 1
Wenn Sie die Airflow-Benutzeroberfläche mit Zugriffssteuerung aktivieren möchten, überschreiben Sie die folgende Airflow-Konfigurationsoption:
Bereich | Schlüssel | Wert |
---|---|---|
webserver |
rbac |
True |
Sie können dies für eine vorhandene Umgebung oder beim Erstellen einer neuen Umgebung tun.
Mit dieser Konfiguration führt Ihre Umgebung die Airflow-UI mit Zugriff aus statt der klassischen Airflow-UI.
Airflow-Rollen und Zugriffssteuerungseinstellungen verwalten
Nutzer mit der Rolle „Administrator“ (oder einer entsprechenden Rolle) können die Zugriffssteuerung ansehen und ändern Einstellungen auf der Airflow-Benutzeroberfläche.
In der Airflow-Benutzeroberfläche können Sie die Einstellungen für die Zugriffssteuerung über das Menü Sicherheit konfigurieren. Weitere Informationen zur Airflow-Zugriffssteuerung Modell, verfügbaren Berechtigungen und 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 der Rolle "Nutzer" kontinuierlich in alle benutzerdefinierten Rollen, mit Ausnahme von
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 und sich in Airflow registriert haben. Diese Liste enthält auch Nutzer, die von einem Administrator manuell vorab registriert wurden, wie im folgenden Abschnitt beschrieben.
Nutzer in der Airflow-UI registrieren
Neue Nutzer werden automatisch registriert, wenn sie die Airflow-Benutzeroberfläche einer Cloud Composer-Umgebung zum ersten Mal öffnen.
Bei der Registrierung wird Nutzern die in der
[webserver]rbac_user_registration_role
Airflow-Konfigurationsoption. Sie können die Rolle neu registrierter Nutzer steuern, indem Sie diese Airflow-Konfigurationsoption mit einem anderen Wert überschreiben.
Wenn nicht angegeben, lautet die Standardregistrierungsrolle Op
in Umgebungen mit
Airflow 2.
In Umgebungen mit Airflow 1.10.* ist die Standardregistrierungsrolle Admin
.
Zum Erstellen einer einfachen Rollenkonfiguration für die Airflow-Benutzeroberfläche 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
. Zum Zuweisen die RolleAdmin
haben, führen Sie Folgendes aus: Befehl der Airflow-Befehlszeile mit gcloud CLI: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-Benutzeroberfläche 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 AdministratorberechtigungenAdmins können jetzt die Airflow-UI-Zugriffssteuerung für neue Nutzer konfigurieren, einschließlich Anderen Nutzern die Rolle
Admin
zuweisen
Nutzer vorab registrieren
Nutzer werden automatisch bei registriert. numerische IDs von Google-Nutzerkonten (nicht E-Mail-Adressen) als Nutzernamen. Sie können Nutzer auch manuell vorregistrieren, und weisen Sie ihnen eine Rolle zu, indem Sie einen Nutzerdatensatz mit dem festgelegten Feld „username“ (Nutzername) hinzufügen an die primäre E-Mail-Adresse des Nutzers senden. Wenn sich ein Nutzer mit einer E-Mail-Adresse 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 behoben. Google-Gruppen können nicht vorab registriert werden.
Wenn Sie Nutzer vorregistrieren möchten, können Sie die Airflow-UI verwenden oder einen Airflow-Kommandozeilenbefehl ausführen über die Google Cloud CLI.
So registrieren Sie einen Nutzer mit einer benutzerdefinierten Rolle über die Google Cloud CLI: Führen Sie den folgenden Airflow-Kommandozeilenbefehl aus:
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
: 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-Benutzeroberfläche 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 bleibt die Registrierung des Nutzers erhalten, aber alle Berechtigungen für die Airflow-Benutzeroberfläche werden entfernt.
Berechtigungen auf DAG-Ebene automatisch konfigurieren
Mit der Funktion zur Registrierung von Rollen pro Ordner wird automatisch eine benutzerdefinierte Airflow-Rolle für jeden Unterordner direkt im Ordner /dags
erstellt. Diese Rolle erhält Zugriff auf DAG-Ebene für alle DAGs, deren Quelldatei in diesem jeweiligen Unterordner gespeichert ist. Dadurch wird die Verwaltung benutzerdefinierter Airflow-Rollen und deren Zugriff auf DAGs optimiert.
So funktioniert die Registrierung von Rollen pro Ordner
Die Registrierung von Rollen pro Ordner ist eine automatische Möglichkeit, und ihre Berechtigungen auf DAG-Ebene. Daher können Konflikte mit weitere Airflow-Mechanismen, die Berechtigungen auf DAG-Ebene gewähren:
- DAG-Berechtigungen manuell zuweisen
- DAGs über das Attribut
access_control
in einem DAG Rollen 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 gesamte Berechtigungsverwaltung auf DAG-Ebene erfolgt nur über die Registrierung von Rollen pro Ordner.
In Airflow 2:
- Sie können Rollen über die im DAG-Quellcode definierte Eigenschaft
access_control
DAG-Zugriff gewähren. - Das manuelle Gewähren von DAG-Berechtigungen (über die Airflow-Benutzeroberfläche oder die gcloud CLI) kann zu Konflikten führen. Wenn Sie beispielsweise einer Ordnerrolle 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 Vereinigung von DAG-Zugriffsberechtigungen, die über die Registrierung von Rollen pro Ordner registriert und in der
access_control
-Eigenschaft der DAG definiert sind.
DAGs, die sich direkt im obersten Ordner /dags
befinden, werden nicht automatisch zugewiesen:
jede Rolle pro Ordner. Auf sie kann nicht mit einer Rolle pro Ordner zugegriffen werden. Andere Rollen wie „Administrator“, „Bearbeiter“, „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 vordefinierten Airflow-Rollen und von Cloud Composer erstellten Rollen übereinstimmen, werden diesen Rollen weiterhin Berechtigungen für DAGs in diesen Unterordnern zugewiesen. Wenn Sie zum Beispiel
Der DAG für den Ordner /dags/Admin
gewährt dem Administrator Berechtigungen für diesen DAG
Rolle. Zu den integrierten Airflow-Rollen gehören „Administrator“, „Bearbeiter“, „Nutzer“, „Betrachter“ und „Öffentlich“.
Cloud Composer erstellt NoDags und UserNoDags nach dem Ordnertyp
Die Funktion zur Rollenregistrierung ist aktiviert.
Airflow registriert Rollen pro Ordner bei der Verarbeitung von DAGs
im Airflow-Planer. Wenn sich in Ihrer Umgebung mehr als hundert DAGs befinden, kann sich die Zeit für das DAG-Parsing verlängern.
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 erst dann Zugriff auf DAGs, wenn ein Administrator weist ihren Konten eine Rolle zu, die Berechtigungen für bestimmte DAGs hat.
UserNoDags und NoDags sind nur von Cloud Composer erstellte Rollen wenn die Funktion zur Rollenregistrierung pro Ordner aktiviert ist. Sie sind ein mit der Nutzerrolle gleich, aber ohne Zugriff auf DAGs. UserNoDags Rolle wird in Airflow 2 erstellt und NoDags-Rolle wird in Airflow 1 erstellt.
Überschreiben Sie in Airflow 2 die folgende Airflow-Konfigurationsoption:
Bereich Schlüssel Wert webserver
rbac_user_registration_role
UserNoDags
In Airflow 1 die folgende Airflow-Konfiguration überschreiben Option:
Bereich Schlüssel Wert webserver
rbac_user_registration_role
NoDags
Die Nutzer müssen in Airflow registriert sein.
Sie können Nutzern Rollen auf folgende Arten zuweisen:
- Lassen Sie Airflow automatisch Rollen basierend auf den DAGs-Unterordnern erstellen, und weise Nutzer diesen Rollen zu.
- Leere Rollen für die DAGs-Unterordner vorab erstellen, wobei die Rollennamen übereinstimmen
den Namen eines Unterordners ein und weisen Sie Nutzern diese Rollen zu. Erstellen Sie beispielsweise für den Ordner
/dags/CustomFolder
eine Rolle mit dem NamenCustomFolder
.
Laden Sie DAGs in Unterordner, deren Namen den Nutzern entsprechen. Diese Unterordner müssen sich im Ordner
/dags
im Bucket der Umgebung befinden. Airflow fügt Berechtigungen zu DAGs in einer solchen Unterordner, sodass nur Nutzer mit der entsprechenden Rolle darauf zugreifen können über die Airflow-UI und die DAG-UI.
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-Benutzeroberfläche:
- Der Administrator erstellt leere Rollen zum Gruppieren von DAGs.
- Der Administrator weist Nutzern die entsprechenden Rollen zu.
- Der Administrator oder die Nutzer weisen den 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
DAGs Rollen in der Airflow-UI zuweisen
Ein Administrator kann die erforderlichen Berechtigungen auf DAG-Ebene Rolle(n) in der Airflow-UI.
Dieser Vorgang wird in der DAG-UI nicht unterstützt.
DAGs Rollen in DAG-Attributen zuweisen
Sie können den DAG-Parameter access_control
auf einem DAG festlegen und die DAG-Gruppierungsrollen angeben, denen der DAG zugewiesen ist.
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-Benutzeroberfläche Nutzern zuordnen
Audit-Logs in der Airflow-UI sind numerische IDs von Google-Nutzerkonten Für Wenn ein Nutzer beispielsweise einen DAG pausiert, wird den Logs ein Eintrag hinzugefügt.
Airflow 2
In Airflow 2 können Sie Audit-Logs über die Schaltfläche Durchsuchen > ansehen. Seite Audit-Logs in der Airflow-UI
Airflow 1
In Airflow 1 finden Sie Audit-Logs auf der Seite Durchsuchen > Protokolle.
Ein typischer Eintrag enthält eine numerische ID im Feld Inhaber:
accounts.google.com:NUMERIC_ID
Sie können numerische IDs auf der Seite Sicherheit > Nutzer auflisten E-Mail-Adressen von Nutzern 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.