Airflow Configuration

Reading time: 7 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

Configuration File

Apache Airflow は、すべての airflow マシンに airflow.cfg という config file を生成します。この config file は、設定情報を含み、興味深く、機密性の高い情報を含む可能性があります。

このファイルにアクセスする方法は2つあります:airflow マシンを侵害するか、ウェブコンソールにアクセスすることです。

config file 内の値使用されているものではない可能性があることに注意してください。環境変数を設定することで上書きできます。例えば、AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'

ウェブサーバーの config file にアクセスできる場合、同じページで表示されている 実際の実行設定 を確認できます。
airflow 環境内のマシンにアクセスできる場合環境を確認してください。

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 を発見する際、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: セッション cookie に secure flag を設定します
  • expose_config: デフォルトは False で、true の場合、config はウェブ console から 読み取る ことができます
  • expose_stacktrace: デフォルトでは True で、python tracebacks を表示します (攻撃者にとって潜在的に有用)
  • secret_key: これは flask が cookie に署名するために使用するキー です (これを持っていると、Airflow の任意のユーザーを偽装できます)
  • web_server_ssl_cert: SSL 証明書 への パス
  • web_server_ssl_key: SSL キー への パス
  • x_frame_enabled: デフォルトは True で、デフォルトではクリックジャッキングは不可能です

Web Authentication

デフォルトでは web authenticationwebserver_config.py ファイルに指定され、次のように設定されています。

bash
AUTH_TYPE = AUTH_DB

これは、認証がデータベースに対してチェックされることを意味します。ただし、他の構成も可能です。

bash
AUTH_TYPE = AUTH_OAUTH

認証をサードパーティサービスに委ねること。

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

bash
AUTH_ROLE_PUBLIC = 'Admin'

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする