Airflow Configuration
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)
File di Configurazione
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:
[api]
access_control_allow_headers
: Questo indica gli header consentiti per CORSaccess_control_allow_methods
: Questo indica i metodi consentiti per CORSaccess_control_allow_origins
: Questo indica le origini consentite per CORSauth_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'APIairflow.api.auth.backend.default
: Tutti possono accedervi senza autenticazioneairflow.api.auth.backend.kerberos_auth
: Per configurare l'autenticazione kerberosairflow.api.auth.backend.basic_auth
: Per l'autenticazione di baseairflow.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
[atlas]
password
: Password di Atlasusername
: Nome utente di Atlas
[celery]
flower_basic_auth
: Credenziali (user1:password1,user2:password2)result_backend
: URL Postgres che può contenere credenziali.ssl_cacert
: Percorso al cacertssl_cert
: Percorso al certificatossl_key
: Percorso alla chiave
[core]
dag_discovery_safe_mode
: Abilitato per impostazione predefinita. Quando si scoprono i DAG, ignora eventuali file che non contengono le stringheDAG
eairflow
.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)
[dask]
tls_ca
: Percorso al catls_cert
: Percorso al certificatotls_key
: Percorso alla chiave tls
[kerberos]
ccache
: Percorso al file ccacheforwardable
: Abilitato per impostazione predefinita
[logging]
google_key_path
: Percorso alle credenziali JSON GCP.
[secrets]
backend
: Nome completo della classe del backend dei segreti da abilitarebackend_kwargs
: Il parametro backend_kwargs viene caricato in un dizionario e passato a init della classe del backend dei segreti.
[smtp]
smtp_password
: Password SMTPsmtp_user
: Utente SMTP
[webserver]
cookie_samesite
: Per impostazione predefinita è Lax, quindi è già il valore più debole possibilecookie_secure
: Imposta il flag sicuro sul cookie di sessioneexpose_config
: Per impostazione predefinita è False, se vero, la configurazione può essere letta dalla console webexpose_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 SSLweb_server_ssl_key
: Percorso alla chiave SSLx_frame_enabled
: Il valore predefinito è True, quindi per impostazione predefinita il clickjacking non è possibile
Autenticazione Web
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 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Last updated