Java 微服务中的密钥管理
我们有一个dropwizard微服务,可以访问MySQL数据库。目前,我们将数据库访问的加密凭据存储在配置文件(env.properties)中,以便在部署时通过每个环境的ansible脚本对其进行更改 加密密钥是我们解密凭证所需要的,关于如何存储它存在一些争论。 一些选择:Java 微服务中的密钥管理,java,mysql,security,encryption,dropwizard,Java,Mysql,Security,Encryption,Dropwizard,我们有一个dropwizard微服务,可以访问MySQL数据库。目前,我们将数据库访问的加密凭据存储在配置文件(env.properties)中,以便在部署时通过每个环境的ansible脚本对其进行更改 加密密钥是我们解密凭证所需要的,关于如何存储它存在一些争论。 一些选择: 将密钥存储在配置文件中。密钥也是特定于环境的,因为我们使用ansible部署代码,所以凭据和密钥不会存储在microservice存储库中。这里的缺点是加密密码与解密密钥存储在同一个文件中 将密钥存储在启动脚本中,该脚本
- 将密钥存储在配置文件中。密钥也是特定于环境的,因为我们使用ansible部署代码,所以凭据和密钥不会存储在microservice存储库中。这里的缺点是加密密码与解密密钥存储在同一个文件中
- 将密钥存储在启动脚本中,该脚本将值加载到环境变量中。Ops不喜欢这样,因为他们必须管理两个文件。目前,他们只希望管理单个环境属性文件。这是可以理解的,因为我们在管理一个文件时遇到了足够多的问题李>
管理此解密密钥的最佳实践是什么?好的,您可以使用。有第三方模块做类似的事情:他们的方法有点不同:您在某处创建一个单独的密钥文件。然后用这个密钥文件加密一些值。用配置文件中的加密值替换原始值。它们似乎支持RSA密钥对—公钥和私钥。为什么要对conf文件上的凭据进行加密?我们使用信用卡和信用卡。buildbot拥有要解密的密钥,并在conf文件中输入正确的值。没有开发人员能看到这个值。好吧,你可以使用。有第三方模块做类似的事情:他们的方法有点不同:你在某处创建一个单独的密钥文件。然后用这个密钥文件加密一些值。用配置文件中的加密值替换原始值。它们似乎支持RSA密钥对—公钥和私钥。为什么要对conf文件上的凭据进行加密?我们使用信用卡和信用卡。buildbot拥有要解密的密钥,并在conf文件中输入正确的值。没有开发人员可以看到该值。