You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Azure合格角色分配条件,排除Owner与用户访问管理员角色?

Azure合格角色分配条件调整问题

我正在使用REST API调用自动化Azure合格角色分配,当前设置中,Owner合格角色分配仅允许用户分配Reader和Storage Blob Data Contributor等角色。

原API请求如下:

PUT https://management.azure.com/providers/Microsoft.Subscription/subscriptions/subId/providers/Microsoft.Authorization/roleEligibilityScheduleRequests/random_guid?api-version=2020-10-01-preview

{
  "properties": {
    "principalId": "userId",
    "roleDefinitionId":
"/subscriptions/subId/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
    "requestType": "AdminAssign",
    "scheduleInfo": {
      "startDateTime": "2024-07-31T00:00:00Z",
      "expiration": {
        "type": "AfterDuration",
        "endDateTime": null,
        "duration": "P365D"
      }
    },
    "condition":
"((!(ActionMatches{'Microsoft.Authorization/roleAssignments/write'}))
OR (@Request[Microsoft.Authorization/roleAssignments:RoleDefinitionId]
ForAnyOfAnyValues:GuidEquals {acdd72a7-3385-48ef-bd42-f606fba81ae7,
ba92f5b4-2d11-453d-a403-e96b0029c9fe})) AND
((!(ActionMatches{'Microsoft.Authorization/roleAssignments/delete'}))
OR (@Resource[Microsoft.Authorization/roleAssignments:RoleDefinitionId]
ForAnyOfAnyValues:GuidEquals {acdd72a7-3385-48ef-bd42-f606fba81ae7,
ba92f5b4-2d11-453d-a403-e96b0029c9fe}))",
    "conditionVersion": "2.0"
  }
}

我需要调整该条件,使用户可以分配除Owner和User Access Administrator之外的任意角色,避免给他人分配高权限角色。尝试通过否定角色定义ID修改条件时,出现如下错误:

{"error": {  "code": "InvalidCreateOrUpdateRoleAssignmentRequest",  "message": "The given role assignment condition is invalid."  } }

解决方案

Azure角色条件表达式中,要排除特定角色ID不能直接用逻辑非!,需使用NotForAnyOfAnyValues:GuidEquals运算符。修改后的条件如下:

"condition": "((!(ActionMatches{'Microsoft.Authorization/roleAssignments/write'})) OR (@Request[Microsoft.Authorization/roleAssignments:RoleDefinitionId] NotForAnyOfAnyValues:GuidEquals {8e3af657-a8ff-443c-a75c-2fe8c4bcb635, 18d7d88d-d35e-4fb5-a5c3-7773c20a72d9})) AND ((!(ActionMatches{'Microsoft.Authorization/roleAssignments/delete'})) OR (@Resource[Microsoft.Authorization/roleAssignments:RoleDefinitionId] NotForAnyOfAnyValues:GuidEquals {8e3af657-a8ff-443c-a75c-2fe8c4bcb635, 18d7d88d-d35e-4fb5-a5c3-7773c20a72d9}))",
"conditionVersion": "2.0"

关键说明:

  • 8e3af657-a8ff-443c-a75c-2fe8c4bcb635 是Owner角色的固定ID
  • 18d7d88d-d35e-4fb5-a5c3-7773c20a72d9 是User Access Administrator角色的固定ID
  • 条件逻辑:
    1. 执行创建/更新角色分配(write操作)时,要么不触发该操作,要么请求分配的角色ID不在上述两个高权限角色ID列表中
    2. 执行删除角色分配(delete操作)时,要么不触发该操作,要么要删除的角色ID不在上述两个高权限角色ID列表中

设置后,用户将无法分配或删除Owner和User Access Administrator这两个高权限角色,可正常分配其他所有角色。

内容的提问来源于stack exchange,提问作者user5646231

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 08:57:14