我的Java Web应用程序需要访问某些密码。我已将应用程序配置为从环境变量中读取这些密码。当我将应用程序部署到tomcat时,这些环境变量存储在setenv.sh
文件中,如此
export SOME_PWD="somvalue"
有没有更好的方法来做到这一点,以便它们不以明文形式存储?我想在我的git存储库中维护setenv.sh
以跟踪更改并轻松地进行CI部署,并且不愿在我的存储库中保留明文密码。
答案 0 :(得分:1)
如果您使用的是Linux并且环境变量包含机密,那么您已经在尝试使用用于启动JVM进程的shell脚本中保护它们而打错了。
Linux通常有一个/proc
文件系统,每个进程都有一个虚拟目录,每个进程目录都有一个environ
文件,系统中的任何用户都可以转储该进程的环境。 / p>
因此,您需要保护的不仅仅是包含环境变量export
行的文件。我认为标准的UNIX文件权限可以充分保护shell脚本。如果您不信任您的管理员,您的系统永远不会被视为安全。
您应该考虑更改应用程序以从可以受到类似保护的文件(文件权限)加载这些配置参数,而不是使用进程的环境"为此目的。