从 Azure Key Vault 引用中获取值(托管标识)

Fetch value from Azure Key Vault reference (Managed identity)

我正在尝试从 Azure 应用服务中的 Azure Key Vault 获取机密值。 我的应用服务具有托管标识 在 Azure Key Vault 中,此托管身份被添加到 'Role assignments' 下作为 'Key vault contributor' 还在 azure key vault 中添加了访问策略,以授予 'Get' AppServices 托管身份的权限 现在在我的 c# 代码中,我试图使用代码获取 AppSetting 元素的值 ConfigurationManager.AppSettings['something'];

在我的 Azure 应用程序服务中,在应用程序设置下,我添加了名称为 'something' 的密钥,它的值指向 Key Vault 的引用,如下所示:

@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931)

现在我可以从应用程序设置中检索值,但不是实际值,而是将输出拉为 @Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/c96f02080254f109c51a1f1cdb1931)

我希望输出是我设置的值,而不是 keyvault 引用字符串本身。

我正在使用 .Net MVC 4.7 网络应用程序

正如 junnas 所说,您只需在密钥保管库访问策略中添加 webapp 的 MSI。

1.Turn 在 webapp System-assign 托管身份上。

2.Add 身份进入 keyvault Access policy,具有秘密 Get 权限。

3.Add 将 Key Vault 引用到 webapp 应用程序设置中。

4.UseEnvironment.GetEnvironmentVariable("AppsettingName");获取秘钥

这是输出:

实际上我发现即使使用 ConfiguraionManager.AppSettings["keyname"] 也能正常工作。就我而言,我已完成上面列出的所有操作,但在 App Service 的连接字符串配置中启用了 "Slot Deployment" 选项。启用后,现在我可以访问我的密钥库机密了。