Airflow-Konfiguration

Reading time: 4 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie 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.

Beachten Sie, dass die Werte in der Konfigurationsdatei nicht die verwendeten sein müssen, da Sie sie überschreiben können, indem Sie Umgebungsvariablen wie AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true' setzen.

Wenn Sie Zugriff auf die Konfigurationsdatei im Webserver haben, können Sie die tatsächliche laufende Konfiguration auf derselben Seite überprüfen, auf der die Konfiguration angezeigt wird.
Wenn Sie Zugriff auf eine Maschine innerhalb der Airflow-Umgebung haben, überprüfen Sie die Umgebung.

Einige interessante Werte, die Sie beim Lesen der Konfigurationsdatei überprüfen sollten:

[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).
  • Sie können auch Ihre 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 zu 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 Parameter backend_kwargs 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: Setzt das sichere Flag für das Sitzungscookie.
  • expose_config: Standardmäßig ist es False, wenn es wahr ist, kann die Konfiguration von der Web-Konsole gelesen werden.
  • expose_stacktrace: Standardmäßig ist es True, 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 Sie dies haben, können Sie 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 True, 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

bash
AUTH_TYPE = AUTH_DB

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

bash
AUTH_TYPE = AUTH_OAUTH

Um die Authentifizierung an Drittanbieterdienste zu übergeben.

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

bash
AUTH_ROLE_PUBLIC = 'Admin'

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks