Zugriffssteuerung für die Airflow-Benutzeroberfläche verwenden

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

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 verwenden, um Nutzer in der Airflow-UI und der DAG-UI Ihrer Umgebung zu trennen.

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 wird 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 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.

  2. 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. Airflow-Nutzer mit einer Rolle mit der Berechtigung can delete on Connections können beispielsweise Verbindungen auf der Seite „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, je nachdem, in welchem Unterordner sich die DAG-Datei im Bucket der Umgebung befindet.

Wenn Sie den Zugriff für externe Identitäten über die Workforce Identity-Föderation einrichten möchten, müssen Sie zuerst in IAM Zugriff auf Ihre Umgebung gewähren, wie im Abschnitt IAM-Rollen für externe Identitäten gewähren beschrieben. Danach können Sie die Zugriffssteuerung der Airflow-Benutzeroberfläche wie gewohnt verwenden. Airflow-Nutzer für externe Identitäten verwenden ihre Haupt-ID anstelle der E-Mail-Adresse und andere Werte werden in anderen Feldern von Nutzereinträgen als bei Google-Konten eingefügt.

Hinweis

Airflow-Rollen und Zugriffssteuerungseinstellungen verwalten

Nutzer mit der Rolle „Administrator“ (oder einer gleichwertigen Rolle) können die Einstellungen für die Zugriffssteuerung in der Airflow-Benutzeroberfläche aufrufen und ändern.

In der Airflow-Benutzeroberfläche können Sie die Einstellungen für die Zugriffssteuerung über das Menü Sicherheit konfigurieren. Weitere Informationen zum Airflow-Zugriffssteuerungsmodell, zu den verfügbaren Berechtigungen und zu den Standardrollen finden Sie in der Dokumentation zur Airflow-UI-Zugriffssteuerung.

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-Benutzeroberfläche registrieren

Neue Nutzer werden automatisch registriert, wenn sie die Airflow-Benutzeroberfläche 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.

Zum Erstellen einer einfachen Rollenkonfiguration für die Airflow-Benutzeroberfläche werden folgende Schritte empfohlen:

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

Nutzer vorab registrieren

Nutzer werden automatisch mit den 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 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 vorab registriert werden.

Sie können Nutzer über die Airflow-Benutzeroberfläche oder über die Google Cloud CLI mit einem Airflow-Befehlszeilenbefehl vorab registrieren.

Wenn Sie einen Nutzer mit einer benutzerdefinierten Rolle über die Google Cloud CLI vorab registrieren möchten, führen Sie den folgenden Airflow-Befehlszeilenbefehl 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 Umgebung
  • LOCATION: die Region, in der sich die Umgebung befindet
  • ROLE: eine Airflow-Rolle für den Nutzer, z. B. Op
  • USER_EMAIL: die E-Mail-Adresse des Nutzers
  • FIRST_NAME und LAST_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 automatisierte Methode, um Rollen und ihre Berechtigungen auf DAG-Ebene zu konfigurieren. Daher kann es zu Konflikten mit anderen Airflow-Mechanismen kommen, die Berechtigungen auf DAG-Ebene gewähren:

Um solche Konflikte zu vermeiden, wird durch die Aktivierung der Registrierung von Rollen pro Ordner auch das Verhalten dieser Mechanismen geändert.

In Airflow 2:

  • Sie können Rollen über die im DAG-Quellcode definierte Eigenschaft access_control DAG-Zugriff gewähren.
  • Wenn Sie DAG-Berechtigungen manuell über die Airflow-Benutzeroberfläche oder die gcloud CLI gewähren, kann es zu Konflikten kommen. 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 Ordner /dags auf der obersten Ebene befinden, werden keiner Ordnerrolle automatisch zugewiesen. Sie sind nicht mit einer pro-Ordner-Rolle zugänglich. 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 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“, „Bearbeiter“, „Nutzer“, „Betrachter“ und „Öffentlich“. Cloud Composer erstellt NoDags und UserNoDags, nachdem die Funktion „Registrierung von Rollen pro Ordner“ aktiviert wurde.

Airflow führt die Registrierung von Rollen pro Ordner durch, wenn DAGs im Airflow-Planer verarbeitet werden. 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, mehr Arbeitsspeicher und CPU für Scheduler zu verwenden. Sie können auch den Wert der Airflow-Konfigurationsoption [scheduler]parsing_processes erhöhen.

DAGs automatisch Ordnerrollen zuweisen

So weisen Sie DAGs automatisch Rollen pro Ordner zu:

  1. Überschreiben Sie die folgende Airflow-Konfigurationsoption:

    Bereich Schlüssel Wert
    webserver rbac_autoregister_per_folder_roles True
  2. Ä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 ihnen eine Rolle mit Berechtigungen für bestimmte DAGs zuweist.

    „UserNoDags“ ist eine Rolle, die nur von Cloud Composer 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
    webserver rbac_user_registration_role UserNoDags

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

  4. Sie können Nutzern Rollen auf folgende Arten zuweisen:

    • Lassen Sie Airflow automatisch Rollen basierend auf den DAG-Unterordnern erstellen und weisen Sie dann Nutzern diese Rollen zu.
    • Erstellen Sie vorab leere Rollen für die DAG-Unterordner, deren Rollennamen mit dem Namen eines Unterordners übereinstimmen, und weisen Sie dann Nutzern diese Rollen 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 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:

  1. Der Administrator erstellt leere Rollen für die Gruppierung von DAGs.
  2. Der Administrator weist Nutzern die entsprechenden Rollen zu.
  3. Der Administrator oder die Nutzer weisen Rollen DAGs zu.
  4. In der Airflow-Benutzeroberfläche sehen Nutzer nur DAGs, 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 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 auf einem DAG festlegen und die DAG-Gruppierungsrollen angeben, denen der DAG zugewiesen wird.

In Airflow 2-Versionen vor 2.1.0 müssen 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 Berechtigungen auf DAG-Ebene anwendet, wenn er einen DAG analysiert.

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

Audit-Logs in der Airflow-Benutzeroberfläche 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 Protokollen ein Eintrag hinzugefügt.

Sie können sich Audit-Logs auf der Seite Suchen > Audit-Logs in der Airflow-Benutzeroberfläche ansehen.

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

Ein typischer Eintrag enthält im Feld Inhaber eine numerische ID: 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.

Nächste Schritte