Airflow Configuration

支持 HackTricks

Configuration File

Apache Airflow 在所有 Airflow 机器上生成一个 config file,称为 airflow.cfg,位于 Airflow 用户的主目录中。此配置文件包含配置信息,并且 可能包含有趣和敏感的信息。

访问此文件有两种方式:通过攻陷某个 Airflow 机器,或访问 Web 控制台。

请注意,配置文件中的值 可能不是实际使用的值,因为您可以通过设置环境变量(如 AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true')来覆盖它们。

如果您可以访问 Web 服务器中的配置文件,可以在同一页面上检查 实际运行的配置。 如果您可以访问 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:使用 Composer 身份验证(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,配置可以从 Web 控制台 读取

  • 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 身份验证 在文件 webserver_config.py 中指定,并配置为

AUTH_TYPE = AUTH_DB

这意味着身份验证是针对数据库进行检查的。然而,还有其他配置是可能的,例如

AUTH_TYPE = AUTH_OAUTH

身份验证委托给第三方服务

然而,还有一个选项可以允许匿名用户访问,将以下参数设置为所需角色

AUTH_ROLE_PUBLIC = 'Admin'
支持 HackTricks

Last updated