DBeaver导出的连接配置文件默认不脱敏密码,其内置加密因密钥硬编码而等同于明文;导出前必须手动清空或替换password、sshPassword等敏感字段为占位符,并命名-template.json、存私有仓库。

直接导出的 DBeaver 连接配置文件(.dbeaver-data-source.json)默认**不脱敏密码等敏感字段**,而是用内置加密算法保护——但这种“加密”是 DBeaver 自研的、密钥硬编码在客户端里的,本质等同于明文。团队共享前若不处理,等于把解密后的密码暴露给所有人。
导出前必须手动清空或替换密码字段
DBeaver 的「导出连接」功能不会自动屏蔽或掩码密码,它只是把当前配置序列化为 JSON,其中 password 字段值是已解密后的明文(哪怕界面上显示为 ●●●)。你看到的“安全”,只是 UI 层的遮蔽。
- 打开数据源配置 → 「编辑连接」→ 切换到「连接设置」标签页
- 手动将
password字段清空,或填入占位符如***REDACTED*** - 再点击「导出」生成 JSON 文件,此时导出内容中
"password": "***REDACTED***"是安全的 - 如果使用了 SSH 隧道或代理,同样要检查并清理
sshPassword、proxyPassword等字段
为什么不能依赖 DBeaver 自带的加密机制
DBeaver 的密码加密逻辑(见 DataSourceSerializerLegacy.java)使用的是固定密钥和简单 AES/CBC 模式,且密钥随客户端版本硬编码发布。任何能拿到 DBeaver JAR 包的人,5 分钟内就能复现解密过程——这不是保密,是掩耳盗铃。
- 加密仅用于本地磁盘存储防误读,不是为跨人共享设计的
- 导出的 JSON 文件本身不包含加密上下文,
password字段在导出时已解密落盘 - Git 提交该文件 = 提交明文密码(除非你额外用 git-crypt 或 SOPS 封装)
团队共享时推荐的最小安全动作清单
别指望一个 JSON 文件解决所有问题。真正落地的共享,靠的是流程约束 + 显式标记 + 权限隔离。
- 导出前:清空所有
password、sshPassword、privateKey(如有)字段,改用占位符 - 文件命名:加后缀
-template.json,例如prod-mysql-template.json,明确表示“需人工补全” - 配套文档:在 README.md 里写清楚哪些字段必须修改、认证方式(SCRAM-256?MD5?)、是否需开启 SSL 及
sslmode=require - 权限控制:该模板文件只放私有 Git 仓库,禁止上传至公开分支或 CI 构建上下文
最常被忽略的一点:脱敏不是对密码做星号替换,而是让连接配置本身**不具备直接连通能力**。只要导出的文件里还留着可解密的密码字段,就等于把钥匙挂在门把手上——别人进不进得去,只取决于他愿不愿意伸手转一下。











