Webserver

本主題說明如何設定 Airflow 以保護您的網頁伺服器。

在網頁框架中呈現 Airflow UI

預設啟用在網頁框架中使用 Airflow。若要停用此功能 (並防止點擊劫持攻擊),請設定如下:

[webserver]
x_frame_enabled = False

停用部署暴露警告

當最近對 /robots.txt 發出請求時,Airflow 會發出警告。若要停用此警告,請將 warn_deployment_exposure 設定為 False,如下所示:

[webserver]
warn_deployment_exposure = False

敏感變數欄位

根據變數名稱判斷為「敏感」的變數值將會在 UI 中自動遮蔽。請參閱遮蔽敏感資料以取得更多詳細資訊。

網頁驗證

網頁伺服器驗證由驗證管理器處理。有關網頁伺服器驗證的更多資訊,請參閱您的環境使用的驗證管理器文件。預設情況下,Airflow 使用 FAB 驗證管理器,如果您沒有指定任何其他驗證管理器,請查看網頁伺服器驗證

SSL

可以透過提供憑證和金鑰來啟用 SSL。啟用後,請務必在瀏覽器中使用「https://」。

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

啟用 SSL 不會自動變更網頁伺服器埠。如果您想使用標準埠 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 使用每個網頁伺服器的預設限制,即每 40 秒固定視窗 5 個請求。預設情況下,您執行的 gunicorn 進程之間不使用速率限制的通用儲存,因此速率限制是單獨應用於每個進程的,因此假設 gunicorn 對請求的隨機分佈,單個網頁伺服器實例和預設 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 速率限制配置

這個條目有幫助嗎?