Airflow Configuration
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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:
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.
password
: Atlas-Passwort.
username
: Atlas-Benutzername.
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.
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).
tls_ca
: Pfad zur CA.
tls_cert
: Pfad zum Zertifikat.
tls_key
: Pfad zum TLS-Schlüssel.
ccache
: Pfad zur ccache-Datei.
forwardable
: Standardmäßig aktiviert.
google_key_path
: Pfad zu GCP JSON-Anmeldeinformationen.
backend
: Vollständiger Klassenname des zu aktivierenden Secrets-Backends.
backend_kwargs
: Der Parameter backend_kwargs wird in ein Wörterbuch geladen und an init der Secrets-Backend-Klasse übergeben.
smtp_password
: SMTP-Passwort.
smtp_user
: SMTP-Benutzer.
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 werden Python-Tracebacks angezeigt (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 True, sodass standardmäßig Clickjacking nicht möglich ist.
Standardmäßig ist die Web-Authentifizierung in der Datei webserver_config.py
angegeben und konfiguriert als
Was bedeutet, dass die Authentifizierung gegen die Datenbank überprüft wird. Andere Konfigurationen sind jedoch möglich, wie
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:
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)