2017-06-28 52 views
1

我正在研究一個應該在後臺運行的Java應用程序,並且正在考慮將其中一些敏感信息(DB憑證等)進行外部化,以防它應該更改。這些信息是爲了使應用程序啓動所必需的。但是,我想知道做這件事的正確方法是什麼?您如何安全地向後臺應用程序提供敏感信息(例如密碼)以啓動?

我在考慮以下內容,但需要從安全角度提出建議。

  1. 加密密碼將在啓動應用程序時作爲主參數傳遞。但是,我注意到任何用戶都可以看到操作系統中的進程列表將被查看時的參數。

  2. 生成外部文件,即java的屬性文件(與加密的憑證)可觀看限制,以及文件路徑傳遞給應用程序

  3. 放入用戶的環境變量的加密憑證爲應用程序訪問它

注:我們已經有了,我們使用

個人的加密工具,我偏向於第二個選項,但我想知道的建議,COMME nts或此類案例的最佳做法。

謝謝!

+0

[ZooKeeper](https://zookeeper.apache.org/)和[Jasypt](http://www.jasypt.org/)用於加密您需要加密的任何內容。 –

+0

嗨,我們已經有一個我們使用的加密工具,將編輯帖子以包含此信息 – byuu

回答

0

2是最明智的選擇。 1和3的問題是,一旦他們有權訪問「加密」字符串,他們都必須弄清楚你如何解密它(你無論如何都必須這樣做,以利用它)。您是否看過Spring Cloud Config,我不知道這是否是您的選擇。

+0

感謝您的建議。我檢查了Spring Cloud Config,但它看起來太過矯枉過正,用於我們簡單的應用程序。 (我使用普通的java) – byuu

0

選項2是最常見的。 個人而言,我不建議選項1和3.

也可能有其他選項。

舉例來說,你可以看看PicketBox Vault。 它允許自定義實現比默認更安全。

實際上它是擴展選項2 - 存儲在Keystore中的密鑰保護了Vault文件。

該密鑰庫(別名)的密碼必須是安全的,但只有一(2)個。當需要保護很多屬性時,它很有用。它也更易於管理,因爲所有房產都以同樣的方式在同一個地方獲得。

相關問題