Konfiguracija Airflow-a

Reading time: 4 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Konfiguracioni Fajl

Apache Airflow generiše config fajl na svim airflow mašinama pod nazivom airflow.cfg u home direktorijumu korisnika airflow. Ovaj config fajl sadrži informacije o konfiguraciji i može sadržati zanimljive i osetljive informacije.

Postoje dva načina da se pristupi ovom fajlu: kompromitovanjem neke airflow mašine ili pristupanjem web konzoli.

Imajte na umu da vrednosti unutar config fajla možda nisu one koje se koriste, jer ih možete prepisati postavljanjem env varijabli kao što su AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'.

Ako imate pristup config fajlu na web serveru, možete proveriti pravu aktivnu konfiguraciju na istoj stranici na kojoj se prikazuje konfiguracija.
Ako imate pristup nekoj mašini unutar airflow okruženja, proverite okruženje.

Neke zanimljive vrednosti koje treba proveriti prilikom čitanja config fajla:

[api]

  • access_control_allow_headers: Ovo označava dozvoljene zaglavlja za CORS
  • access_control_allow_methods: Ovo označava dozvoljene metode za CORS
  • access_control_allow_origins: Ovo označava dozvoljene izvore za CORS
  • auth_backend: Prema dokumentaciji nekoliko opcija može biti postavljeno za konfiguraciju ko može pristupiti API-ju:
  • airflow.api.auth.backend.deny_all: Podrazumevano niko ne može pristupiti API-ju
  • airflow.api.auth.backend.default: Svi mogu pristupiti bez autentifikacije
  • airflow.api.auth.backend.kerberos_auth: Za konfiguraciju kerberos autentifikacije
  • airflow.api.auth.backend.basic_auth: Za osnovnu autentifikaciju
  • airflow.composer.api.backend.composer_auth: Koristi autentifikaciju kompozitora (GCP) (iz ovde).
  • composer_auth_user_registration_role: Ovo označava ulogu koju će korisnik kompozitora dobiti unutar airflow-a (Op podrazumevano).
  • Takođe možete napraviti svoju vlastitu autentifikaciju metodom u python-u.
  • google_key_path: Putanja do GCP servisnog naloga

[atlas]

  • password: Atlas lozinka
  • username: Atlas korisničko ime

[celery]

  • flower_basic_auth : Akreditivi (user1:password1,user2:password2)
  • result_backend: Postgres url koji može sadržati akreditive.
  • ssl_cacert: Putanja do cacert
  • ssl_cert: Putanja do certifikata
  • ssl_key: Putanja do ključa

[core]

  • dag_discovery_safe_mode: Omogućeno podrazumevano. Prilikom otkrivanja DAG-ova, ignorišite sve fajlove koji ne sadrže stringove DAG i airflow.
  • fernet_key: Ključ za čuvanje enkriptovanih varijabli (simetričan)
  • hide_sensitive_var_conn_fields: Omogućeno podrazumevano, sakrijte osetljive informacije o konekcijama.
  • security: Koji sigurnosni modul koristiti (na primer kerberos)

[dask]

  • tls_ca: Putanja do ca
  • tls_cert: Putanja do certifikata
  • tls_key: Putanja do tls ključa

[kerberos]

  • ccache: Putanja do ccache fajla
  • forwardable: Omogućeno podrazumevano

[logging]

  • google_key_path: Putanja do GCP JSON akreditiva.

[secrets]

  • backend: Puno ime klase backend-a za tajne koje treba omogućiti
  • backend_kwargs: Parametar backend_kwargs se učitava u rečnik i prosleđuje init klasi backend-a za tajne.

[smtp]

  • smtp_password: SMTP lozinka
  • smtp_user: SMTP korisnik

[webserver]

  • cookie_samesite: Podrazumevano je Lax, tako da je već najslabija moguća vrednost
  • cookie_secure: Postavite sigurnu oznaku na sesijskom kolačiću
  • expose_config: Podrazumevano je False, ako je tačno, config se može pročitati iz web konzole
  • expose_stacktrace: Podrazumevano je True, prikazaće python tracebacks (potencijalno korisno za napadača)
  • secret_key: Ovo je ključ koji koristi flask za potpisivanje kolačića (ako imate ovo možete imitirati bilo kog korisnika u Airflow-u)
  • web_server_ssl_cert: Putanja do SSL certifikata
  • web_server_ssl_key: Putanja do SSL ključa
  • x_frame_enabled: Podrazumevano je True, tako da podrazumevano clickjacking nije moguć

Web Autentifikacija

Podrazumevano je web autentifikacija specificirana u fajlu webserver_config.py i konfiguriše se kao

bash
AUTH_TYPE = AUTH_DB

Što znači da se autentifikacija proverava u odnosu na bazu podataka. Međutim, druge konfiguracije su moguće kao

bash
AUTH_TYPE = AUTH_OAUTH

Da se autentifikacija prepusti uslugama trećih strana.

Međutim, postoji i opcija da se omogući pristup anonimnim korisnicima, postavljanjem sledećeg parametra na željenu ulogu:

bash
AUTH_ROLE_PUBLIC = 'Admin'

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks