Airflow Configuration

Support HackTricks

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: これは airflow 内で composer user が取得する 役割 を示します (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 を発見する際、DAGairflow の文字列を含まないファイルは無視されます。

  • 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 authenticationwebserver_config.py ファイルに指定され、次のように構成されています

AUTH_TYPE = AUTH_DB

つまり、認証はデータベースに対してチェックされます。ただし、他の設定も可能です。

AUTH_TYPE = AUTH_OAUTH

認証を第三者サービスに委ねるためです。

ただし、匿名ユーザーのアクセスを許可するオプションもあり、次のパラメータを希望するロールに設定します:

AUTH_ROLE_PUBLIC = 'Admin'
HackTricksをサポートする

Last updated