Web 服务器

本主题介绍如何配置 Airflow 以保护您的 Web 服务器。

从其他站点在 Web 框架中渲染 Airflow UI

默认情况下,在 Web 框架中使用 Airflow 已启用。要禁用此功能(并防止点击劫持攻击),请设置以下内容

[webserver]
x_frame_enabled = False

禁用部署暴露警告

当最近有对 /robots.txt 的请求时,Airflow 会发出警告。要禁用此警告,请将 warn_deployment_exposure 设置为 False,如下所示

[webserver]
warn_deployment_exposure = False

敏感变量字段

根据变量名称被视为“敏感”的变量值将在 UI 中自动屏蔽。有关更多详细信息,请参阅 屏蔽敏感数据

Web 身份验证

Web 服务器身份验证由身份验证管理器处理。有关 Web 服务器身份验证的更多信息,请参阅您的环境使用的身份验证管理器文档。默认情况下,Airflow 使用 FAB 身份验证管理器,如果您没有指定任何其他身份验证管理器,请查看 Web 服务器身份验证

SSL

可以通过提供证书和密钥来启用 SSL。启用后,请确保在浏览器中使用“https://”。

[webserver]
web_server_ssl_cert = <path to cert>
web_server_ssl_key = <path to key>

启用 SSL 不会自动更改 Web 服务器端口。如果要使用标准端口 443,则还需要对其进行配置。请注意,侦听端口 443 需要超级用户权限(或 Linux 上的 cap_net_bind_service)。

# Optionally, set the server to listen on the standard SSL port.
web_server_port = 443
base_url = http://<hostname or IP>:443

使用 SSL 启用 CeleryExecutor。确保正确生成了客户端和服务器证书和密钥。

[celery]
ssl_active = True
ssl_key = <path to key>
ssl_cert = <path to cert>
ssl_cacert = <path to cacert>

速率限制

可以将 Airflow 配置为限制在给定时间窗口内的身份验证请求数量。我们正在使用 Flask-Limiter 来实现这一点,默认情况下,Airflow 对每个 Web 服务器使用默认限制,即每 40 秒固定窗口 5 个请求。默认情况下,您运行的 gunicorn 进程之间不使用速率限制的公共存储,因此对每个进程分别应用速率限制,因此假设 gunicorn 对具有单个 Web 服务器实例和默认 4 个 gunicorn 工作器的请求进行随机分配,则有效速率限制为每 40 秒窗口 5 x 4 = 20 个请求(或多或少)。但是,您可以通过在 webserver_config.py 中设置 RATELIMIT_* 配置设置,将速率限制配置为在进程之间共享。例如,要使用 Redis 作为速率限制存储,您可以使用以下配置(您需要将 redis_host 设置为您的 Redis 实例)

RATELIMIT_STORAGE_URI = "redis://redis_host:6379/0"

您还可以在 webserver_config.py 中配置其他速率限制设置 - 有关更多详细信息,请参阅 Flask Limiter 速率限制配置

此条目有帮助吗?