java - 在生产环境中保护密码

标签 java linux security

我们有一个在 JBoss 和 Linux 上运行的 Java 网络应用程序。生产环境数据库连接参数来自一个只存在于生产环境应用服务器上的配置文件。该配置文件只能由同时运行该应用程序的用户 ID 读取(我们称该用户为 appuser),并且唯一可以登录生产环境服务器并向 appuser 执行 sudo 操作的人是我们的运营团队的成员。生产环境本身与所有其他环境隔离开来。

我们想让它更安全。具体来说,我们希望防止运营团队读取当前在配置文件中的数据库连接密码和其他 key 。

要记住的另一个因素是运营团队负责构建和部署应用程序。

我们有哪些选择?该解决方案需要支持手动重启应用程序以及在操作系统重启时自动启动应用程序。

更新

我现在正在研究的解决方案(向 Adamski 提示他的建议,大致转化为步骤 1):

  1. 为启动/停止应用程序并拥有配置文件和 JBoss 目录树中的所有内容的用户编写 setuid 的包装器可执行文件。

  2. 构建后使用jarsigner 对WAR 进行签名。 WAR的 build 将通过开发来完成。 setuid 包装器将验证签名,确认 WAR 未被篡改。

  3. 更改部署过程以仅部署签名的 WAR。 setuid 包装器还可以将 WAR 移动到 JBoss 部署目录中的适当位置。

最佳答案

为什么不直接为运营团队创建第二个用户来执行 sudo,与您的应用程序的用户 ID 相比,该用户仅具有文件权限的子集?

无需更改代码;漂亮而简单。

关于java - 在生产环境中保护密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7810461/

相关文章:

linux - 如何格式化 rsync -exclude-from 文件,使其排除文件/目录,但包含同一路径中的其他文件/目录

PHP - 安全 MySQL 登录

java - 使用 RestEasy 在 Tomcat 上使用 JAX-RS

java - 使用 Hibernate 从 SQL 查询创建表

linux - 无法将文件从桌面复制到 vmware 上安装的 redhat linux 的 usr/scr 目录

java - 如何从外部 Maven 依赖项中添加排除某些包

sql-server - 了解 SQL Server 加密(通过密码)?

java - 将 blob 数据插入数据库

java - 为什么JUNG中的Forest要扩展DirectedGraph?

linux - 如何导出 LibGDX 游戏