Airflow Configuration
Plik konfiguracyjny
Apache Airflow generuje plik konfiguracyjny na wszystkich maszynach Airflow o nazwie airflow.cfg
w katalogu domowym użytkownika Airflow. Plik konfiguracyjny zawiera informacje konfiguracyjne i może zawierać interesujące i wrażliwe informacje.
Istnieją dwie metody dostępu do tego pliku: poprzez skompromitowanie jakiejś maszyny Airflow lub uzyskanie dostępu do konsoli internetowej.
Należy zauważyć, że wartości wewnątrz pliku konfiguracyjnego mogą nie być używane, ponieważ można je nadpisać, ustawiając zmienne środowiskowe, takie jak AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'
.
Jeśli masz dostęp do pliku konfiguracyjnego w serwerze internetowym, możesz sprawdzić rzeczywistą konfigurację działającą na tej samej stronie, na której wyświetlana jest konfiguracja. Jeśli masz dostęp do jakiejś maszyny w środowisku Airflow, sprawdź środowisko.
Należy sprawdzić niektóre interesujące wartości podczas czytania pliku konfiguracyjnego:
[api]
access_control_allow_headers
: Wskazuje dozwolone nagłówki dla CORSaccess_control_allow_methods
: Wskazuje dozwolone metody dla CORSaccess_control_allow_origins
: Wskazuje dozwolone źródła dla CORSauth_backend
: Zgodnie z dokumentacją istnieje kilka opcji konfiguracji dostępu do interfejsu API:airflow.api.auth.backend.deny_all
: Domyślnie nikt nie ma dostępu do interfejsu APIairflow.api.auth.backend.default
: Każdy może uzyskać do niego dostęp bez uwierzytelnianiaairflow.api.auth.backend.kerberos_auth
: Konfiguracja uwierzytelniania kerberosairflow.api.auth.backend.basic_auth
: Uwierzytelnianie podstawoweairflow.composer.api.backend.composer_auth
: Używa uwierzytelniania kompozytora (GCP) (od tutaj).composer_auth_user_registration_role
: Wskazuje rolę, jaką użytkownik kompozytora otrzyma w Airflow (Op domyślnie).Możesz również stworzyć własną metodę uwierzytelniania za pomocą Pythona.
google_key_path
: Ścieżka do klucza konta usługi GCP
[atlas]
password
: Hasło Atlasusername
: Nazwa użytkownika Atlas
[celery]
flower_basic_auth
: Dane uwierzytelniające (user1:password1,user2:password2)result_backend
: Adres URL Postgres, który może zawierać dane uwierzytelniające.ssl_cacert
: Ścieżka do pliku cacertssl_cert
: Ścieżka do pliku certyfikatussl_key
: Ścieżka do pliku klucza
[core]
dag_discovery_safe_mode
: Domyślnie włączone. Podczas odkrywania DAG-ów ignorowane są pliki, które nie zawierają ciągówDAG
iairflow
.fernet_key
: Klucz do przechowywania zaszyfrowanych zmiennych (symetryczny)hide_sensitive_var_conn_fields
: Domyślnie włączone, ukrywa wrażliwe informacje o połączeniach.security
: Moduł zabezpieczeń do użycia (na przykład kerberos)
[dask]
tls_ca
: Ścieżka do pliku catls_cert
: Ścieżka do pliku certyfikatutls_key
: Ścieżka do pliku klucza TLS
[kerberos]
ccache
: Ścieżka do pliku ccacheforwardable
: Domyślnie włączone
[logging]
google_key_path
: Ścieżka do pliku JSON z danymi uwierzytelniającymi GCP.
[secrets]
backend
: Pełna nazwa klasy backendu tajemnic do włączeniabackend_kwargs
: Parametr backend_kwargs jest ładowany do słownika i przekazywany do init klasy backendu tajemnic.
[smtp]
smtp_password
: Hasło SMTPsmtp_user
: Użytkownik SMTP
[webserver]
cookie_samesite
: Domyślnie jest to Lax, więc jest to już najmniejsza możliwa wartośćcookie_secure
: Ustawia flagę secure na pliku cookie sesjiexpose_config
: Domyślnie jest False, jeśli jest true, konfiguracja może być odczytana z konsoli internetowejexpose_stacktrace
: Domyślnie jest True, pokazuje ślad pythona (potencjalnie przydatne dla atakującego)secret_key
: Jest to klucz używany przez flask do podpisywania plików cookie (jeśli go masz, możesz udawać dowolnego użytkownika w Airflow)web_server_ssl_cert
: Ścieżka do certyfikatu SSLweb_server_ssl_key
: Ścieżka do klucza SSLx_frame_enabled
: Domyślnie jest True, więc domyślnie nie jest możliwe klikanie w ramki (clickjacking)
Uwierzytelnianie internetowe
Domyślnie uwierzytelnianie internetowe jest określone w pliku webserver_config.py
i jest skonfigurowane jako
Co oznacza, że uwierzytelnianie jest sprawdzane w stosunku do bazy danych. Jednak inne konfiguracje są możliwe, takie jak
Aby pozostawić uwierzytelnianie stronom trzecim.
Jednak istnieje również opcja umożliwienia dostępu anonimowym użytkownikom, ustawiając następujący parametr na żądaną rolę:
Last updated