Files
hacktricks-cloud/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md

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 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 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'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 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 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

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}}