我在项目中使用了Spring Rabbitmq XML配置。要创建RabbitConnectionFactoryBean,我们为ssl.properties文件资源提供以下属性
keyStore=file:/secret/keycert.p12
trustStore=file:/secret/trustStore
keyStore.passPhrase=secret
trustStore.passPhrase=secret
passPhrases是硬编码的值。我们担心任何获得该系统访问权限的人都可以读取该文件并滥用它。确实,系统管理员和OS应该保护这些文件,但是当不受信任的用户登录时,这可以被视为安全威胁。
在this链接中,Gary建议使用Java配置,我们可以使用它来创建RabbitConnectionFactoryBean,也许可以从系统中读取加密的密码,然后使用setter在bean中进行设置。 但是,由于我们已经在使用XML配置,是否还有其他方法可以保护属性文件中的passPhrases? 相同的配置会在PRODUCTION环境中引起类似的安全问题吗? 请帮助我在上面实现安全性。
答案 0 :(得分:1)
不确定在公众场合说这是否合法,但是我会尽力的。
有一些security token
方法,当您启动项目时,它会请求这样的令牌。管理员(或安全代表)来了,插入了一些特殊的驱动器,输入密码。您的项目从该设备读取属性,填充所有属性并正确启动。那个管理员从USB拉肉驱动器,然后消失了。没有人看到您的应用程序密码!
您可以考虑的另一种解决方案是Config Server。因此,您的属性存储在当前计算机之外的某个地方。