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