我正在为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
,但这将使用户能够创建新的保管库。
我在做什么错?预先感谢。
答案 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/List
,add new and manage existing access policies
是不够的,您还需要Microsoft.KeyVault/vaults/accessPolicies/write
。我用一个刚刚在Powershell Set-AzKeyVaultAccessPolicy
中获得Microsoft.KeyVault/vaults/write
权限的用户进行测试,该错误提到了这一点。
因此,在您的情况下,您的选择是使用如下所示的自定义角色。
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>