Airflow Configuration
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Configuration File
Apache Airflow は、エアフロー ユーザーのホームに airflow.cfg
という config file を生成します。この config file には設定情報が含まれており、興味深く、機密性の高い情報が含まれている可能性があります。
このファイルにアクセスする方法は2つあります: エアフロー マシンを侵害するか、ウェブコンソールにアクセスすることです。
config file 内の値 は 使用されているものではない可能性があることに注意してください。環境変数を設定することで上書きできます。例: AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'
。
ウェブサーバーの config file にアクセスできる場合、同じページで表示されている 実際の実行設定 を確認できます。 エアフロー環境内のマシンにアクセスできる場合、環境を確認してください。
config file を読む際に確認すべき興味深い値:
[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
: これは composer ユーザー が airflow 内で取得する 役割 を示します (Op がデフォルト)。Python で 独自の認証 メソッドを作成することもできます。
google_key_path
: GCP サービス アカウント キーへのパス。
[atlas]
password
: Atlas パスワードusername
: Atlas ユーザー名
[celery]
flower_basic_auth
: 認証情報 (user1:password1,user2:password2)result_backend
: 機密情報を含む可能性のある Postgres URL。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
: セッションクッキーに secure flag を設定します。expose_config
: デフォルトは False で、True の場合、config はウェブ console から 読み取る ことができます。expose_stacktrace
: デフォルトでは True で、python tracebacks を表示します (攻撃者にとって潜在的に有用)。secret_key
: これは flask がクッキーに署名するために使用するキー です (これを持っていると Airflow の任意のユーザーを偽装 できます)。web_server_ssl_cert
: SSL 証明書 への パス。web_server_ssl_key
: SSL キー への パス。x_frame_enabled
: デフォルトは True で、デフォルトではクリックジャッキングは不可能です。
Web Authentication
デフォルトでは web authentication は webserver_config.py
ファイルに指定され、次のように構成されています。
つまり、認証はデータベースに対してチェックされます。ただし、他の設定も可能です。
認証をサードパーティサービスに委ねる。
ただし、匿名ユーザーのアクセスを許可するオプションもあり、次のパラメータを希望するロールに設定します:
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Last updated