Airflow Configuration

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Файл налаштувань

Apache Airflow генерує файл конфігурації на всіх машинах Airflow під назвою airflow.cfg в домашній директорії користувача Airflow. Цей файл конфігурації містить інформацію про налаштування і може містити цікаву та чутливу інформацію.

Є два способи доступу до цього файлу: шляхом компрометації деякої машини Airflow або доступу до веб-консолі.

Зверніть увагу, що значення всередині файлу конфігурації можуть не бути використані, оскільки ви можете їх перезаписати, встановивши змінні середовища, такі як AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'.

Якщо у вас є доступ до файлу конфігурації на веб-сервері, ви можете перевірити реальну конфігурацію, на тій самій сторінці, де відображається конфігурація. Якщо у вас є доступ до деякої машини всередині середовища Airflow, перевірте середовище.

Деякі цікаві значення для перевірки при читанні файлу конфігурації:

[api]

  • access_control_allow_headers: Це вказує дозволені заголовки для CORS

  • access_control_allow_methods: Це вказує дозволені методи для CORS

  • access_control_allow_origins: Це вказує дозволені джерела для CORS

  • auth_backend: Згідно з документацією можна налаштувати кілька варіантів для конфігурації, хто може отримати доступ до API:

  • airflow.api.auth.backend.deny_all: За замовчуванням ніхто не може отримати доступ до API

  • airflow.api.auth.backend.default: Кожен може отримати доступ до нього без аутентифікації

  • airflow.api.auth.backend.kerberos_auth: Для налаштування аутентифікації Kerberos

  • airflow.api.auth.backend.basic_auth: Для базової аутентифікації

  • airflow.composer.api.backend.composer_auth: Використовує аутентифікацію композиторів (GCP) (з тут).

  • composer_auth_user_registration_role: Це вказує роль, яку отримає користувач композитора всередині Airflow (Op за замовчуванням).

  • Ви також можете створити свій власний метод аутентифікації за допомогою Python.

  • google_key_path: Шлях до ключа облікового запису служби GCP

[atlas]

  • password: Пароль Atlas

  • username: Ім'я користувача Atlas

[celery]

  • flower_basic_auth : Облікові дані (user1:password1,user2:password2)

  • result_backend: URL Postgres, який може містити облікові дані.

  • ssl_cacert: Шлях до cacert

  • ssl_cert: Шлях до сертифіката

  • ssl_key: Шлях до ключа

[core]

  • dag_discovery_safe_mode: Увімкнено за замовчуванням. Під час виявлення DAG ігнорувати будь-які файли, які не містять рядки DAG та airflow.

  • fernet_key: Ключ для зберігання зашифрованих змінних (симетричний)

  • hide_sensitive_var_conn_fields: Увімкнено за замовчуванням, приховувати чутливу інформацію про підключення.

  • security: Який модуль безпеки використовувати (наприклад, Kerberos)

[dask]

  • tls_ca: Шлях до ca

  • tls_cert: Частина сертифіката

  • tls_key: Частина ключа TLS

[kerberos]

  • ccache: Шлях до файлу ccache

  • forwardable: Увімкнено за замовчуванням

[logging]

  • google_key_path: Шлях до GCP JSON-даних.

[secrets]

  • backend: Повне ім'я класу сховища секретів для активації

  • backend_kwargs: Параметр backend_kwargs завантажується у словник та передається до init класу сховища секретів.

[smtp]

  • smtp_password: Пароль SMTP

  • smtp_user: Користувач SMTP

[webserver]

  • cookie_samesite: За замовчуванням це Lax, тому вже є найслабший можливий значення

  • cookie_secure: Встановити флаг безпеки на сесійному cookie

  • expose_config: За замовчуванням False, якщо true, конфігурацію можна читати з веб-консолі

  • expose_stacktrace: За замовчуванням True, він покаже сліди Python (потенційно корисно для атакуючого)

  • secret_key: Це ключ, який використовує flask для підпису cookie (якщо у вас є це, ви можете підробити будь-якого користувача в Airflow)

  • web_server_ssl_cert: Шлях до SSL сертифіката

  • web_server_ssl_key: Шлях до SSL ключа

  • x_frame_enabled: За замовчуванням True, тому за замовчуванням неможливий clickjacking

Веб-аутентифікація

За замовчуванням веб-аутентифікація вказана в файлі webserver_config.py і налаштована як

AUTH_TYPE = AUTH_DB

Що означає, що аутентифікація перевіряється у базі даних. Однак інші конфігурації також можливі, наприклад

AUTH_TYPE = AUTH_OAUTH

Для того щоб автентифікацію залишити на сторонніх службах.

Проте, також є опція дозволити доступ анонімним користувачам, встановивши наступний параметр на потрібну роль:

AUTH_ROLE_PUBLIC = 'Admin'
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated