Azure Web应用程序配置设置中的“密钥库参考错误”

问题描述

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

问题

我通过设置不断收到以下错误消息

❌密钥库参考

也显示在这里:

enter image description here

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

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

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

还,我已经将Web应用程序添加到了天蓝色密钥库的访问策略中

编辑1:

存在格式错误,我的密码名称错误,因此以下格式有效:

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

但是我遇到了一个新错误:

关键保管库参考无法解析,因为站点受管 身份未启用 MSINotEnabled

因此,我转到了Web应用程序的“身份”标签,并打开了该应用程序的托管身份。

我现在遇到以下错误:

Key Vault参考无法解析,因为站点 拒绝访问Key Vault参考的保管库。

我找到了多个站点,这些站点说如果您只是删除设置,保存并重新添加设置,它应该可以解决。这个DID对我不起作用。

我还尝试了在azure密钥库访问策略中向Web应用授予“完全访问”权限。

解决方法

首先,参考格式@Microsoft.KeyVault(https://myvault.vault.azure.net/secrets/myCertName/versionGUID)是错误的,应为@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/myCertName/versionGUID)

第二,我认为您没有正确授予Web应用的MSI许可。

根据您的原始帖子中的描述:

还,我已经将Web应用程序添加到了天蓝色密钥库的访问策略中

然后在您的 EDIT 1 中:

因此,我转到了Web应用程序的“身份”标签,并打开了该应用程序的托管身份。

显然顺序是错误的,如果您之前未启用应用的MSI,如何将其添加到访问策略中?我想您可能添加了错误的内容。

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

1。导航到Web应用程序-> Identity->复制Object ID(还要确保您使用的是系统分配的MSI,密钥库参考功能不支持用户分配的MSI )

enter image description here

2。然后在步骤1中的Access policies的密钥库的Add Access Policy-> Object ID-> seacrh中,并与Get添加权限,如下所示->选择并保存。

enter image description here

3。导航至应用程序并进行检查,它可以正常工作。

enter image description here

,

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

如果您在保险柜的访问策略设置页面上看到与“网络访问控制”相关的警告,则您需要允许您应用的 IP 通过 Key Vault 防火墙。

Azure Key Vault: Network restrictions warning

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

Azure Key Vault: Allow IP through the Firewall

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...