我尝试使用Microsoft以编程方式创建Azure KeyVault密钥。 Azure.KeyVault.KeyVaultClient。出于我的目的,我将使用证书作为Azure AD应用程序进行身份验证令牌身份验证。 Azure AD应用程序已在其清单中包含证书信息。
我的代码创建了Azure KeyVault,提供了所有"对Azure AD应用程序的对象ID的密钥和密钥的权限。我使用Powershell验证是否发生了这种情况,以检索KeyVault并查看访问策略。
当我尝试使用KeyVaultClient.SetSecretAsync()在此KeyVault上创建一个秘密时,我得到一个例外,说明"操作'设置'是不允许的。"状态代码为" Forbidden"。
在KeyVault上设置的权限之外,我是否需要确保其他任何权限(例如Azure AD应用程序)?
答案 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为任何需要帮助的人创建和使用服务主体。