Airflow-UI-Zugriffssteuerung verwenden

Cloud Composer 1 Cloud Composer 2

Auf dieser Seite werden verschiedene Mechanismen der Zugriffssteuerung für die Airflow-UI und die DAG-UI beschrieben. Sie können diese Mechanismen zusätzlich zur Zugriffssteuerung durch IAM verwenden, um Nutzer in der Airflow-UI und der DAG-UI Ihrer Umgebung zu trennen.

Übersicht über die Zugriffssteuerung für die Airflow-UI in Cloud Composer

Der Zugriff auf die Airflow-UI und die DAG-UI sowie die Sichtbarkeit von Daten und Vorgängen in diesen UIs wird in Cloud Composer auf zwei Ebenen gesteuert:

  1. Der Zugriff auf die Airflow-UI und die DAG-UI in Cloud Composer wird von IAM gesteuert.

    Wenn ein Konto keine Rolle hat, mit der sich in Ihrem Projekt Cloud Composer-Umgebungen ansehen können, sind die Airflow-UI und die DAG-UI nicht verfügbar.

    IAM bietet keine zusätzliche detaillierte Berechtigungssteuerung in der Airflow- oder DAG-UI.

  2. Das Apache Airflow-Zugriffssteuerungsmodell ermöglicht es, je nach Nutzerrolle die Sichtbarkeit in der Airflow-UI und der DAG-UI zu reduzieren.

    Die Apache Airflow-Zugriffssteuerung ist ein Feature von Airflow mit einem eigenen Modell von Nutzern, Rollen und Berechtigungen, das sich von IAM unterscheidet.

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 „Verbindungen“ 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 Cloud Composer können Sie Berechtigungen auf DAG-Ebene automatisch zuweisen, basierend 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 und höher sowie für Airflow 1.10.10 und höher verfügbar. In der Umgebung muss außerdem Python 3 ausgeführt werden.

Airflow-UI mit Zugriffssteuerung aktivieren

Airflow 2

Die Airflow-UI mit Zugriffssteuerung ist in Airflow 2 immer aktiviert.

Airflow 1

Um die Airflow-UI mit Zugriffssteuerung zu aktivieren, ü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 Zugriffssteuerung anstelle der klassischen Airflow-UI aus.

Airflow-Rollen und Einstellungen für die Zugriffssteuerung verwalten

Nutzer mit der Rolle „Administrator“ (oder einer entsprechenden Rolle) 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ü Sicherheit konfigurieren. Weitere Informationen zum Airflow-Zugriffssteuerungsmodell, den verfügbaren Berechtigungen und den Standardrollen finden Sie in der Dokumentation zur Zugriffssteuerung für die Airflow-UI.

Airflow 1 behandelt die Rolle „Nutzer“ als Vorlage für alle benutzerdefinierten Rollen. Airflow kopiert Berechtigungen der Nutzerrolle kontinuierlich in alle benutzerdefinierten Rollen, mit Ausnahme der Berechtigungen für all_dags.

Airflow führt eine eigene Liste von Nutzern. Nutzer mit der Rolle „Administrator“ (oder einer entsprechenden Rolle) können die Liste der Nutzer aufrufen, die die Airflow-UI einer Umgebung geöffnet haben und in Airflow registriert wurden. 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 zum ersten Mal die Airflow-UI einer Cloud Composer-Umgebung öffnen.

Bei der Registrierung wird Nutzern die in der Airflow-Konfigurationsoption [webserver]rbac_user_registration_role angegebene Rolle gewährt. Sie können die Rolle neu registrierter Nutzer steuern, indem Sie diese Airflow-Konfigurationsoption mit einem anderen Wert überschreiben.

Wenn keine Angabe erfolgt, lautet die Standardregistrierungsrolle in Umgebungen mit Airflow 2 Op.

In Umgebungen mit Airflow 1.10.* ist die Standardregistrierungsrolle Admin.

Die folgenden Schritte werden empfohlen, um eine einfache Rollenkonfiguration für die Airflow-UI zu erstellen:

Airflow 2

  1. Umgebungsadministratoren öffnen die Airflow-UI für die neu erstellte Umgebung.

  2. Gewähren Sie den Administratorkonten die Rolle Admin. Die Standardrolle für neue Konten in Umgebungen mit Airflow 2 ist Op. Führen Sie den folgenden Airflow-CLI-Befehl mit gcloud aus, um die Rolle Admin zuzuweisen:

      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.
  3. Administratoren können jetzt die Zugriffssteuerung für neue Nutzer konfigurieren und beispielsweise die Rolle Admin anderen Nutzern zuweisen.

