问题描述
我有azure为Linux容器的Web应用程序生成的私人证书。我想通过azure门户中的Web应用程序配置设置将此值传递给.net核心应用程序。这是管道CI-CD流程的一部分,在应用程序配置中指定Identity Server密钥值的功能有助于将这些值保留在源代码之外。
问题
我通过设置不断收到以下错误消息
❌密钥库参考
我正在尝试使用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 )
2。然后在步骤1中的Access policies
的密钥库的Add Access Policy
-> Object ID
-> seacrh中,并与Get
添加权限,如下所示->选择并保存。
3。导航至应用程序并进行检查,它可以正常工作。
,您的应用应该能够访问 Key Vault 以成功解析引用。如果其他所有内容(例如访问策略和语法)似乎都井井有条,但您的引用无法解析,请尝试检查您的 Key Vault 是否有任何网络限制。
如果您在保险柜的访问策略设置页面上看到与“网络访问控制”相关的警告,则您需要允许您应用的 IP 通过 Key Vault 防火墙。
将应用的 IP(在自定义域下可用)添加到 Key Vault 的防火墙(在网络下)。