如何安全地向要启动的后台应用程序提供敏感信息(例如密码)?

时间:2017-06-28 01:47:08

标签: java security

我正在开发一个应该在后台运行的Java应用程序,并且考虑将一些敏感信息(DB凭据等)外部化,以防它应该更改。这些信息是启动应用程序所必需的。但是,我想知道这样做的正确方法是什么?

我在考虑以下问题但需要从安全角度提出建议。

  1. 加密密码将在启动应用程序时作为主参数传递。但是,我注意到任何用户都可以在查看操作系统中的进程列表时看到参数。

  2. 生成一个外部文件,即带有视图限制的java属性文件(带有加密凭据),并将文件路径传递给应用程序

  3. 将加密的凭据放在用户的环境变量中,以便应用程序访问它

  4. 注意:我们已经使用了加密工具

    就个人而言,我倾向于第二种选择,但我想知道这类案件的建议,意见或最佳做法。

    谢谢!

2 个答案:

答案 0 :(得分:0)

选项2最常见。 就个人而言,我不建议选择1和3。

也可能有其他选择。

例如,您可以查看PicketBox Vault。 它允许使自定义实现比默认更安全。

实际上它是扩展选项2 - 存储在Keystore中的密钥保护的Vault文件。

该密钥库(别名)的密码必须是安全的,但只有一个(两个)。当需要保护许多属性时,它很有用。它也更易于管理,因为所有属性都以同样的方式保存在一个地方。

答案 1 :(得分:0)

2是最明智的选择。 1和3的问题是,一旦他们可以访问“加密”字符串,他们就必须弄清楚你是如何解密它的(无论如何你必须这样做才能使用它)。

您是否看过Spring Cloud Config,我不知道这是否是您的选择。