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

How to create custom Azure role which allows users to add access policies to Key Vaults?

我正在为 Key Vault 创建一个自定义角色,它将为用户提供以下能力:

我们寻求遵循最低权限访问原则,因此我从 'read' 角色开始,并在粒度基础上添加权限以实现最低限度的功能。

我从读取角色的克隆开始并添加了 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,但这将使用户能够创建新的保险库。

我做错了什么?提前致谢。

在Azure keyvault中,有管理平面权限和数据平面权限,如果你想要add new and manage existing access policies,获得权限的用户可以add/update自己在访问策略中,所以实际上包括generate/import ‘Keys, Secrets and Certificates'。所以你的目标实际上只是 add new and manage existing access policies。如果你只是想要 generate/import 而不是例如Get/List,我觉得你的要求有冲突。

add new and manage existing access policiesMicrosoft.KeyVault/vaults/accessPolicies/write还不够,还需要Microsoft.KeyVault/vaults/write。我用一个刚刚在 powershell Set-AzKeyVaultAccessPolicy 中获得 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"
  ]
}

but that would enable users to create new vaults.

这个不用担心,你只需要在特定的keyvault范围内为用户分配自定义角色(select一个keyvault -> Access control (IAM)),他将无法创建其他密钥库。