簡體   English   中英

ASP.Net 核心如何保護非 Azure 托管中的連接字符串敏感數據

[英]ASP.Net core how to secure connection string sensitive data in non Azure hosting

我是 ASP.Net 核心的新手,我嘗試開發 ASP.Net 核心 MVC Web API。 我需要連接到我的數據庫。 我不知道應該把我的連接字符串放在哪里。 我把它放在 appsettings.json 文件中。 但是當我將 API 部署到非 Azure 托管時,它會公開我的數據庫密碼。 我嘗試了秘密經理,但似乎只是為了開發階段,不確定我是否理解正確。 我嘗試放入環境變量,但在我的 IIS hsoting 中它不起作用。 我可以知道在部署到非 Azure 托管時如何保護我的敏感數據。 我應該放在哪里?

有一個 Azure KeyVault 的模擬,它免費和開源。你可以在那里存儲你的連接字符串和其他敏感數據。還有.net 的客戶端庫

您的主要選擇是:

  • JSON(未加密)
  • 環境變量(未加密)
  • Azure Key Vault(加密)

正如您正確確定的那樣,JSON 將是純文本格式,因此是不可取的,主要是因為源代碼控制。 不過,如果您正在開發一個封閉源代碼的解決方案,這不是什么問題。 一旦部署在服務器上,文件權限可以防止細節被窺探。 用戶機密只是 JSON。 更好的是它被排除在你的項目之外(所以它不會提交給你的源代碼控制),但它仍然以未加密的方式存儲,是的,它僅用於開發。

Azure Key Vault 是唯一允許加密的內置選項,因此是最安全的選項。 無論您的應用是否實際托管在 Azure 中,都可以使用 Azure Key Vault。 但是,它不是免費的(盡管它也不是很貴)。

環境變量是 Azure Key Vault 之外最常用的變量。 雖然未加密,但它們存儲在服務器上(在您的項目之外),並且只有在該服務器上具有足夠權限的用戶才能看到。 如果惡意行為者能夠訪問具有查看環境變量權限的帳戶,則可以說您已經遇到了比暴露數據庫憑據更糟糕的問題。

如果您的應用程序沒有看到環境變量,則需要查看兩件事:

  1. 確保您已將它們添加為系統變量而不是用戶變量。 用戶變量只能由在添加它們時登錄的用戶(即您)訪問,這幾乎肯定不是運行 Web 服務器的同一用戶。 或者,您可以登錄添加 Web 服務器用戶以將變量添加為用戶變量。 這在服務帳戶下運行時很常見。 它增加了一個可疑程度的額外安全性,因為只有一個帳戶可以看到這些值,而不是任何管理員級別的帳戶(較小的攻擊面)。

  2. 如果使用 IIS,您必須編輯應用程序池的高級設置,並從那里啟用“加載用戶配置文件”。

我使用“管理 Web 機密”來保存其他開發人員和團隊成員的數據庫和任何其他重要數據機密

這也將幫助您隔離各種平台

您可以在https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-3.1&tabs=windows閱讀更多信息

暫無
暫無

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

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