Airflow-UI-Zugriffssteuerung verwenden

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Auf dieser Seite werden verschiedene Mechanismen der Zugriffssteuerung für die Airflow-UI und die DAG-UI beschrieben. Neben der von IAM bereitgestellten Zugriffssteuerung 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:

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

    Wenn ein Konto keine Rolle zum Ansehen von Cloud Composer-Umgebungen in Ihrem Projekt hat, 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.

  2. Mit dem Apache Airflow-Zugriffssteuerungsmodell kann die Sichtbarkeit in der Airflow-UI und der DAG-UI je nach Nutzerrolle reduziert werden.

    Die Apache Airflow-Zugriffssteuerung ist ein Feature von Airflow mit einem eigenen Modell für Nutzer, 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, die eine Rolle mit der Berechtigung can delete on Connections haben, können beispielsweise Verbindungen auf der Seite „Verbindungen“ in der Airflow-UI löschen.

Sie können auch einzelnen DAGs Berechtigungen auf DAG-Ebene zuweisen. Damit beispielsweise nur Nutzer mit einer bestimmten Airflow-Rolle einen bestimmten DAG in der Airflow-UI sehen können. In Cloud Composer können Sie anhand des Unterordners, in dem sich die DAG-Datei im Bucket der Umgebung befindet, automatisch Berechtigungen auf DAG-Ebene zuweisen.

Wenn Sie den Zugriff für externe Identitäten über die Mitarbeiteridentitätsföderation einrichten möchten, gewähren Sie zuerst Zugriff auf Ihre Umgebung in IAM, wie im Abschnitt Externen Identitäten IAM-Rollen zuweisen beschrieben. Anschließend können Sie wie gewohnt die Zugriffssteuerung auf der Airflow-UI verwenden. Airflow-Nutzer für externe Identitäten verwenden ihre Hauptkennung anstelle der E-Mail-Adresse und haben andere Werte in andere Nutzerdatenfelder als Google-Konten.

Hinweise

Airflow-Rollen und Zugriffssteuerungseinstellungen verwalten

