gpt4 book ai didi

c# - 如何在托管于共享服务器上的 ASP.Net Core 3.1 应用程序中存储诸如连接字符串之类的生产 secret

转载 作者:行者123 更新时间:2023-12-03 16:48:06 25 4
gpt4 key购买 nike

也许我的问题已经有答案了,但我找了很久也没找到。

我的用例如下:我有一个 ASP.Net Core 3.1 Web 应用程序。它使用 MSSQL 数据库来存储一些信息(仅供引用,我不存储任何用户的 secret ,但这些信息对我来说仍然很有值(value))。它还使用电子邮件客户端来发送电子邮件。我需要存储数据库的连接字符串以及电子邮件客户端的凭据。到目前为止,我将它们存储在 appsettings.json 文件中,直到我意识到它们是以纯文本形式存储的,如果有人访问它们,他/她将可以访问我的数据库和电子邮件客户端。

现在我正在寻找一种更安全地存储它们的方法。在阅读了 SO 中的问题后,我了解到存储此类信息的建议方法是使用 Azure Key Vault。我可以使用它,并开始更新我的应用程序以使用它(我读到我可以在 Azure 外部访问它)。但我开始意识到我需要在某处存储 Vault URL、ClientID 和 ClientSecret 值。

我该如何存储它们。在其中一个教程中,他们将它们放在 appsettings.json 文件中,但他们说这对于生产来说不是一个好方法,这是可以理解的。建议的选项是将它们存储在环境变量中。但我的问题来了 - 我托管在共享服务器上,无法添加任何环境变量。因此,使用环境变量对我来说不是一个选择。

就我而言,当我无法添加任何环境变量时,存储任何生产 secret (例如数据库连接字符串)的最佳方法是什么? Azure Key Vault 仍然是一个有效且好的选择吗?我是否应该考虑将它们保留在 appsetting.json 中并加密该文件?或者也许还有另一种更好的方法?

只有我在开发该应用程序,而且我不会将其存储在任何公共(public) GitHub 存储库或任何其他内容中。

PS:这是我正在查看的教程的链接:Using Azure Key Vault From A Non-Azure App

谢谢。

编辑:这是一个我认为有用的教程 Use Azure Key Vault With Certificate Outside of Azure

最佳答案

有两件事:

1-您应该将 secret 存储在 Azure Key Vault 中。正如您已经注意到的,它将提供一个 URL,用于从 Key Vault 检索 key 。

2-只有允许的服务才能检索 secret 。您需要做的是为您的 Web 应用程序创建一个管理身份,然后向此托管身份授予对 Key Vault 中的 GET/LIST secret 的访问权限。

这是一步一步:

https://learn.microsoft.com/en-us/azure/key-vault/general/tutorial-net-create-vault-azure-web-app

关于c# - 如何在托管于共享服务器上的 ASP.Net Core 3.1 应用程序中存储诸如连接字符串之类的生产 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63567159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com