Web服务器

本主题介绍如何配置Airflow以保护您的网页服务器安全。

在另一个站点的网页框架中渲染Airflow UI

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

[webserver]
x_frame_enabled = False

禁用部署暴露警告

当最近有请求访问/robots.txt时,Airflow会发出警告。要禁用此警告,请按如下方式将warn_deployment_exposure设置为False

[webserver]
warn_deployment_exposure = False

敏感变量字段

根据变量名被认定为"敏感"的变量值将在用户界面中自动被屏蔽。 详见屏蔽敏感数据获取更多详情。

网页认证

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进程之间没有使用共同的速率限制存储,因此速率限制是分别应用于每个进程的, 因此假设在单个Web服务器实例和默认4个gunicorn工作进程的情况下,请求由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速率限制配置

这篇内容对您有帮助吗?