Airflow Configuration
File di configurazione
Apache Airflow genera un file di configurazione in tutte le macchine di Airflow chiamato airflow.cfg
nella home dell'utente di 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 una macchina di Airflow o accedendo alla console web.
Nota che i valori all'interno del file di configurazione potrebbero non essere quelli utilizzati, poiché è possibile sovrascriverli impostando variabili di ambiente come AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'
.
Se hai accesso al file di configurazione nel server web, puoi controllare la configurazione effettiva in esecuzione nella stessa pagina in cui viene visualizzata la configurazione. Se hai accesso a qualche macchina all'interno dell'ambiente di Airflow, controlla l'ambiente.
Alcuni valori interessanti da controllare durante la lettura del 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 gli origini consentiti per CORSauth_backend
: Secondo la documentazione ci sono alcune opzioni per configurare chi può accedere all'API:airflow.api.auth.backend.deny_all
: Di default 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 basicaairflow.composer.api.backend.composer_auth
: Utilizza l'autenticazione dei compositori (GCP) (da qui).composer_auth_user_registration_role
: Questo indica il ruolo che l'utente del compositore otterrà all'interno di airflow (Op di default).Puoi anche creare il tuo metodo di autenticazione con python.
google_key_path
: Percorso per la 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 di Postgres che potrebbe contenere credenziali.ssl_cacert
: Percorso del cacertssl_cert
: Percorso del certificatossl_key
: Percorso della chiave
[core]
dag_discovery_safe_mode
: Abilitato per impostazione predefinita. Durante la scoperta dei DAG, ignora i file che non contengono le stringheDAG
eairflow
.fernet_key
: Chiave per memorizzare le variabili criptate (simmetriche)hide_sensitive_var_conn_fields
: Abilitato per impostazione predefinita, nasconde le informazioni sensibili delle connessioni.security
: Quale modulo di sicurezza utilizzare (ad esempio kerberos)
[dask]
tls_ca
: Percorso del catls_cert
: Parte del certificatotls_key
: Parte della chiave tls
[kerberos]
ccache
: Percorso del file ccacheforwardable
: Abilitato per impostazione predefinita
[logging]
google_key_path
: Percorso delle credenziali JSON di GCP.
[secrets]
backend
: Nome completo della classe di backend dei segreti da abilitarebackend_kwargs
: Il parametro backend_kwargs viene caricato in un dizionario e passato a init della classe di backend dei segreti.
[smtp]
smtp_password
: Password SMTPsmtp_user
: Utente SMTP
[webserver]
cookie_samesite
: Di default è Lax, quindi è già il valore più debole possibilecookie_secure
: Imposta il flag secure sul cookie di sessioneexpose_config
: Di default è False, se true, la configurazione può essere letta dalla console webexpose_stacktrace
: Di default è True, mostrerà le tracce di Python (potenzialmente utili per un attaccante)secret_key
: Questa è la chiave utilizzata da Flask per firmare i cookie (se la possiedi puoi fingerti qualsiasi utente in Airflow)web_server_ssl_cert
: Percorso del certificato SSLweb_server_ssl_key
: Percorso della chiave SSLx_frame_enabled
: Il valore predefinito è True, quindi per impostazione predefinita non è possibile il clickjacking
Autenticazione Web
Per impostazione predefinita, l'autenticazione web è specificata nel file webserver_config.py
e viene configurata come
Ciò significa che l'autenticazione viene verificata nel 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:
Last updated