Nutzer mit der Administratorrolle (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 Zugriffssteuerung über das Menü Sicherheit konfigurieren. Weitere Informationen zum Airflow-Zugriffssteuerungsmodell, den verfügbaren Berechtigungen und Standardrollen finden Sie in der Dokumentation zur Airflow-UI-Zugriffssteuerung.

Airflow verwaltet eine eigene Liste von Nutzern. Nutzer mit der Administratorrolle (oder einer entsprechenden Rolle) können die Liste der Nutzer ansehen, die die Airflow-UI einer Umgebung geöffnet und in Airflow registriert wurden. Diese Liste enthält auch Nutzer, die von einem Administrator manuell vorregistriert wurden, wie im folgenden Abschnitt beschrieben.

Nutzer in der Airflow-UI registrieren

Neue Nutzer werden automatisch registriert, wenn sie die Airflow-UI einer Cloud Composer-Umgebung zum ersten Mal ö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 nicht angegeben, lautet die Standardregistrierungsrolle in Umgebungen mit Airflow 2 Op.

Die folgenden Schritte werden zum Erstellen einer grundlegenden Rollenkonfiguration für die Airflow-UI empfohlen:

  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 zum Zuweisen der Rolle Admin den folgenden Airflow-Kommandozeilenbefehl mit gcloud 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.
  3. Administratoren können jetzt die Zugriffssteuerung 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 vorregistrieren und ihm eine Rolle zuweisen. Dazu fügen Sie einen Nutzerdatensatz hinzu, 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 aktuell (zum Zeitpunkt der ersten Anmeldung) anhand seiner 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 Befehl der Airflow-Befehlszeile über die Google Cloud CLI ausführen.

Führen Sie den folgenden Airflow-Befehl 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 Umgebung
  • LOCATION: 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

Wenn Sie einen Nutzer aus Airflow löschen, wird ihm nicht der Zugriff entzogen, 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 bleibt die Registrierung des Nutzers erhalten, aber alle Berechtigungen für die Airflow-UI werden entfernt.

Berechtigungen auf DAG-Ebene automatisch konfigurieren

Die Funktion zur Rollenregistrierung pro Ordner erstellt automatisch eine benutzerdefinierte Airflow-Rolle für jeden Unterordner direkt im Ordner /dags und gewährt dieser Rolle auf DAG-Ebene Zugriff auf alle DAGs, deren Quelldatei in diesem Unterordner gespeichert ist. Dies vereinfacht die Verwaltung von benutzerdefinierten Airflow-Rollen und deren Zugriff auf DAGs.

So funktioniert die Registrierung von Rollen pro Ordner

Mit der Rollenregistrierung pro Ordner können Rollen und ihre Berechtigungen auf DAG-Ebene automatisch konfiguriert werden. Daher kann dies zu Konflikten mit anderen Airflow-Mechanismen führen, die Berechtigungen auf DAG-Ebene gewähren:

Um solche Konflikte zu vermeiden, wird durch das Aktivieren der Rollenregistrierung pro Ordner auch das Verhalten dieser Mechanismen geändert.

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 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 einen DAG synchronisiert. Wir raten davon ab, DAG-Berechtigungen manuell zu gewähren.
  • Rollen haben eine Union der DAG-Zugriffsberechtigungen, die über die Rollenregistrierung pro Ordner registriert und im Attribut access_control des DAG definiert sind.

DAGs, die sich direkt im obersten Ordner /dags befinden, werden keiner Rolle pro Ordner automatisch zugewiesen. Auf sie kann nicht mit einer Rolle pro Ordner zugegriffen werden. Andere Rollen wie „Administrator“, „Op“, „Nutzer“ oder eine benutzerdefinierte Rolle mit Berechtigungen können über die Airflow-UI und die DAG-UI darauf zugreifen.

Wenn Sie DAGs in Unterordnern hochladen, deren Namen den integrierten Airflow-Rollen und -Rollen entsprechen, die von Cloud Composer erstellt wurden, sind die Berechtigungen für DAGs in diesen Unterordnern weiterhin diesen Rollen zugewiesen. Wenn Sie beispielsweise einen DAG in den Ordner /dags/Admin hochladen, werden diesem 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 das Feature zur Rollenregistrierung pro Ordner aktiviert wurde.

Airflow registriert Rollen pro Ordner, wenn DAGs im Airflow-Planer verarbeitet werden. Wenn es in Ihrer Umgebung mehr als 100 DAGs gibt, erhöht sich möglicherweise die DAG-Parsing-Zeit. 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 pro Ordner 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 Rolle zur Nutzerregistrierung 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 wird von Cloud Composer nur dann erstellt, wenn das Feature zur Rollenregistrierung pro Ordner aktiviert ist. Sie entspricht der Rolle „User“, hat aber keinen Zugriff auf DAGs.

    Überschreiben Sie die folgende Airflow-Konfigurationsoption:

    Bereich Schlüssel Wert
    webserver rbac_user_registration_role UserNoDags

  3. Die Nutzer müssen in Airflow registriert sein.

  4. Weisen Sie Nutzern Rollen auf eine der folgenden Arten zu:

    • Lassen Sie Airflow basierend auf den DAGs-Unterordnern automatisch Rollen erstellen und diesen Rollen dann Nutzer zuweisen.
    • Erstellen Sie vorab leere Rollen für die DAGs-Unterordner, wobei die Rollennamen mit dem Namen eines Unterordners übereinstimmen, 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, 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 einem solchen Unterordner 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:

  1. Der Administrator erstellt leere Rollen zum Gruppieren von DAGs.
  2. Der Administrator weist 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 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 die erforderlichen Berechtigungen auf DAG-Ebene den entsprechenden Rollen 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 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 Zugriffssteuerungseinstellungen anzuwenden.

In Airflow 2.1.0 und neueren Versionen ist dieser Befehl nicht mehr erforderlich, da der Planer beim Parsen eines DAG Berechtigungen auf DAG-Ebene anwendet.

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 Durchsuchen > Audit-Logs ansehen.

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

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

Nächste Schritte