【发布时间】:2020-12-08 20:00:14
【问题描述】:
我正在使用带有 OpenIdConnect 的 .net core 2.1 和以下 AccessPolicies 创建 azure keyvault
AccessPolicies = new List<AccessPolicyEntry>()
{
new AccessPolicyEntry
{
TenantId = Guid.Parse(tenantId),
ObjectId = objectId,
Permissions = new Permissions
{
Secrets = new List<string> { "all" },
Keys = new string[] { "all" },
Certificates = new string[]{"all" }
}
}
}
现在,我可以使用它来创建 keyvault,但是在转到新创建的 keyvault(在 Azure 门户中)设置刀片 {Key,Secrete,Certificate} 时,它会显示警告 “此密钥保管库的访问策略中未启用“列表”操作。”
注意:- 如上代码“All permission are given”。我可以在azure portal看到。
我尝试过的:- 我已经尝试参考以下堆栈溢出问题的答案
- Azure Keyvault - "Operation "list" is not allowed by vault policy" but all permissions are checked
- How do I fix an "Operation 'set' not allowed" error when creating an Azure KeyVault secret programmatically?
根据上面的stackoverflow答案“需要传递Azure AD应用程序的服务主体的对象ID,而不是Azure AD应用程序的对象ID”。
我尝试使用以下 powershell 脚本找出 azure AD 应用程序的服务主体的对象 ID
Get-AzADServicePrincipal -ServicePrincipalName "<app client ID>"
结果如下
我尝试在 AccessPolicyEntry 的 objectId 中使用“Id”(在上面的屏幕截图中),但没有解决问题。
问题:-
- 是否需要在 AccessPolicyEntry 中设置其他权限?
- AccessPolicyEntry 中的 objectID 应该是什么(目前,我正在提供 Azure AD 应用程序的 obectId)?
- 如果需要服务主体的 objectId。如何以编程方式获取它?
【问题讨论】:
标签: azure azure-keyvault