Fernet¶
Airflow 使用 Fernet 來加密連線配置和變數配置中的密碼。它保證使用 Fernet 加密的密碼在沒有金鑰的情況下無法被篡改或讀取。Fernet 是對稱(也稱為“秘密金鑰”)認證加密的一種實現。
首次啟動 Airflow 時,會生成帶有預設配置和唯一 Fernet 金鑰的 airflow.cfg 檔案。該金鑰儲存在 [core] 部分的 fernet_key 選項中。
您也可以使用環境變數配置 Fernet 金鑰。這將覆蓋 airflow.cfg 檔案中的值。
# Note the double underscores export AIRFLOW__CORE__FERNET_KEY=your_fernet_key
生成 Fernet 金鑰¶
如果您需要生成新的 Fernet 金鑰,可以使用以下程式碼片段。
from cryptography.fernet import Fernet fernet_key = Fernet.generate_key() print(fernet_key.decode()) # your fernet_key, keep it in secured place!
輪換加密金鑰¶
一旦連線憑據和變數使用 Fernet 金鑰加密,更改金鑰將導致現有憑據解密失敗。要在不使現有加密值失效的情況下輪換 Fernet 金鑰,請將新金鑰前置到 fernet_key 設定中,執行 airflow rotate-fernet-key,然後從 fernet_key 中刪除原始金鑰。
將
fernet_key設定為new_fernet_key,old_fernet_key執行
airflow rotate-fernet-key使用新 Fernet 金鑰重新加密現有憑據將
fernet_key設定為new_fernet_key