如何解密Airflow Connection表中存储的连接密码?
解密Airflow连接密码的可行方法
没问题,我来给你捋捋怎么解密Airflow连接表中的密码——核心是得拿到Airflow用的Fernet密钥,因为所有连接密码都是用它加密的。下面是几种靠谱的方法:
方法1:用Airflow官方命令行工具解密
这是最安全也最省心的方式,不需要手动处理密钥,Airflow会自动帮你解密。
- 首先确保你能访问Airflow的运行环境(比如服务器终端、Docker容器内部)
- 执行命令:
airflow connections get <你的连接ID>,比如airflow connections get my_postgres_conn - 命令输出里会包含该连接的所有信息,其中
password字段就是明文密码
方法2:手动用Fernet密钥解密
如果你能拿到Airflow的Fernet密钥,可以写一段简单的Python代码解密:
- 找到Fernet密钥:
- 查看
airflow.cfg配置文件的[core]section里的fernet_key字段 - 或者查看环境变量
AIRFLOW__CORE__FERNET_KEY的值(如果是用环境变量配置的话)
- 查看
- 编写解密代码:
注意:如果Airflow配置了多个轮换的Fernet密钥,你可能需要逐个尝试,直到解密成功。from cryptography.fernet import Fernet # 替换成你的Fernet密钥(注意要加b前缀转成字节类型) fernet_key = b"your_actual_fernet_key_here" cipher = Fernet(fernet_key) # 替换成从connection表中获取的加密密码字符串 encrypted_pwd = "gAAAAAB..." decrypted_pwd = cipher.decrypt(encrypted_pwd.encode()).decode() print(decrypted_pwd)
方法3:通过Airflow UI查看(需管理员权限)
如果你有Airflow UI的管理员权限,直接在界面上就能看:
- 登录Airflow UI,进入
Admin->Connections页面 - 找到目标连接,点击右侧的
Edit按钮 - 在编辑页面的密码输入框旁边,点击
Show按钮,就能看到明文密码
重要提醒
- 所有这些方法都需要你具备对应的权限——要么能访问Airflow的配置/命令行,要么有UI管理员权限,毕竟密码是敏感信息,Airflow的加密机制就是为了防止未授权访问。
- 如果Fernet密钥丢失,加密的密码就彻底无法解密了,一定要妥善保管这个密钥!
内容的提问来源于stack exchange,提问作者Deepak Shinde




