如何修复"操作'设置'不允许"以编程方式创建Azure KeyVault密钥时出错?

时间:2016-10-06 17:06:19

标签: azure azure-keyvault

我尝试使用Microsoft以编程方式创建Azure KeyVault密钥。 Azure.KeyVault.KeyVaultClient。出于我的目的,我将使用证书作为Azure AD应用程序进行身份验证令牌身份验证。 Azure AD应用程序已在其清单中包含证书信息。

我的代码创建了Azure KeyVault,提供了所有"对Azure AD应用程序的对象ID的密钥和密钥的权限。我使用Powershell验证是否发生了这种情况,以检索KeyVault并查看访问策略。

当我尝试使用KeyVaultClient.SetSecretAsync()在此KeyVault上创建一个秘密时,我得到一个例外,说明"操作'设置'是不允许的。"状态代码为" Forbidden"。

在KeyVault上设置的权限之外,我是否需要确保其他任何权限(例如Azure AD应用程序)?

2 个答案:

答案 0 :(得分:8)

问题是Access Policy不需要Azure AD应用程序的对象ID。它实际上需要Azure AD应用程序的服务主体的对象ID。

由于最近在portal.azure.com上添加了“App Registrations”,我们可以轻松获取应用程序的对象ID。但是,Azure AD应用程序的服务主体的对象ID无法通过UI(我可以找到)。你可以通过Powershell获得它:

Get-AzureRmADServicePrincipal -ServicePrincipalName <app client ID>

答案 1 :(得分:0)

现在,您可以在Key Vault设置的访问策略刀片中找到所有可以访问密钥保管库的注册应用。

我已经记录了使用Azure门户here为任何需要帮助的人创建和使用服务主体。