Airflow Configuration

AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

設定ファイル

Apache Airflowは、airflowユーザーのホームに**airflow.cfgという設定ファイル**を生成します。この設定ファイルには設定情報が含まれており、興味深く機密性の高い情報が含まれる可能性があります。

このファイルにアクセスするには2つの方法があります: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: 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: セッションクッキーにセキュアフラグを設定します

  • expose_config: デフォルトではFalseですが、trueの場合、ウェブコンソールから設定読むことができます

  • expose_stacktrace: デフォルトではTrueで、Pythonのトレースバックを表示します(攻撃者にとって有用な可能性があります)

  • secret_key: これはflaskがクッキーに署名するために使用するキーです(これを持っていれば、Airflowの任意のユーザーになりすますことができます)

  • web_server_ssl_cert: SSL 証明書へのパス

  • web_server_ssl_key: SSL キーへのパス

  • x_frame_enabled: デフォルトはTrueなので、デフォルトではクリックジャッキングは不可能です

Web認証

デフォルトではウェブ認証は**webserver_config.py**ファイルで指定されており、次のように設定されています

AUTH_TYPE = AUTH_DB

これは、認証がデータベースに対してチェックされることを意味します。しかし、他の設定も可能です。例えば

AUTH_TYPE = AUTH_OAUTH

サードパーティサービスによる認証に委ねる。

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

AUTH_ROLE_PUBLIC = 'Admin'
AWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

最終更新