【问题标题】:How to securely save sensitive info in setenv.sh如何在 setenv.sh 中安全地保存敏感信息
【发布时间】:2017-05-20 00:41:42
【问题描述】:

我的 Java Web 应用程序需要访问某些密码。我已将应用程序配置为从环境变量中读取这些密码。当我将应用程序部署到 tomcat 时,这些环境变量存储在 setenv.sh 文件中,如下所示

export SOME_PWD="somvalue"

有没有更好的方法可以使它们不以明文形式存储?我想在我的 git 存储库中维护 setenv.sh 以跟踪更改并轻松进行 CI 部署,并且不想在我的存储库中保留明文密码。

【问题讨论】:

  • 查看 Ansible 的 Vault 功能。如果您有相应的密钥,则允许将敏感数据以加密格式存储在存储库中,并在部署期间对其进行解密。但在这种情况下,您应该使用 Ansible 进行部署。
  • 即使是关于Python的,你也会发现一个有趣的讨论in that other post

标签: java tomcat environment-variables


【解决方案1】:

如果您在 Linux 上并且环境变量包含秘密,那么您已经在尝试在用于启动 JVM 进程的 shell 脚本中保护它们,从而进行了错误的战斗。

Linux 通常有一个/proc 文件系统,每个进程都有一个虚拟目录,每个进程目录都有一个environ 文件,系统上的任何用户都可以转储进程的环境。

因此,您需要保护的不仅仅是包含环境变量export 行的文件。我认为标准 UNIX 文件权限可以充分保护 shell 脚本。如果您不信任您的管理员,那么您的系统永远不会被认为是安全的。

您应该考虑更改您的应用程序以从可以类似保护(文件权限)的文件中加载这些配置参数,而不是为此目的使用进程的“环境”。

【讨论】:

    猜你喜欢
    • 2017-09-30
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2015-07-05
    • 2023-01-27
    • 2015-10-12
    • 1970-01-01
    相关资源
    最近更新 更多