-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Description
需求描述(Describe)
- 基于安全考虑,配置文件中的密码字段需要支持加密存储。
- 由于历史原因,配置文件中可能同时存在加密密码和明文密码,系统需要能够:
- 自动识别并解密加密的密码
- 如果解密失败(可能是明文密码),则使用原文本,避免程序崩溃
实现方案
-
核心函数实现 (
pkg/dms-common/pkg/aes/aes.go)- 新增
SafeDecryptPassword函数,提供安全的密码解密功能 - 使用
defer+recover机制捕获解密过程中的 panic - 如果解密失败或发生 panic,记录警告日志并返回原文本
- 支持传入 logger 和字段名称,便于日志追踪
- 新增
-
配置读取集成 (
internal/apiserver/conf/options.go)- 在
ReadOptions函数中集成SafeDecryptPassword - 对数据库密码 (
ServiceOpts.Database.Password) 进行解密 - 对 CloudBeaver 管理员密码 (
CloudbeaverOpts.AdminPassword) 进行解密 - 保持向后兼容,支持明文和加密两种格式
- 在
-
支持加密字段
- dms dbpassword
- cb password
- odc password
- sqle dbpassword (用secret_mysql_password字段来存储)
使用方法
使用示例
使用默认密钥(推荐)
# 通过命令行参数
dms-gen-secret-pass --password "mypassword"
# 通过标准输入
echo "mypassword" | dms-gen-secret-pass --stdin
使用自定义密钥
# 通过命令行参数
dms-gen-secret-pass --password "mypassword" --secret-key "your-secret-key"
# 通过标准输入
echo "mypassword" | dms-gen-secret-pass --stdin --secret-key "your-secret-key"