如何创建自定义Azure角色以允许用户向Key Vault添加访问策略?

时间:2020-05-20 21:06:23

标签: azure azure-keyvault

我正在为Key Vault创建自定义角色,该角色将为用户提供以下功能:

  • 生成/导入“密钥,秘密和证书”

  • 添加新内容并管理现有的访问策略

我们正在寻求遵循特权最少的访问原则,因此,我从“读取”角色开始,并逐个添加权限以实现最低功能。

我从读取角色的克隆开始,并添加了Microsoft.KeyVault/vaults/accessPolicies/write,因为它使用户可以Update an existing access policy by merging or replacing, or add a new access policy to a vault.

但是我分配了此角色的用户说他们无法添加访问策略。我在Keyvault下看不到其他任何与策略相关的权限。

我认为也许他们需要Microsoft.KeyVault/vaults/write,但这将使用户能够创建新的保管库。

我在做什么错?预先感谢。

1 个答案:

答案 0 :(得分:1)

在Azure密钥库中,有管理平面权限和数据平面权限,如果要add new and manage existing access policies,则获得该权限的用户可以在访问策略中添加/更新自己,因此实际上它包括{{1 }}。因此,实际上您的目标只是generate/import ‘Keys, Secrets and Certificates'。如果您只想要add new and manage existing access policies,例如generate/import,我认为您的要求有冲突。

对于Get/Listadd new and manage existing access policies是不够的,您还需要Microsoft.KeyVault/vaults/accessPolicies/write。我用一个刚刚在Powershell Set-AzKeyVaultAccessPolicy中获得Microsoft.KeyVault/vaults/write权限的用户进行测试,该错误提到了这一点。

enter image description here

因此,在您的情况下,您的选择是使用如下所示的自定义角色。

Microsoft.KeyVault/vaults/accessPolicies/write

但这将使用户能够创建新的保管库。

不必担心,您只需要在特定的密钥库范围内为用户分配自定义角色(选择一个密钥库-> { "Name": "Keyvault test", "Id": "e00236fe-0057-4a8b-bfee-890f757c3d38", "IsCustom": true, "Description": "test", "Actions": [ "Microsoft.KeyVault/vaults/read", "Microsoft.KeyVault/vaults/write", ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/xxxxxxxx" ] } ),他将无法创建其他密钥库。 / p>

enter image description here