我们有一个在JBoss和Linux上运行的Java Web应用程序。生产环境数据库连接参数来自一个只存在于生产环境应用服务器上的配置文件。该配置文件只能被运行应用程序的用户ID(我们称其为appuser)读取,而且只有能够登录到生产环境服务器并sudo到appuser的操作团队成员才能访问该文件。生产环境本身与所有其他环境隔离。
我们希望使这更加安全。具体来说,我们希望防止操作团队读取当前配置文件中的数据库连接密码和其他密钥。
还要考虑的另一个因素是,操作团队负责构建和部署应用程序。
我们有哪些选择?解决方案需要支持手动重启应用程序以及在操作系统重新启动时自动启动应用程序。
更新:
我现在正在调查的解决方案(感谢Adamski的建议,大致翻译如下步骤):
1.编写一个包装器可执行文件,它被设置为一个用户,该用户启动/停止应用程序并拥有配置文件和Jboss目录树中的所有内容。
2.在构建完成WAR后使用jarsigner签名。 WAR的构建将由开发完成。 setuid包装器将验证签名,确认WAR没有被篡改。
3.更改部署流程以仅部署签名的WAR。 setuid包装器还可以将WAR移动到Jboss deploy目录中。
我们希望使这更加安全。具体来说,我们希望防止操作团队读取当前配置文件中的数据库连接密码和其他密钥。
还要考虑的另一个因素是,操作团队负责构建和部署应用程序。
我们有哪些选择?解决方案需要支持手动重启应用程序以及在操作系统重新启动时自动启动应用程序。
更新:
我现在正在调查的解决方案(感谢Adamski的建议,大致翻译如下步骤):
1.编写一个包装器可执行文件,它被设置为一个用户,该用户启动/停止应用程序并拥有配置文件和Jboss目录树中的所有内容。
2.在构建完成WAR后使用jarsigner签名。 WAR的构建将由开发完成。 setuid包装器将验证签名,确认WAR没有被篡改。
3.更改部署流程以仅部署签名的WAR。 setuid包装器还可以将WAR移动到Jboss deploy目录中。
cacerts
目录。 - sourcedelica