Fernet
Airflow 使用 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