簡體   English   中英

如何安全地為要啟動的后台應用程序提供敏感信息(例如密碼)?

[英]How do you securely provide a sensitive info (e.g. password) to a background application to be started?

我正在開發一個應該在后台運行的Java應用程序,並考慮將一些敏感信息(DB憑據等)外部化,以防它應該更改。 這些信息是啟動應用程序所必需的。 但是,我想知道這樣做的正確方法是什么?

我正在考慮以下問題但需要從安全角度提出建議。

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

  2. 生成外部文件,即具有視圖限制的java屬性文件(帶有加密憑據),並將文件路徑傳遞給應用程序

  3. 將加密的憑據放在用戶的環境變量中,以便應用程序訪問它

注意:我們已經使用了加密工具

就個人而言,我傾向於第二種選擇,但我想知道這樣的案例的建議,評論或最佳做法。

謝謝!

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

還有其他選擇。

例如,您可以查看PicketBox Vault。 它允許使自定義實現比默認更安全。

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

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

2是最明智的選擇。 1和3的問題是,一旦他們可以訪問“加密”字符串,他們就必須弄清楚你是如何解密它的(你無論如何必須這樣做,才能使用它)。

您是否看過Spring Cloud Config ,我不知道這是否是您的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM