如何创建Azure自定义策略以禁止所有者权限用户删除其他所有者用户
实现所有者权限用户无法删除同角色所有者的Azure自定义策略方案
实现逻辑
- 针对Azure RBAC角色分配的删除操作
Microsoft.Authorization/roleAssignments/delete进行管控 - 触发阻断的匹配规则:
- 待删除的角色分配对应的角色为内置所有者角色,角色定义ID为
8e3af657-a8ff-443c-a75c-2fe8c4bcb635 - 发起删除操作的主体自身持有对应范围的所有者权限
- 待删除的角色分配的关联主体不是操作发起者本人(允许用户主动删除自己的所有者权限)
- 待删除的角色分配对应的角色为内置所有者角色,角色定义ID为
- 策略最终效果设置为
Deny,直接拦截符合上述所有条件的删除请求
完整策略定义JSON
{ "properties": { "displayName": "阻止所有者删除其他所有者的角色分配", "description": "禁止持有所有者权限的用户删除同范围下其他所有者的角色分配", "mode": "All", "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Authorization/roleAssignments/delete" }, { "field": "Microsoft.Authorization/roleAssignments/roleDefinitionId", "equals": "[concat(subscription().id, '/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]" }, { "value": "[requestContext().principal.id]", "notEquals": "[field('Microsoft.Authorization/roleAssignments/principalId')]" }, { "value": "[contains(requestContext().principalRoles, '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]", "equals": true } ] }, "then": { "effect": "Deny" } } } }
部署与使用注意事项
- 该策略需要分配到你需要管控的订阅、资源组或者管理组范围,分配后最长15分钟即可生效
- 如果需要适配管理组范围的所有者角色匹配,可以调整角色定义ID的拼接逻辑,改为对应管理组的资源ID前缀即可
- 建议正式开启
Deny效果前,先将effect字段修改为Audit,运行1-2天确认策略没有误拦截正常操作后再切换为阻断模式 - 该策略不会限制持有「用户访问管理员」「全局管理员」等Azure AD目录级高权限角色的用户操作,仅管控通过资源范围RBAC授予所有者权限的主体操作
内容的提问来源于stack exchange,提问作者Aakarsh
相关产品推荐
相关产品推荐

