Airflow Configuration

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

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 CORS

  • access_control_allow_methods: Questo indica i metodi consentiti per CORS

  • access_control_allow_origins: Questo indica gli origini consentiti per CORS

  • auth_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'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 basica

  • airflow.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 Atlas

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

  • ssl_cert: Percorso del certificato

  • ssl_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 stringhe DAG e airflow.

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

  • tls_cert: Parte del certificato

  • tls_key: Parte della chiave tls

[kerberos]

  • ccache: Percorso del file ccache

  • forwardable: 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 abilitare

  • backend_kwargs: Il parametro backend_kwargs viene caricato in un dizionario e passato a init della classe di backend dei segreti.

[smtp]

  • smtp_password: Password SMTP

  • smtp_user: Utente SMTP

[webserver]

  • cookie_samesite: Di default è Lax, quindi è già il valore più debole possibile

  • cookie_secure: Imposta il flag secure sul cookie di sessione

  • expose_config: Di default è False, se true, la configurazione può essere letta dalla console web

  • expose_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 SSL

  • web_server_ssl_key: Percorso della chiave SSL

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

AUTH_TYPE = AUTH_DB

Ciò significa che l'autenticazione viene verificata nel 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'
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated