Airflow 峰会 2025 将于 10 月 07-09 日举行。立即注册获取早鸟票!

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 中删除原始密钥。

  1. fernet_key 设置为 new_fernet_key,old_fernet_key

  2. 运行 airflow rotate-fernet-key 使用新 Fernet 密钥重新加密现有凭据

  3. fernet_key 设置为 new_fernet_key

此条目是否有帮助?