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 後端並使其適應您組織使用的方案。