Airflow 1

  1. Umgebungsadministratoren öffnen die Airflow-UI für die neu erstellte Umgebung, wo sie automatisch mit der Rolle Admin registriert werden.

  2. Überschreiben Sie folgende Airflow-Konfigurationsoption mit der erforderlichen Rolle neuer Nutzer. Beispiel: User.

    Bereich Schlüssel Wert
    webserver rbac_user_registration_role User oder andere Rolle ohne Administrator
  3. Administratoren können jetzt die Zugriffssteuerung für die Airflow-UI für neue Nutzer konfigurieren und anderen Nutzern die Rolle Admin zuweisen.

Nutzer vorregistrieren

Nutzer werden automatisch mit den numerischen IDs der Google-Nutzerkonten (nicht mit E-Mail-Adressen) als Nutzernamen registriert. Sie können einen Nutzer auch manuell vorregistrieren und ihm eine Rolle zuweisen, indem Sie einen Nutzerdatensatz hinzufügen, bei dem das Feld für den Nutzernamen auf die primäre E-Mail-Adresse des Nutzers gesetzt 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.

Zum Vorregistrieren von Nutzern können Sie die Airflow-UI verwenden oder einen Airflow CLI-Befehl über die Google Cloud CLI ausführen.

Führen Sie den folgenden Befehl in der Airflow-Befehlszeile aus, um einen Nutzer über die Google Cloud CLI mit einer benutzerdefinierten Rolle 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 Umgebung
  • LOCATION: die Region, in der sich die Umgebung befindet
  • ROLE: eine Airflow-Rolle für den Nutzer, z. B. Op
  • USER_EMAIL: E-Mail-Adresse des Nutzers
  • FIRST_NAME und LAST_NAME: Vorname 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

Durch das Löschen eines Nutzers aus Airflow 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 in „Öffentlich“ ändern. Dadurch wird die Registrierung des Nutzers beibehalten, aber alle Berechtigungen für die Airflow-UI entfernt.

Berechtigungen auf DAG-Ebene automatisch konfigurieren

Das Feature für die Rollenregistrierung pro Ordner erstellt automatisch eine benutzerdefinierte Airflow-Rolle für jeden Unterordner direkt im Ordner /dags und gewährt dieser Rolle Zugriff auf DAG-Ebene auf alle DAGs, deren Quelldatei im jeweiligen Unterordner gespeichert ist. Dies optimiert die Verwaltung benutzerdefinierter Airflow-Rollen und deren Zugriff auf DAGs.

So funktioniert die Registrierung von Rollen pro Ordner

Die Rollenregistrierung 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 führen, die Berechtigungen auf DAG-Ebene gewähren:

Durch Aktivieren der Registrierung von Rollen pro Ordner, um solche Konflikte zu vermeiden, ändert sich auch das Verhalten dieser Mechanismen.

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 DAG-Zugriff auf Rollen über das Attribut access_control gewähren, das im DAG-Quellcode definiert ist.
  • Das manuelle Erteilen von DAG-Berechtigungen (über die Airflow-UI oder die gcloud CLI) kann zu Konflikten führen. Wenn Sie einer Rolle pro Ordner beispielsweise 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 alle DAG-Zugriffsberechtigungen, die über die Registrierung der Rollen pro Ordner registriert und im Attribut access_control des DAG definiert sind.

DAGs, die sich direkt im Ordner /dags der obersten Ebene befinden, werden keiner Rolle pro Ordner automatisch zugewiesen. Der Zugriff auf sie ist mit keiner Ordnerrolle möglich. Andere Rollen wie „Administrator“, „Vorgang“, „Nutzer“ oder andere benutzerdefinierte Rollen mit Berechtigungen können über die Airflow-UI und die DAG-UI darauf zugreifen.

Wenn Sie DAGs in Unterordnern hochladen, deren Namen den von Cloud Composer erstellten, integrierten Airflow-Rollen und -Rollen entsprechen, werden diesen Rollen weiterhin Berechtigungen für DAGs in diesen Unterordnern zugewiesen. Wenn Sie beispielsweise einen DAG in den Ordner /dags/Admin hochladen, werden für diesen DAG Berechtigungen für die Administratorrolle gewährt. Zu den integrierten Airflow-Rollen gehören Admin, Op, User, Viewer und Public. Cloud Composer erstellt NoDags und UserNoDags, nachdem die Funktion zum Registrieren von Rollen pro Ordner aktiviert wurde.

Airflow führt eine Rollenregistrierung pro Ordner durch, wenn DAGs im Airflow-Planer verarbeitet werden. Wenn in Ihrer Umgebung mehr als 100 DAGs vorhanden sind, steigt möglicherweise die Zeit für die DAG-Analyse. 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 pro Ordner automatisch Rollen zuweisen

