5.3 KiB
Configurazione di Airflow
{{#include ../../banners/hacktricks-training.md}}
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 stringheDAGeairflow.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 di 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
AUTH_TYPE = AUTH_DB
Ciò significa che l'autenticazione viene verificata rispetto al database. Tuttavia, sono possibili altre configurazioni come
AUTH_TYPE = AUTH_OAUTH
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:
AUTH_ROLE_PUBLIC = 'Admin'
{{#include ../../banners/hacktricks-training.md}}