apolloconfig / apolloconfig/apollo
敏感字段加密存储方案
- Lenguaje dominante
- Java
- Estrellas
- 29.8k
- Forks
- 10.2k
- Merge medio
- 4 d 7 h
- PR fusionados (30 d)
- 4
Descripción
**概要**
目前数据库密码等敏感信息在配置文件或apollo中使用明文保存,存在一定的安全隐患。现计划依托apollo配置中心,提供一套配置秘钥文件加密和解密方,实现密码以密文存在,仅在程序运行时能够解密到明文。
**方案**
1、在创建APPID时,动态生产一对RSA秘钥,存储在数据库中。
2、“添加”,“修改”配置页面增加“加密”选项,如果选择“加密”复选框后,利用“步骤1”中生产appid公钥加密,参考 jasypt 项目以 ENC(xxxxxxxxxxxxx) 包装需要加密后的内容,存储到数据库中。
3、客户端基于“前缀 ENC(” 和 “后缀 )” 来判断是否需要进行额外的解密动作,对于需要解密的内容,每次生成一对RSA“客户端秘钥”。以 “客户端公钥”、“待解密密文“,“APPID” ,"Rnd随机数"为参数构造请求调用Config Server接口进行解密操作。
4、Config Server,基于APPID对应的RSA 私钥(第1步创建保存到数据库中的),对“待解密密文”进行解密,并将解密后的明文,使用“客户端公钥”进行加密后返回客户端。同时结合明文和"Rnd随机数"计算一个MD5值
5、客户端使用RSA私钥(第3步生成)解密后,并校验MD5值,校验通过后供应用程序使用, 否则在客户端层面直接报错不允许程序启动
**优点**
- 复用apollo平台,修改量较小
- 在脱离允许环境后,无法对密码进行反解
**缺点**
- apollo平台变成了应用的一个强依赖平台,当apollo平台整体不可用的情况下,应用程序重启时会应为密文无法解密而启动失败。
- 不法分子在运行环境内部,可以通过对client逻辑分析后,构造模拟报文,调用config server解密密文信息。
所作的修改: https://github.com/ctripcorp/apollo/compare/v1.6.2...tangxy:v1.6.2-addon?expand=1
目前功能已实现,不知这样的功能能否加入到apollo大家庭中。
Guía de contribución
Evaluación
Este issue todavía no se ha evaluado.