Airflow Configuration

Wsparcie dla HackTricks

Plik konfiguracyjny

Apache Airflow generuje plik konfiguracyjny na wszystkich maszynach airflow o nazwie airflow.cfg w katalogu domowym użytkownika airflow. Ten plik konfiguracyjny zawiera informacje konfiguracyjne i może zawierać interesujące i wrażliwe informacje.

Są dwa sposoby na dostęp do tego pliku: Poprzez skompromitowanie maszyny airflow lub dostęp do konsoli internetowej.

Zauważ, że wartości w pliku konfiguracyjnym mogą nie być tymi używanymi, ponieważ możesz je nadpisać, ustawiając zmienne środowiskowe, takie jak AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'.

Jeśli masz dostęp do pliku konfiguracyjnego na serwerze webowym, możesz sprawdzić rzeczywistą działającą konfigurację na tej samej stronie, na której wyświetlany jest plik konfiguracyjny. Jeśli masz dostęp do jakiejś maszyny w środowisku airflow, sprawdź środowisko.

Niektóre interesujące wartości do sprawdzenia podczas przeglądania pliku konfiguracyjnego:

[api]

  • access_control_allow_headers: To wskazuje na dozwolone nagłówki dla CORS

  • access_control_allow_methods: To wskazuje na dozwolone metody dla CORS

  • access_control_allow_origins: To wskazuje na dozwolone źródła dla CORS

  • auth_backend: Zgodnie z dokumentacją kilka opcji może być użytych do skonfigurowania, kto może uzyskać dostęp do API:

  • airflow.api.auth.backend.deny_all: Domyślnie nikt nie może uzyskać dostępu do API

  • airflow.api.auth.backend.default: Każdy może uzyskać do niego dostęp bez uwierzytelnienia

  • airflow.api.auth.backend.kerberos_auth: Aby skonfigurować uwierzytelnianie kerberos

  • airflow.api.auth.backend.basic_auth: Dla podstawowego uwierzytelniania

  • airflow.composer.api.backend.composer_auth: Używa uwierzytelniania kompozytora (GCP) (z tutaj).

  • composer_auth_user_registration_role: To wskazuje na rolę, jaką użytkownik kompozytora otrzyma w airflow (Op domyślnie).

  • Możesz również stworzyć własną metodę uwierzytelniania w pythonie.

  • google_key_path: Ścieżka do klucza konta usługi GCP

[atlas]

  • password: Hasło Atlas

  • username: Nazwa użytkownika Atlas

[celery]

  • flower_basic_auth : Poświadczenia (user1:password1,user2:password2)

  • result_backend: URL Postgres, który może zawierać poświadczenia.

  • ssl_cacert: Ścieżka do cacert

  • ssl_cert: Ścieżka do certyfikatu

  • ssl_key: Ścieżka do klucza

[core]

  • dag_discovery_safe_mode: Włączone domyślnie. Podczas odkrywania DAG-ów, ignoruj wszelkie pliki, które nie zawierają ciągów DAG i airflow.

  • fernet_key: Klucz do przechowywania zaszyfrowanych zmiennych (symetryczny)

  • hide_sensitive_var_conn_fields: Włączone domyślnie, ukrywa wrażliwe informacje o połączeniach.

  • security: Jaki moduł zabezpieczeń użyć (na przykład kerberos)

[dask]

  • tls_ca: Ścieżka do ca

  • tls_cert: Ścieżka do certyfikatu

  • tls_key: Ścieżka do klucza tls

[kerberos]

  • ccache: Ścieżka do pliku ccache

  • forwardable: Włączone domyślnie

[logging]

  • google_key_path: Ścieżka do poświadczeń JSON GCP.

[secrets]

  • backend: Pełna nazwa klasy backendu sekretów do włączenia

  • backend_kwargs: Parametr backend_kwargs jest ładowany do słownika i przekazywany do init klasy backendu sekretów.

[smtp]

  • smtp_password: Hasło SMTP

  • smtp_user: Użytkownik SMTP

[webserver]

  • cookie_samesite: Domyślnie to Lax, więc to już najsłabsza możliwa wartość

  • cookie_secure: Ustaw flaga zabezpieczeń na ciasteczku sesyjnym

  • expose_config: Domyślnie jest False, jeśli prawda, konfiguracja może być odczytana z konsoli internetowej

  • expose_stacktrace: Domyślnie jest True, wyświetli ślad stosu Pythona (potencjalnie przydatne dla atakującego)

  • secret_key: To jest klucz używany przez flask do podpisywania ciasteczek (jeśli to masz, możesz podszyć się pod dowolnego użytkownika w Airflow)

  • web_server_ssl_cert: Ścieżka do certyfikatu SSL

  • web_server_ssl_key: Ścieżka do klucza SSL

  • x_frame_enabled: Domyślnie jest True, więc domyślnie clickjacking nie jest możliwy

Uwierzytelnianie w sieci

Domyślnie uwierzytelnianie w sieci jest określone w pliku webserver_config.py i jest skonfigurowane jako

AUTH_TYPE = AUTH_DB

Co oznacza, że uwierzytelnianie jest sprawdzane w bazie danych. Jednak możliwe są inne konfiguracje, takie jak

AUTH_TYPE = AUTH_OAUTH

Aby pozostawić uwierzytelnianie zewnętrznym usługom.

Jednak istnieje również opcja zezwolenia anonimowym użytkownikom na dostęp, ustawiając następujący parametr na pożądaną rolę:

AUTH_ROLE_PUBLIC = 'Admin'
Wsparcie dla HackTricks

Last updated