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; 

这给了我 enter image description here

则列表错误出现,所以我不得不使用

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门户?该身份是否具有密钥保管库的秘密列表权限?

+0

是的,我的,当我浏览门户网站看到此错误激活List到“秘密”或“钥匙”窗格。您所看到的截图是针对我登录的帐户。 – Pikapops

+0

您的用户身份是否有权列出密码? –

+0

是的,它确实:) – Pikapops

我有同样的问题和解决办法是让我的保管库的Access Policies刀片,然后点击我的申请,并于Key permissions/Secret permissions