[英]Why should I use User secrets only in the Development environment?
我必須將密鑰保存在項目和存儲庫之外。 為此,我想使用用戶機密 。 但它寫在那里,
僅當應用程序在開發環境中運行時才調用AddUserSecrets,如以下示例所示
我無法理解或找不到原因。 為什么我不能在生產環境中使用它?
您可以在提供給User Secrets文檔的鏈接中找到它:
Secret Manager工具不會加密存儲的機密,也不應將其視為受信任存儲。 它僅用於開發目的。 鍵和值存儲在用戶配置文件目錄中的JSON配置文件中。
用戶機密基本上是用戶目錄中某處的JSOn
文件。 這適用於你的開發者。 但是在生產系統上,值通常應該通過更多生產就緒配置系統注入,例如Environment Variables
, appsettings.json
或azure keyvault
。 Envs
和appsettings
每默認情況下已經被激活。
我認為簡短的回答是,如果你願意,你可能會這么做,但這不是它的目的。
我的理解是,用戶秘密的主要目的是保持憑證不受源代碼控制。 在GitHub和雲之前的日子里,大多數開發人員只是在web.config中粘貼了所有憑據,而且大部分都可以。 然后很多人開始使用公共存儲庫和AWS,突然之間https://www.zdnet.com/article/trufflehog-high-entropy-key-hunter-released-to-the-masses/
現在有很多不同的工具來管理秘密,哪一個最適合你的需求是一個更難的問題,但你可以考慮:
我只是在CreateDefaultBuilder
方法中CreateDefaultBuilder
並找到了這個,這可能是相關的:
if (hostingEnvironment.IsDevelopment())
{
Assembly assembly = Assembly.Load(new
AssemblyName(hostingEnvironment.ApplicationName));
if (assembly != (Assembly) null)
config.AddUserSecrets(assembly, true);
}
顯然你不必使用默認版本,你可以為所有環境添加秘密,但它確實存在。
這是一個僅限開發時間的工具。 在文件中存儲任何類型的秘密都是有風險的,因為您可能會意外地將其簽入。在生產中,您可以使用環境變量來保存機密(或任何其他更安全的機制)。
雖然環境變量是Web開發中最常用的選項之一,但有一些原因可能不是最佳方法:
1.流程隱含地可以使用環境,並且很難跟蹤訪問。 因此,例如,當您的錯誤報告包含您的秘密時,您可能會遇到這種情況
2.整個環境傳遞給子進程(如果沒有明確過濾)。 因此,您的密鑰可隱式地提供給可能使用的任何第三方工具。
所有這些都是今天像Vault這樣的產品變得流行的原因之一。
因此,您可以使用環境變量,但請注意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.