6

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

我的代码创建 Azure KeyVault,授予对 Azure AD 应用程序对象 ID 的机密和密钥的“全部”权限。我使用 Powershell 检索 KeyVault 并查看访问策略来验证这是否发生。

当我尝试使用 KeyVaultClient.SetSecretAsync() 在此 KeyVault 上创建机密时,我收到一条异常消息,提示“不允许操作 'set'”。状态码为“禁止”。

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

4

2 回答 2

11

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

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

Get-AzureRmADServicePrincipal -ServicePrincipalName <app client ID>
于 2016-10-12T15:29:30.400 回答
3

现在,您可以在 Key Vault 设置的访问策略刀片中找到所有有权访问 Key Vault 的已注册应用程序。

我已在此处为需要帮助的任何人记录了使用 Azure 门户创建和使用服务主体的过程。

于 2018-03-29T02:08:48.247 回答