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 beschrieben und die DAG-UI. Sie können diese Mechanismen zusätzlich zur Zugriffssteuerung von IAM bereitgestellt, um Nutzer im Airflow-UI und DAG-UI Ihrer Umgebung

Übersicht über die 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:

  1. 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 weiteren detaillierten in der Airflow- 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 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“ 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 automatisch Berechtigungen auf DAG-Ebene zuweisen, basierend auf dem Unterordner, in dem sich die DAG-Datei im Bucket.

Wenn Sie den Zugriff für externe Identitäten über Mitarbeiteridentitätsföderation, zuerst Zugriff auf Ihre Umgebung in IAM gewähren, wie in den Externen Identitäten IAM-Rollen zuweisen . Danach können Sie die Zugriffssteuerung der Airflow-Benutzeroberfläche wie gewohnt verwenden. Airflow-Nutzer für externe Identitäten verwenden stattdessen ihre Hauptkennung der E-Mail-Adresse stehen und bei den anderen Nutzern unterschiedliche Werte Eintragsfelder als Google-Konten.

Hinweise

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-UI können Sie die Zugriffssteuerungseinstellungen das Menü Sicherheit aus. Weitere Informationen zur Airflow-Zugriffssteuerung Modell, verfügbaren Berechtigungen und Standardrollen, finden Sie in der Dokumentation zur Airflow-UI-Zugriffssteuerung

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

Nutzer in der Airflow-UI registrieren

Neue Nutzer werden automatisch registriert, wenn sie die Airflow-UI eines Cloud Composer-Umgebung.

Bei der Registrierung wird Nutzern die in der [webserver]rbac_user_registration_role Airflow-Konfigurationsoption. Sie können die Rolle neu registrierter Nutzer durch Überschreiben Airflow-Konfigurationsoption mit einem anderen Wert.

Wenn nicht angegeben, lautet die Standardregistrierungsrolle Op in Umgebungen mit Airflow 2.

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

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

  2. Gewähren Sie den Administratorkonten die Rolle Admin. Die Standardrolle für neue Konten in Umgebungen mit Airflow 2 ist Op. Zum Zuweisen die Rolle Admin haben, führen Sie Folgendes aus: Befehl der Airflow-Befehlszeile mit gcloud:

      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 bei registriert. numerische IDs von Google-Nutzerkonten (nicht E-Mail-Adressen) als Nutzernamen. 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 ein Nutzer mit einer E-Mail-Adresse Abgleich eines vorregistrierten Nutzerdatensatzes zum ersten Mal in der Airflow-UI wird der Nutzername durch die Nutzer-ID ersetzt, die zum jeweiligen Zeitpunkt der ersten Anmeldung), die durch ihre E-Mail-Adresse identifiziert werden. Die Beziehung zwischen Google-Identitäten (E-Mail-Adressen) und Nutzerkonten (Nutzer-IDs) ist nicht behoben. Google-Gruppen können nicht vorregistriert werden.

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

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 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 werden beim nächsten Zugriff auf die Airflow-UI automatisch wieder registriert. Bis Zugriff auf die gesamte Airflow-UI widerrufen, composer.environments.get entfernen 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. Dieses vereinfacht die Verwaltung benutzerdefinierter Airflow-Rollen und deren Zugriff auf DAGs.

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:

Um solche Konflikte zu vermeiden, sollten Sie außerdem die Registrierung von Rollen pro Ordner aktivieren. verändert das Verhalten dieser Mechanismen.

In Airflow 2:

  • Sie können Rollen über die im DAG-Quellcode definierte Eigenschaft access_control DAG-Zugriff gewähren.
  • DAG-Berechtigungen manuell gewähren (über die Airflow-UI oder gcloud CLI) können zu Konflikten führen. Wenn Sie beispielsweise einer Rolle auf DAG-Ebene manuell zu gewähren, Berechtigungen können entfernt oder überschrieben werden, wenn der DAG-Prozessor synchronisiert einen DAG. Wir raten davon ab, DAG-Berechtigungen manuell zu gewähren.
  • Rollen haben eine Union der DAG-Zugriffsberechtigungen, die über die Option „Pro Ordner“ registriert wurden Registrierung der Rollen und Definition im Attribut access_control von den DAG.

DAGs, die sich direkt im übergeordneten Ordner /dags befinden, werden nicht automatisch zugewiesen: jede Rolle pro Ordner. Auf sie kann nicht mit einer Rolle pro Ordner zugegriffen werden. Sonstiges Rollen wie Admin, Op, User oder andere benutzerdefinierte Rollen mit Berechtigungen können über die Airflow- und die DAG-UI auf sie zugreifen können.

Wenn Sie DAGs in Unterordner hochladen, deren Namen den integrierten Airflow-Rollen entsprechen und von Cloud Composer erstellten Rollen, dann Berechtigungen für DAGs in sind diese Unterordner weiterhin diesen Rollen 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 Admin, Op, User, Viewer und Public. 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 es mehr als 100 DAGs in Ihrem sehen Sie möglicherweise eine Verlängerung der DAG-Parsing-Zeit. In diesem Fall empfehlen wir, mehr Arbeitsspeicher und CPU für Scheduler zu verwenden. Ich kann auch den Wert von [scheduler]parsing_processes-Airflow erhöhen. Konfigurationsoption.

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 weist ihren Konten eine Rolle zu, die Berechtigungen für bestimmte DAGs hat.

    „UserNoDags“ ist eine Rolle, die nur von Cloud Composer erstellt wird, wenn die Funktion „Registrierung von Rollen pro Ordner“ aktiviert ist. Es entspricht dem Nutzerrolle, aber ohne 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 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. Beispiel: Erstellen Sie 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 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 für Angeben, 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 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-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 den entsprechenden Rollen die erforderlichen Berechtigungen auf DAG-Ebene in der Airflow-UI zuweisen.

Dieser Vorgang wird in der DAG-UI nicht unterstützt.

DAGs Rollen in DAG-Attributen zuweisen

Sie können die access_control-DAG-Parameter für einen DAG, der Folgendes angibt: Die Rollen für die DAG-Gruppierung, denen der DAG zugewiesen ist.

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

Ab Airflow 2.1.0 können Sie diesen Befehl nicht mehr ausführen erforderlich, da der Planer Berechtigungen auf DAG-Ebene anwendet, wenn er eine DAG

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

Audit-Logs in der Airflow-Benutzeroberfläche Nutzern zuordnen

Audit-Logs in der Airflow-UI sind numerische IDs von Google-Nutzerkonten Wenn ein Nutzer beispielsweise einen DAG pausiert, wird den Protokollen ein Eintrag hinzugefügt.

Sie können Audit-Logs auf der Seite Durchsuchen > Audit-Logs einsehen in auf der Airflow-UI.

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 Sie können den E-Mail-Adressen von Nutzern auf der Sicherheit > Nutzer auflisten. Diese Seite ist verfügbar für Nutzer mit der Rolle Admin

Beachten Sie, dass die Beziehung zwischen Google-Identitäten (E-Mail-Adressen) und Nutzerkonten (Nutzer-IDs) ist nicht behoben.

Nächste Schritte