"Key vault reference error" 在 Azure Web 应用程序配置设置中

"Key vault reference error" in azure web app configuration setting

我有一个由 azure 为 linux 容器的 Web 应用程序生成的私有证书。我想通过 Azure 门户中的 Web 应用程序配置设置将此值传递给我的 .net 核心应用程序。这是管道 CI-CD 过程的一部分,在应用程序配置中指定 Identity Server 键值的能力有助于将这些值保留在源代码之外。

问题

我通过设置

不断收到以下错误

❌Key vault Reference

也显示在这里:

我正在尝试使用 microsoft docs here 建议的格式的秘密值 我试过以下格式:

@Microsoft.KeyVault(https://myvault.vault.azure.net/secrets/myCertName/versionGUID)

@Microsoft.KeyVault(VaultName=myvault;SecretName=myCertName;SecretVersion=versionGUID)

此外,我已将 Web 应用程序添加到 Azure Key Vault 的访问策略中

编辑 1:

存在格式错误,我输入了错误的密钥名称,因此可以使用以下格式:

@Microsoft.KeyVault(https://myvault.vault.azure.net/secrets/myCertName/versionGUID)

然而我运行进入了一个新的错误:

Key Vault reference was not able to be resolved because site Managed Identity not enabled MSINotEnabled

所以我转到网络应用程序的身份选项卡并为该应用程序打开托管身份。

我现在遇到以下错误:

Key Vault reference was not able to be resolved because site was denied access to Key Vault reference's vault.

我发现有多个网站表示,如果您只是删除设置、保存设置,然后重新添加设置,应该可以解决问题。这对我不起作用。

我还尝试在 Azure Key Vault 访问策略中对 Web 应用程序进行 g运行“完全访问”。

首先引用格式@Microsoft.KeyVault(https://myvault.vault.azure.net/secrets/myCertName/versionGUID)错误,应该是@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/myCertName/versionGUID).

其次,我认为您没有正确授予 Web 应用程序的 MSI 权限。

根据您的原文post中的描述:

ALSO, I have added the web app to the access policies of the azure key vault

然后在你的 EDIT 1:

SO I went to the identity tab of the web app and turned on managed identity for the app.

很明显顺序错了,如果你之前没有开启应用的MSI,你如何将它添加到访问策略中?我想你可能加错了。

因此,在您的情况下,请确保您已将 Web 应用程序的 MSI 正确添加到访问策略中。

1.Navigate 到网络应用程序 -> Identity -> 复制 Object ID(还要确保你使用的是 system-assigned MSI,user-assigned Keyvault 参考功能不支持 MSI)

2.Then in the Access policies of the keyvault -> Add Access Policy -> seacrh for the Object ID in step 1 and add it with the Get Secret 权限如下 -> select 并保存。

3.Navigate 到应用程序并检查它,它工作正常。

您的应用应该能够访问 Key Vault 以成功解析引用。如果其他所有内容(例如访问策略和语法)似乎都正常,但您的引用未解析,请尝试检查您的 Key Vault 是否有任何网络限制。

如果您在 Vault 的 访问策略 设置页面上看到与 'network access control' 相关的警告,则需要允许您的应用程序的 IP 通过 Key Vault 防火墙。

将您应用的 IP(在 自定义域 下可用)添加到您的 Key Vault 防火墙(在 Networking 下)。

参考:https://medium.com/geekculture/troubleshooting-azure-key-vault-references-in-azure-function-apps-b228c1216f63