So weisen Sie DAGs pro Ordner Rollen automatisch zu:

  1. Überschreiben Sie die folgende Airflow-Konfigurationsoption:

    Bereich Schlüssel Wert
    webserver rbac_autoregister_per_folder_roles True
  2. Ändern Sie die neue Nutzerregistrierungsrolle in eine Rolle ohne Zugriff auf DAGs. So haben neue Nutzer erst dann Zugriff auf DAGs, wenn ein Administrator ihren Konten eine Rolle mit Berechtigungen für bestimmte DAGs zuweist.

    UserNoDags und NoDags sind Rollen, die von Cloud Composer nur dann erstellt werden, wenn die Funktion zum Registrieren von Rollen pro Ordner aktiviert ist. Sie entsprechen der Rolle "Nutzer", haben jedoch keinen Zugriff auf DAGs. Die Rolle „UserNoDags“ wird in Airflow 2 und die Rolle „NoDags“ in Airflow 1 erstellt.

    Überschreiben Sie in Airflow 2 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
  3. Achten Sie darauf, dass die Nutzer in Airflow registriert sind.

  4. Weisen Sie Nutzern Rollen mit einer der folgenden Methoden zu:

    • Lassen Sie Airflow anhand der DAGs-Unterordner automatisch Rollen erstellen und weisen Sie diesen Rollen dann Nutzer zu.
    • Erstellen Sie vorab leere Rollen für die DAGs-Unterordner, deren Rollennamen dem Namen eines Unterordners entsprechen, und weisen Sie diesen Rollen dann Nutzer zu. Erstellen Sie beispielsweise für den Ordner /dags/CustomFolder eine Rolle mit dem Namen CustomFolder.
  5. 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 für benutzerdefinierte Rollen Berechtigungen auf DAG-Ebene konfigurieren, um festzulegen, welche DAGs für bestimmte Nutzergruppen sichtbar sind.

So konfigurieren Sie Berechtigungen auf DAG-Ebene in der Airflow-UI:

  1. Der Administrator erstellt leere Rollen zum Gruppieren von DAGs.
  2. Der Administrator weist den Nutzern die entsprechenden Rollen zu.
  3. Der Administrator oder die Nutzer weisen DAGs den Rollen zu.
  4. In der Airflow-UI können Nutzer nur DAGs anzeigen, die ihrer Gruppe zugewiesen sind.

DAGs können Rollen entweder über DAG-Attribute oder über die Airflow-UI zugewiesen werden.

DAGs den Rollen in der Airflow-UI zuweisen

Ein Administrator kann den entsprechenden Rollen in der Airflow-UI die erforderlichen Berechtigungen auf DAG-Ebene zuweisen.

Dieser Vorgang wird in der DAG-UI 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-Gruppierungsrolle(n) angeben, der der DAG zugewiesen ist.

In Airflow 2-Versionen vor 2.1.0 muss der Administrator, der DAG-Entwickler oder ein automatisierter Prozess den Airflow-Befehl sync-perm ausführen, um die neuen Einstellungen für die Zugriffssteuerung anzuwenden.

In Airflow 2.1.0 und höher ist das Ausführen dieses Befehls nicht mehr erforderlich, da der Planer beim Parsen eines DAG Berechtigungen auf DAG-Ebene anwendet.

Airflow 2

dag = DAG(
  access_control={
    'DagGroup': {'can_edit', 'can_read'},
  },
  ...
  )

Airflow 1

dag = DAG(
  access_control={
    'DagGroup': {'can_dag_edit', 'can_dag_read'},
  },
  ...
  )

Nutzern Audit-Logs in der Airflow-UI zuordnen

Audit-Logs in der Airflow-UI sind den 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 Durchsuchen > Audit-Logs ansehen.

Ein Eintrag auf der Seite „Audit-Logs“ in Airflow 2
Abbildung 1. Ein Eintrag auf der Seite „Audit-Logs“ in Airflow 2

Airflow 1

In Airflow 1 können Sie Audit-Logs auf der Seite Durchsuchen > Logs ansehen.

Ein Eintrag auf der Seite „Logs“ in Airflow 1
Abbildung 1. Ein Eintrag auf der Seite „Logs“ in Airflow 1

Ein typischer Eintrag enthält eine numerische ID im Feld Owner: accounts.google.com:NUMERIC_ID. Auf der Seite Sicherheit > Nutzer auflisten können Sie den E-Mail-Adressen von Nutzern numerische IDs 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.

Nächste Schritte