c# - 如何从Azure Key Vault读取值

标签 c# azure-keyvault

如果我将 ClientId 和客户端 key 存储在 Web/应用程序配置中,我无法理解 Azure Key Vault 有什么好处。传递基本 URI 或完整 URL 以获取值。

我没有保护应用程序,而是绕过直接读取的内容。但是,如果任何人都可以从 Web 配置中读取值,那么任何人都可以从 Key Vault 中读取值。

只需从 Web 配置中复制 ClientId 和 ClientSecret,将值粘贴到控制台应用程序中,然后只需传递 URI 即可获取值。

我正在虚拟机 (IIS) 中运行我的 Web API(c#)。我需要在 Web 配置中不提供任何值的情况下实现 KeyVault。

最佳答案

从架构上来说,Azure Key Vault 提供了存储应用程序配置设置的简单方法。正如您可能在示例文档中看到的那样,为了访问 key 保管库,我们将客户端 ID 和客户端 key 存储在 web.config 中,这不符合安全设计:

您可以执行以下操作:

  • 您所需的所有设置都需要在 blob/任何类型的存储中采用加密格式,并且只有您的应用程序应该能够在应用程序启动时从 blob 或任何类型的存储中获取配置。 一旦应用程序正确启动,最后一步应该是解密设置并以安全的方式存储在客户端。

这样就不需要公开应用程序的客户端 ID 和 secret 。

此外,我们在 Azure AD 中创建一个服务主体帐户,并提供从 Key Vault 读取数据的访问权限。稍后,我们在调用 Azure AD 身份验证 API 后存储不记名 token ,并使用此 token 访问 key 保管库。

  • 另一种方法是**托管身份**,正如@JackJia指出的那样,托管身份将被视为受信任的资源,并且可以从特定端点获取 token ,而无需任何额外的配置。具体您可以阅读上面的回答。

如果您想进一步讨论,请告诉我,我们很乐意为您提供帮助。

关于c# - 如何从Azure Key Vault读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58872882/

相关文章:

azure - 如何获取孤立 keystore 的列表?

azure - 如何使用 Azure Key Vault 缓存数据?

c# - 在 Azure 上存储 ASP.NET Core 应用程序密码的最佳方法

python - 无法使用 python 访问 azure key Vault secret

c# - 对通用列表进行排序,并允许两个名称始终位于顶部并进行其余排序

c# - 如何验证字段长度

c# - ServiceStack.Redis : PooledRedisClientManager creating way too many connections

c# - 尝试使用 INSERT 方法但不起作用

c# - 如何获取 Roslyn 中 NamedTypeSymbol 的所有适用方法,包括扩展方法?

Azure.Identity.AuthenticationFailedException : ManagedIdentityCredential authentication failed: Service request failed