apache / incubator-seata

:fire: Seata is an easy-to-use, high-performance, open source distributed transaction solution.
https://seata.apache.org/
Apache License 2.0
25.23k stars 8.76k forks source link

file.conf配置数据库密码不支持加密 #2665

Closed licaibo closed 3 years ago

licaibo commented 4 years ago

Ⅰ. file.conf配置,当使用数据库的时候,好像不支持密码加密

mode = "db"的时候,使用mysql数据库,password希望能够支持对生产数据库的密码加密,现在只能是明文格式,会有密码泄露的风险,能有什么解决方法吗,或者预计在那个版本会加入这个功能?

funky-eyes commented 4 years ago

你希望支持成什么形式?

licaibo commented 4 years ago

你希望支持成什么形式?

希望支持多种形式,md5 、sha等,或者像jasypt在springboot配置加密的形式,然后seata启动的时候支持启动参数传入salt,看看大家有啥好的建议😃

funky-eyes commented 4 years ago

你希望支持成什么形式?

希望支持多种形式,md5 、sha等,或者像jasypt在springboot配置加密的形式,然后seata启动的时候支持启动参数传入salt,看看大家有啥好的建议

太多加密方式不好做处理,你看druid的公私钥加解密的形式适合不,这个也是比较通用的方案.

funky-eyes commented 4 years ago

你希望支持成什么形式?

希望支持多种形式,md5 、sha等,或者像jasypt在springboot配置加密的形式,然后seata启动的时候支持启动参数传入salt,看看大家有啥好的建议

你说的那种应该是密文,而不是明文,不是加解密形式吧.我这边利用druid的特性,加了druid的公私钥加解密,你可以试下#2667 这个pr

codhealer commented 1 year ago

希望有一个类似ConfigSecurityProvider的扩展,这个扩展需要有一个标志,比如配置项是seata.store.db.password=ENC:encryptPassword,这个ENC就是Provider的标志,对应serviceLoader就是enc=io.seata.xxx.EncConfigSecurityProvider。然后在加载配置的过程中,发现有对应的mark,就调用不同的provider进行解密。然后可以内置一些通用的解密算法(比如RSA,AES等),允许外部配置加密的KEY/算法/SALT,进行处理。

pdxgg commented 10 months ago

希望有一个类似ConfigSecurityProvider的扩展,这个扩展需要有一个标志,比如配置项是seata.store.db.password=ENC:encryptPassword,这个ENC就是Provider的标志,对应serviceLoader就是enc=io.seata.xxx.EncConfigSecurityProvider然后在加载配置的过程中,发现有对应的标记,就调用不同的提供商进行解密。然后可以内置一些通用的解密算法(比如RSA,AES等),允许外部配置加密的KEY/算法/SALT,进行处理。

遇到同款问题,因为客户端可以配置在yml中,就可以使用seata.store.db.password = ENC(encryptPassword) ,seata.store.db.user= ENC(encryptUser)但是服务端属于没有springboot可以引入加密方法。