You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何解密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代码解密:

  1. 找到Fernet密钥
    • 查看airflow.cfg配置文件的[core] section里的fernet_key字段
    • 或者查看环境变量AIRFLOW__CORE__FERNET_KEY的值(如果是用环境变量配置的话)
  2. 编写解密代码
    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)
    
    注意:如果Airflow配置了多个轮换的Fernet密钥,你可能需要逐个尝试,直到解密成功。

方法3:通过Airflow UI查看(需管理员权限)

如果你有Airflow UI的管理员权限,直接在界面上就能看:

  • 登录Airflow UI,进入Admin -> Connections页面
  • 找到目标连接,点击右侧的Edit按钮
  • 在编辑页面的密码输入框旁边,点击Show按钮,就能看到明文密码

重要提醒

  • 所有这些方法都需要你具备对应的权限——要么能访问Airflow的配置/命令行,要么有UI管理员权限,毕竟密码是敏感信息,Airflow的加密机制就是为了防止未授权访问。
  • 如果Fernet密钥丢失,加密的密码就彻底无法解密了,一定要妥善保管这个密钥!

内容的提问来源于stack exchange,提问作者Deepak Shinde

火山引擎 最新活动