Webserver

本主题介绍如何配置 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,您也需要进行配置。请注意,需要超级用户权限(或 Linux 上的 cap_net_bind_service)才能侦听端口 443。

# 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 速率限制配置

此条目是否有帮助?