Airflow Configuration

Unterstütze HackTricks

Konfigurationsdatei

Apache Airflow generiert eine Konfigurationsdatei auf allen Airflow-Maschinen namens airflow.cfg im Home-Verzeichnis des Airflow-Benutzers. Diese Konfigurationsdatei enthält Konfigurationsinformationen und kann interessante und sensible Informationen enthalten.

Es gibt zwei Möglichkeiten, auf diese Datei zuzugreifen: Indem man eine Airflow-Maschine kompromittiert oder auf die Webkonsole zugreift.

Beachte, dass die Werte in der Konfigurationsdatei nicht die verwendeten sein müssen, da du sie überschreiben kannst, indem du Umgebungsvariablen wie AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true' setzt.

Wenn du Zugriff auf die Konfigurationsdatei im Webserver hast, kannst du die tatsächliche laufende Konfiguration auf derselben Seite überprüfen, auf der die Konfiguration angezeigt wird. Wenn du Zugriff auf eine Maschine innerhalb der Airflow-Umgebung hast, überprüfe die Umgebung.

Einige interessante Werte, die du beim Lesen der Konfigurationsdatei überprüfen solltest:

[api]

  • access_control_allow_headers: Dies gibt die erlaubten Header für CORS an.

  • access_control_allow_methods: Dies gibt die erlaubten Methoden für CORS an.

  • access_control_allow_origins: Dies gibt die erlaubten Ursprünge für CORS an.

  • auth_backend: Laut den Dokumenten können einige Optionen vorhanden sein, um zu konfigurieren, wer auf die API zugreifen kann:

  • airflow.api.auth.backend.deny_all: Standardmäßig kann niemand auf die API zugreifen.

  • airflow.api.auth.backend.default: Jeder kann ohne Authentifizierung darauf zugreifen.

  • airflow.api.auth.backend.kerberos_auth: Um Kerberos-Authentifizierung zu konfigurieren.

  • airflow.api.auth.backend.basic_auth: Für Basis-Authentifizierung.

  • airflow.composer.api.backend.composer_auth: Verwendet die Authentifizierung von Composern (GCP) (von hier).

  • composer_auth_user_registration_role: Dies gibt die Rolle an, die der Composer-Benutzer innerhalb von Airflow erhält (Op standardmäßig).

  • Du kannst auch deine eigene Authentifizierungsmethode mit Python erstellen.

  • google_key_path: Pfad zum GCP-Dienstkonto-Schlüssel.

[atlas]

  • password: Atlas-Passwort.

  • username: Atlas-Benutzername.

[celery]

  • flower_basic_auth : Anmeldeinformationen (user1:password1,user2:password2).

  • result_backend: Postgres-URL, die Anmeldeinformationen enthalten kann.

  • ssl_cacert: Pfad zum cacert.

  • ssl_cert: Pfad zum Zertifikat.

  • ssl_key: Pfad zum Schlüssel.

[core]

  • dag_discovery_safe_mode: Standardmäßig aktiviert. Beim Entdecken von DAGs werden alle Dateien ignoriert, die nicht die Zeichenfolgen DAG und airflow enthalten.

  • fernet_key: Schlüssel zum Speichern verschlüsselter Variablen (symmetrisch).

  • hide_sensitive_var_conn_fields: Standardmäßig aktiviert, verbirgt sensible Informationen von Verbindungen.

  • security: Welches Sicherheitsmodul verwendet werden soll (zum Beispiel Kerberos).

[dask]

  • tls_ca: Pfad zur CA.

  • tls_cert: Pfad zum Zertifikat.

  • tls_key: Pfad zum TLS-Schlüssel.

[kerberos]

  • ccache: Pfad zur ccache-Datei.

  • forwardable: Standardmäßig aktiviert.

[logging]

  • google_key_path: Pfad zu GCP JSON-Anmeldeinformationen.

[secrets]

  • backend: Vollständiger Klassenname des Secrets-Backends, das aktiviert werden soll.

  • backend_kwargs: Der backend_kwargs-Parameter wird in ein Wörterbuch geladen und an init der Secrets-Backend-Klasse übergeben.

[smtp]

  • smtp_password: SMTP-Passwort.

  • smtp_user: SMTP-Benutzer.

[webserver]

  • cookie_samesite: Standardmäßig ist es Lax, also ist es bereits der schwächste mögliche Wert.

  • cookie_secure: Setze das sichere Flag für das Sitzungscookie.

  • expose_config: Standardmäßig ist es falsch, wenn es wahr ist, kann die Konfiguration von der Web-Konsole gelesen werden.

  • expose_stacktrace: Standardmäßig ist es wahr, es zeigt Python-Tracebacks an (potenziell nützlich für einen Angreifer).

  • secret_key: Dies ist der Schlüssel, der von Flask verwendet wird, um die Cookies zu signieren (wenn du dies hast, kannst du jeden Benutzer in Airflow impersonieren).

  • web_server_ssl_cert: Pfad zum SSL-Zertifikat.

  • web_server_ssl_key: Pfad zum SSL-Schlüssel.

  • x_frame_enabled: Standard ist wahr, sodass standardmäßig Clickjacking nicht möglich ist.

Web-Authentifizierung

Standardmäßig ist die Web-Authentifizierung in der Datei webserver_config.py angegeben und konfiguriert als

AUTH_TYPE = AUTH_DB

Was bedeutet, dass die Authentifizierung gegen die Datenbank überprüft wird. Andere Konfigurationen sind jedoch möglich, wie

AUTH_TYPE = AUTH_OAUTH

Um die Authentifizierung an Drittanbieterdienste zu übergeben.

Es gibt jedoch auch eine Option, um anonymen Benutzern den Zugriff zu erlauben, indem der folgende Parameter auf die gewünschte Rolle gesetzt wird:

AUTH_ROLE_PUBLIC = 'Admin'
Unterstützen Sie HackTricks

Last updated