Airflow Configuration
Last updated
Last updated
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Apache Airflow genera un file di configurazione in tutte le macchine airflow chiamato airflow.cfg
nella home dell'utente airflow. Questo file di configurazione contiene informazioni di configurazione e potrebbe contenere informazioni interessanti e sensibili.
Ci sono due modi per accedere a questo file: compromettendo qualche macchina airflow, o accedendo alla console web.
Nota che i valori all'interno del file di configurazione potrebbero non essere quelli utilizzati, poiché puoi sovrascriverli impostando variabili d'ambiente come AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'
.
Se hai accesso al file di configurazione nel server web, puoi controllare la configurazione reale in esecuzione nella stessa pagina in cui viene visualizzata la configurazione. Se hai accesso a qualche macchina all'interno dell'ambiente airflow, controlla l'ambiente.
Alcuni valori interessanti da controllare quando leggi il file di configurazione:
access_control_allow_headers
: Questo indica gli header consentiti per CORS
access_control_allow_methods
: Questo indica i metodi consentiti per CORS
access_control_allow_origins
: Questo indica le origini consentite per CORS
auth_backend
: Secondo la documentazione alcune opzioni possono essere in atto per configurare chi può accedere all'API:
airflow.api.auth.backend.deny_all
: Per impostazione predefinita nessuno può accedere all'API
airflow.api.auth.backend.default
: Tutti possono accedervi senza autenticazione
airflow.api.auth.backend.kerberos_auth
: Per configurare l'autenticazione kerberos
airflow.api.auth.backend.basic_auth
: Per l'autenticazione di base
airflow.composer.api.backend.composer_auth
: Usa l'autenticazione dei compositori (GCP) (da qui).
composer_auth_user_registration_role
: Questo indica il ruolo che l'utente compositore avrà all'interno di airflow (Op per impostazione predefinita).
Puoi anche creare il tuo metodo di autenticazione con python.
google_key_path
: Percorso alla chiave dell'account di servizio GCP
password
: Password di Atlas
username
: Nome utente di Atlas
flower_basic_auth
: Credenziali (user1:password1,user2:password2)
result_backend
: URL Postgres che può contenere credenziali.
ssl_cacert
: Percorso al cacert
ssl_cert
: Percorso al certificato
ssl_key
: Percorso alla chiave
dag_discovery_safe_mode
: Abilitato per impostazione predefinita. Quando si scoprono i DAG, ignora eventuali file che non contengono le stringhe DAG
e airflow
.
fernet_key
: Chiave per memorizzare variabili crittografate (simmetrica)
hide_sensitive_var_conn_fields
: Abilitato per impostazione predefinita, nasconde informazioni sensibili delle connessioni.
security
: Quale modulo di sicurezza utilizzare (ad esempio kerberos)
tls_ca
: Percorso al ca
tls_cert
: Percorso al certificato
tls_key
: Percorso alla chiave tls
ccache
: Percorso al file ccache
forwardable
: Abilitato per impostazione predefinita
google_key_path
: Percorso alle credenziali JSON GCP.
backend
: Nome completo della classe del backend dei segreti da abilitare
backend_kwargs
: Il parametro backend_kwargs viene caricato in un dizionario e passato a init della classe del backend dei segreti.
smtp_password
: Password SMTP
smtp_user
: Utente SMTP
cookie_samesite
: Per impostazione predefinita è Lax, quindi è già il valore più debole possibile
cookie_secure
: Imposta il flag sicuro sul cookie di sessione
expose_config
: Per impostazione predefinita è False, se vero, la configurazione può essere letta dalla console web
expose_stacktrace
: Per impostazione predefinita è True, mostrerà tracce python (potenzialmente utili per un attaccante)
secret_key
: Questa è la chiave utilizzata da flask per firmare i cookie (se hai questo puoi impersonare qualsiasi utente in Airflow)
web_server_ssl_cert
: Percorso al certificato SSL
web_server_ssl_key
: Percorso alla chiave SSL
x_frame_enabled
: Il valore predefinito è True, quindi per impostazione predefinita il clickjacking non è possibile
Per impostazione predefinita, l'autenticazione web è specificata nel file webserver_config.py
ed è configurata come
Il che significa che l'autenticazione viene controllata rispetto al database. Tuttavia, sono possibili altre configurazioni come
Per lasciare l'autenticazione ai servizi di terze parti.
Tuttavia, c'è anche un'opzione per consentire l'accesso agli utenti anonimi, impostando il seguente parametro al ruolo desiderato:
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)