Airflow 峰會 2025 將於 10 月 07-09 日舉行。立即註冊搶購早鳥票!

Secrets 後端

自版本 1.10.10 加入。

除了從環境變數或元資料資料庫中檢索連線和變數外,您還可以啟用備用 secrets 後端,透過 Apache Airflow 社群提供的後端Secret 後端 中檢索 Airflow 連線或 Airflow 變數。

注意

Airflow UI 僅顯示儲存在元資料資料庫中的連線和變數,而不顯示透過其他任何方式儲存的。如果您使用備用 secrets 後端,請在您的後端中檢視變數和連線的值。

您還可以從 Secrets 後端獲取包含敏感資料的 Airflow 配置。更多詳情請參見 設定配置選項

搜尋路徑

查詢連線/變數時,Airflow 預設首先搜尋環境變數,其次搜尋元資料資料庫。

如果您啟用備用 secrets 後端,它將首先被搜尋,其次是環境變數,然後是元資料資料庫。此搜尋順序不可配置。不過,在某些備用 secrets 後端中,您可能可以選擇過濾在 secret 後端中搜索哪些連線/變數/配置。請查閱您正在使用的 secret 後端的文件,檢視是否有此選項。

另一方面,如果定義了 worker secrets 後端,查詢順序會優先搜尋 worker secrets 後端,然後才是 secrets 後端。

警告

當使用環境變數或備用 secrets 後端儲存 secrets 或變數時,可能會發生鍵衝突。如果在後端之間出現重複的鍵,所有寫入操作都會更新元資料資料庫中的值,但所有讀取操作將返回按自定義後端、然後是環境變數、最後是元資料資料庫的順序找到的第一個匹配項。

配置

配置的 [secrets] 部分包含以下選項

[secrets]
backend =
backend_kwargs =

backend 設定為您要啟用的後端的完全限定類名。

您可以提供 json 格式的 backend_kwargs,它將作為 kwargs 傳遞給您的 secrets 後端的 __init__ 方法。

如果您想檢查當前設定的是哪個 secret 後端,可以使用如下示例所示的 airflow config get-value secrets backend 命令。

$ airflow config get-value secrets backend
airflow.providers.google.cloud.secrets.secret_manager.CloudSecretManagerBackend

Worker 特有配置

上述部分介紹了所有 Airflow 元件的通用配置選項。但在 Airflow 3 中,如果您想為 worker 配置單獨的 secrets 後端,可以使用以下選項:

[workers]
secrets_backend =
secrets_backend_kwargs =

secrets_backend 設定為您要啟用的後端的完全限定類名。

您可以提供 json 格式的 secrets_backend_kwargs,它將作為 kwargs 傳遞給 worker secrets 後端的 __init__ 方法。

如果您想檢查當前設定的是哪個 secret 後端,可以使用如下示例所示的 airflow config get-value workers secrets_backend 命令。

$ airflow config get-value workers secrets_backend
airflow.providers.google.cloud.secrets.secret_manager.CloudSecretManagerBackend

支援的核心後端

Apache Airflow 社群提供的 Secret 後端

Apache Airflow 社群還發布社群開發的 Provider(Provider),其中一些也提供了擴充套件 Apache Airflow secret 後端能力的 handler。您可以在 Secret 後端 中檢視所有這些 provider。

開發自己的 Secrets 後端

secrets 後端是 airflow.secrets.base_secrets.BaseSecretsBackend 的子類,並且必須實現 get_connection()get_conn_value() 來檢索連線,實現 get_variable() 來檢索變數,實現 get_config() 來檢索 Airflow 配置。

編寫完後端類後,在 airflow.cfg[secrets] 部分的 backend 鍵中提供完全限定類名。

您的 SecretsBackend 的額外引數可以在 airflow.cfg 中配置,透過向 backend_kwargs 提供 JSON 字串,該字串將傳遞給您的 SecretsBackend 的 __init__ 方法。更多詳情請參見 配置,示例請參見 SSM Parameter Store

適配非 Airflow 相容的連線 Secret 格式

Secret 後端的預設實現要求使用 Airflow 特定的格式來儲存連線的 secrets。目前大多數社群提供的實現要求連線以 JSON 或 Airflow 連線 URI 格式儲存(參見 Secret 後端)。然而,有些組織可能需要以其他方式儲存憑據(密碼/token 等)。例如,如果同一憑據儲存需要用於多個數據平臺,或者您正在使用的服務具有內建的憑據輪換機制,但該機制與 Airflow 特定格式不相容。在這種情況下,您需要按照前一章所述,開發自己的 secret 後端,可能需要擴充套件現有的 secrets 後端並使其適應您組織使用的方案。

此條目有幫助嗎?