Azure治理需求:禁止分配现有自定义角色给用户的策略咨询
禁止分配自定义角色的Azure策略实现方案
这个需求完全可以实现,通过Azure Policy的Deny效果,拦截订阅或资源组层级的自定义角色分配操作,以下是具体的策略定义及逻辑说明:
完整Azure Policy定义
{ "properties": { "displayName": "禁止在订阅/资源组层级分配自定义角色", "policyType": "Custom", "mode": "All", "description": "阻止所有用户(包括所有者)在订阅或资源组层级将自定义角色分配给任何主体", "parameters": {}, "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Authorization/roleAssignments" }, { "field": "Microsoft.Authorization/roleAssignments/roleDefinitionId", "contains": "/subscriptions/" }, { "anyOf": [ { "field": "location", "equals": "global" }, { "field": "parent.type", "equals": "Microsoft.Resources/resourceGroups" } ] } ] }, "then": { "effect": "Deny" } } } }
策略逻辑说明
- 匹配操作类型:通过
type: Microsoft.Authorization/roleAssignments定位所有角色分配的创建/更新操作 - 筛选自定义角色:自定义角色的定义ID包含订阅路径(
/subscriptions/),而Azure内置角色的ID无此路径,以此区分自定义与内置角色 - 限制作用范围:通过
location: global匹配订阅级操作,parent.type: Microsoft.Resources/resourceGroups匹配资源组级操作,确保只管控这两个层级的分配 - 强制执行拦截:
effect: Deny会直接阻止符合条件的操作,覆盖所有用户(包括所有者)的角色分配权限
注意:若需要豁免特定用户或资源,可通过Azure Policy的豁免功能配置,避免影响必要的运维操作
内容的提问来源于stack exchange,提问作者Shan
相关产品推荐
相关产品推荐

