Airflow Configuration

Supporta HackTricks

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 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 ci sono alcune opzioni che possono essere impostate 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

[atlas]

  • password: Password di Atlas

  • username: 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 cacert

  • ssl_cert: Percorso al certificato

  • ssl_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 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)

[dask]

  • tls_ca: Percorso al ca

  • tls_cert: Percorso al certificato

  • tls_key: Percorso alla chiave tls

[kerberos]

  • ccache: Percorso al file ccache

  • forwardable: Abilitato per impostazione predefinita

[logging]

  • google_key_path: Percorso alle credenziali JSON GCP.

[secrets]

  • 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]

  • smtp_password: Password SMTP

  • smtp_user: Utente SMTP

[webserver]

  • 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

Autenticazione Web

Per impostazione predefinita, l'autenticazione web è specificata nel file webserver_config.py ed è configurata come

AUTH_TYPE = AUTH_DB

Il che significa che l'autenticazione viene controllata 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'
Supporta HackTricks

Last updated