如何配置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角色的固定ID18d7d88d-d35e-4fb5-a5c3-7773c20a72d9是User Access Administrator角色的固定ID- 条件逻辑:
- 执行创建/更新角色分配(
write操作)时,要么不触发该操作,要么请求分配的角色ID不在上述两个高权限角色ID列表中 - 执行删除角色分配(
delete操作)时,要么不触发该操作,要么要删除的角色ID不在上述两个高权限角色ID列表中
- 执行创建/更新角色分配(
设置后,用户将无法分配或删除Owner和User Access Administrator这两个高权限角色,可正常分配其他所有角色。
内容的提问来源于stack exchange,提问作者user5646231
相关产品推荐
相关产品推荐

