Azure Keyvault - “操作”列表“不受远程磁带保险库策略”允许但所有权限都被检查
问题描述:
我正在使用AAD应用程序访问带有.NET客户端的KeyVault。尽管为这个AAD应用程序启用了秘密下的所有权限(下面的屏幕截图),但如果我导航到“秘密”面板,则会收到“操作”列表“未在此密钥保管库的访问策略中启用”。Azure Keyvault - “操作”列表“不受远程磁带保险库策略”允许但所有权限都被检查
我希望能够通过AAD应用程序设置权限,因此使用Powershell不会是一个选项。
如果我通过Powershell设置权限 - 它确实有效。
我如何创建我的访问策略:
var accessPolicy = new AccessPolicyEntry
{
ApplicationId = app,
ObjectId = Obid,
PermissionsRawJsonString = "{ \"keys\": [ \"all\" ], \"secrets\": [ \"all\" ], \"certificates\": [ \"all\" ] }",
TenantId = ten,
};
return accessPolicy;
则列表错误出现,所以我不得不使用
Set-AzureRmKeyVaultAccessPolicy -VaultName vaultname -ResourceGroupName location -ObjectId obid -PermissionsToKeys all -PermissionsToSecrets all
这将让摆脱错误,但我更喜欢一个解决方案,所以我可以使用.NET SDK来解决。
答
经过多年尝试对此问题进行排序 - 问题出在访问策略代码中。当用户在代码中注册时 - 它将自己与应用程序ID关联。应用程序ID是问题,因为它认为用户是应用程序和用户。
如果您进入门户网站,然后访问Keyvault上的“访问策略”,它会在下面显示Application + User。如果你尝试添加一个用户(已经在列表中) - 它会添加第二个用户 - 所以你会有2个相同的。
所以这是需要的所有是:
var accessPolicy = new AccessPolicyEntry
{
ApplicationId = app, // Delete this line
ObjectId = Obid,
PermissionsRawJsonString = "{ \"keys\": [ \"all\" ], \"secrets\": [ \"all\" ], \"certificates\": [ \"all\" ] }",
TenantId = ten,
};
return accessPolicy;
微软文件有时可以是模糊的,我相信这是其中之一。
答
当您进入Azure门户时,您是否看到此错误?您使用什么身份登录Azure门户?该身份是否具有密钥保管库的秘密列表权限?
答
我有同样的问题和解决办法是让我的保管库的Access Policies
刀片,然后点击我的申请,并于Key permissions
/Secret permissions
是的,我的,当我浏览门户网站看到此错误激活
List
到“秘密”或“钥匙”窗格。您所看到的截图是针对我登录的帐户。 – Pikapops您的用户身份是否有权列出密码? –
是的,它确实:) – Pikapops