如何通过Microsoft Graph/PowerShell批量创建带通配符权限的自定义目录角色?
如何通过Microsoft Graph或PowerShell自动化创建带通配符权限的自定义Azure AD目录角色
完全可行,你可以通过Microsoft Graph API或PowerShell(基于Microsoft Graph模块)实现自动化,自动筛选并添加匹配通配符的权限,无需手动逐个选择。以下是具体实现方式:
一、使用Microsoft Graph API实现
1. 筛选匹配通配符的权限
首先调用Graph API获取Microsoft Graph的所有权限,再筛选出符合你指定通配符规则的权限:
GET https://graph.microsoft.com/v1.0/roleManagement/directory/permissionGrants?$filter=resourceAppId eq '00000003-0000-0000-c000-000000000000'
注:
00000003-0000-0000-c000-000000000000是Microsoft Graph的固定资源ID,所有目录权限都归属这个资源。
从返回结果中,提取permissionResourcePath字段,筛选出匹配microsoft.directory/users/*、microsoft.directory/groups/*、microsoft.directory/applications/*、microsoft.directory/serviceprincipals/*的条目。
2. 创建自定义目录角色
调用创建角色定义的API,将筛选出的权限作为允许的资源动作传入:
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions Content-Type: application/json { "displayName": "自定义核心目录管理员", "description": "拥有用户、组、应用、服务主体的全量管理权限", "rolePermissions": [ { "allowedResourceActions": [ "microsoft.directory/users/create", "microsoft.directory/users/read", "microsoft.directory/groups/update", // 此处填入所有筛选出的权限 ] } ], "isEnabled": true }
二、使用PowerShell(Microsoft Graph模块)实现
1. 准备工作
确保已安装Microsoft Graph PowerShell模块,并连接到Graph:
# 安装模块(首次使用) Install-Module Microsoft.Graph -Force # 连接Graph,需要RoleManagement.ReadWrite.Directory权限 Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory"
2. 筛选目标权限
执行以下脚本筛选出匹配通配符的权限:
# 获取Microsoft Graph下的所有目录权限 $allGraphPermissions = Get-MgRoleManagementDirectoryPermissionGrant -Filter "resourceAppId eq '00000003-0000-0000-c000-000000000000'" | Select-Object -ExpandProperty PermissionResourcePath # 筛选符合通配符规则的权限 $targetPermissions = $allGraphPermissions | Where-Object { $_ -like "microsoft.directory/users/*" -or $_ -like "microsoft.directory/groups/*" -or $_ -like "microsoft.directory/applications/*" -or $_ -like "microsoft.directory/serviceprincipals/*" }
3. 创建自定义角色
运行以下命令创建包含目标权限的自定义目录角色:
$roleParams = @{ DisplayName = "自定义核心目录管理员" Description = "覆盖用户、组、应用、服务主体的所有管理权限" RolePermissions = @( @{ AllowedResourceActions = $targetPermissions } ) IsEnabled = $true } New-MgRoleManagementDirectoryRoleDefinition @roleParams
注意事项
- 操作账号需要具备全局管理员或特权角色管理员权限,否则无法创建自定义目录角色。
- 筛选时可根据需要调整通配符规则,避免包含不必要的权限(例如某些敏感权限)。
- 自定义角色创建完成后,可通过
New-MgRoleManagementDirectoryRoleAssignment命令为用户或组分配该角色。
内容的提问来源于stack exchange,提问作者Sanam7
相关产品推荐
相关产品推荐

