密鑰後端

1.10.10 版本新增。

除了從環境變數或中繼資料庫檢索連線和變數之外,您還可以啟用替代的密鑰後端,透過 Apache Airflow 社群提供的後端密鑰後端 中檢索 Airflow 連線或 Airflow 變數。

注意

Airflow UI 僅顯示儲存在 Metadata DB 中的連線和變數,而不顯示透過任何其他方法儲存的。如果您使用替代的密鑰後端,請檢查您的後端以檢視您的變數和連線的值。

您也可以從密鑰後端取得包含敏感資料的 Airflow 組態。請參閱 設定組態選項 以取得更多詳細資訊。

搜尋路徑

當查找連線/變數時,預設情況下,Airflow 將首先搜尋環境變數,然後搜尋中繼資料庫。

如果您啟用替代的密鑰後端,它將首先被搜尋,然後是環境變數,最後是中繼資料庫。此搜尋順序是不可設定的。然而,在某些替代的密鑰後端中,您可能有選項可以篩選在密鑰後端中搜尋哪些連線/變數/組態。請查看您正在使用的密鑰後端的文件,以查看是否有此選項。

警告

當使用環境變數或替代的密鑰後端來儲存密鑰或變數時,可能會產生金鑰衝突。如果後端之間存在重複的金鑰,所有寫入操作都會更新中繼資料庫中的值,但所有讀取操作都將傳回請求金鑰的第一個匹配項,依序為自訂後端、環境變數,最後是中繼資料庫。

組態

[secrets] 區段具有以下選項

[secrets]
backend =
backend_kwargs =

backend 設定為您要啟用的後端的完整類別名稱。

您可以提供包含 json 的 backend_kwargs,它將作為 kwargs 傳遞到您的密鑰後端的 __init__ 方法。

如果您想檢查目前設定的密鑰後端,您可以使用 airflow config get-value secrets backend 命令,如下例所示。

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

支援的核心後端

Apache Airflow 社群提供的密鑰後端

Apache Airflow 社群也發布社群開發的供應商(供應商套件),其中一些也提供處理程序,擴展了 Apache Airflow 的密鑰後端功能。您可以在 密鑰後端 中查看所有這些供應商。

自行開發密鑰後端

密鑰後端是 airflow.secrets.base_secrets.BaseSecretsBackend 的子類別,並且必須實作 get_connection()get_conn_value() 以檢索連線,get_variable() 以檢索變數,以及 get_config() 以檢索 Airflow 組態。

在編寫您的後端類別之後,在 airflow.cfg[secrets] 區段中的 backend 金鑰中提供完整類別名稱。

您的 SecretsBackend 的其他引數可以在 airflow.cfg 中設定,方法是將 JSON 字串提供給 backend_kwargs,這將傳遞到您的 SecretsBackend 的 __init__。請參閱 組態 以取得更多詳細資訊,並參閱 SSM Parameter Store 以取得範例。

調整以適用於非 Airflow 相容的連線密鑰格式

Secret 後端的預設實作需要使用 Airflow 特定的格式來儲存連線的密鑰。目前,大多數社群提供的實作都要求將連線儲存為 JSON 或 Airflow 連線 URI 格式(請參閱 密鑰後端)。但是,有些組織可能需要以其他方式儲存憑證(密碼/權杖等)。例如,如果相同的憑證儲存需要用於多個資料平台,或者如果您使用的服務具有內建的憑證輪換機制,但該機制不適用於 Airflow 特定的格式。在這種情況下,您將需要如前一章所述自行開發密鑰後端,可能需要擴展現有的密鑰後端並使其適應您的組織使用的方案。

此條目是否有幫助?