使用 Azure KeyVault 存储连接字符串与使用 ASP.net IIS_Reg 进行加密有啥区别?
Posted
技术标签:
【中文标题】使用 Azure KeyVault 存储连接字符串与使用 ASP.net IIS_Reg 进行加密有啥区别?【英文标题】:What is the difference between connection string storage with Azure KeyVault and encryption with ASP.net IIS_Reg?使用 Azure KeyVault 存储连接字符串与使用 ASP.net IIS_Reg 进行加密有什么区别? 【发布时间】:2021-12-24 22:45:02 【问题描述】:最近通过 Azure Key Vault 存储了我们的项目连接字符串,并使用 Azure Key Vault 配置生成器为我们的本地构建检索它们。这让我们摆脱了源代码控制存储库中的连接字符串。一位开发人员告诉我,我应该考虑使用 ASP.NET IIS_Reg 进行加密,因为它是 web.config 秘密加密的“事实上的标准”。我真的找不到任何比较这两种技术的文档。是否有可能/尝试并使用两者是否是多余的?可以同时使用吗?
【问题讨论】:
【参考方案1】:如果您现在使用 Azure Key Vault,那么我会继续这样做,因为与在 web.config 中加密内容相比,这是一种更面向未来的方法。特别是如果您以后想迁移到 .NET Core,那么您仍然可以继续使用 AKV。
在 web.config 中加密东西只是管理起来很痛苦。使用 AKV,您可以对您的秘密进行版本控制,并且您可以更好地控制谁可以访问什么。
【讨论】:
感谢您的回答。我感到压力很大,需要提供更多证据来证明我为什么选择不这样做。有没有我可以指出的文件说明这一点? 如果您使用的是 SQL Server,那么您可以使用 IIS 身份连接到您的数据库,然后您不需要加密您的连接字符串,因为它们不包含任何密码。除此之外,我没有任何好的参考可以指出。或者,您可以将您的秘密保存在 web.config/IIS-folder 之外,例如在外部配置文件或注册表中。如果黑客在你的机器里面,那么它的游戏就结束了。 另一件事是,当您在 web.config 中加密内容时(据我所知),加密的数据与运行它的机器相关联。所以如果你需要重建你的机器或横向扩展,那么你需要重新加密 web.config 中的所有内容。以上是关于使用 Azure KeyVault 存储连接字符串与使用 ASP.net IIS_Reg 进行加密有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
利用KeyVault来加强存储Azure Storage访问密钥管理
您应该为 VNET 专用终结点的每个 Azure 资源(CosmosDB、KeyVault、存储)创建多个子网还是只使用一个?
如何在 Azure Function 代码中使用访问密钥(由 Azure Vault 管理)连接存储