如何在Airflow中加密变量?将‘Is Encrypted’列改为True
Airflow JSON变量加密及修改Is Encrypted状态步骤
前提说明
Airflow变量的加密完全依赖FERNET_KEY配置,已存在的未加密变量不会自动转为加密状态,需要手动重新设置才能让Is Encrypted列变为True。
步骤1:确认FERNET_KEY配置有效性
- 检查Airflow配置文件(
airflow.cfg)中的fernet_key项,确保配置了有效密钥。 - 若未配置或需要生成新密钥,执行以下命令生成:
airflow users generate_fernet_key - 将生成的密钥替换到
airflow.cfg的fernet_key字段,然后重启Airflow的webserver、scheduler等服务。
步骤2:重新加密已存在的未加密JSON变量
方法一:通过Airflow UI操作
- 进入Airflow后台的「Admin」→「Variables」页面,找到目标JSON变量。
- 点击「Edit」按钮,将原JSON值重新粘贴到「Value」输入框,点击「Save」保存。
- 保存完成后,系统会自动用
FERNET_KEY加密该值,Is Encrypted列会切换为True。
方法二:通过CLI命令操作
- 导出所有变量到本地文件(找到目标变量的key和JSON值):
airflow variables export variables.json - 删除原未加密变量:
airflow variables delete <你的变量key> - 重新设置加密后的变量:
(注意:JSON值需用单引号包裹,避免特殊字符解析问题)airflow variables set <你的变量key> '{"key1": "value1", "key2": "value2"}'
步骤3:验证加密状态
- 返回「Variables」页面,查看目标变量的
Is Encrypted列是否变为True。 - 也可通过CLI验证:执行
airflow variables get <你的变量key>,若输出为加密后的乱码字符串(而非原JSON),则说明加密成功。
注意事项
FERNET_KEY一旦配置后请勿随意修改,否则已加密的变量将无法解密。- Airflow 2.x版本中,只要
FERNET_KEY有效,UI编辑变量时会自动处理加密逻辑,无需额外操作。 - JSON格式变量的加密逻辑与普通变量一致,无需针对JSON做特殊配置,确保值为合法JSON字符串即可。
内容的提问来源于stack exchange,提问作者Hung Dao
相关产品推荐
相关产品推荐

