如何从Azure现有目录角色提取权限创建自定义目录角色?
创建自定义Azure AD目录角色(含指定权限)
Azure AD目录角色与订阅级RBAC角色是两套独立的权限体系,针对你的需求,以下是创建包含指定权限的自定义目录角色的具体操作步骤:
1. 准备自定义角色定义JSON模板
创建一个JSON文件(例如custom-role.json),内容如下,注意替换<生成唯一GUID>为自己生成的GUID(可通过PowerShell的New-Guid命令生成):
{ "description": "自定义角色:管理用户、组、应用及服务主体", "displayName": "自定义身份管理器", "isEnabled": true, "rolePermissions": [ { "allowedResourceActions": [ "microsoft.directory/users/*", "microsoft.directory/groups/*", "microsoft.directory/applications/*", "microsoft.directory/serviceprincipals/*" ] } ], "templateId": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv", "version": "1.0" }
2. 使用Microsoft Graph PowerShell创建角色
- 安装并连接Microsoft Graph模块:
Install-Module Microsoft.Graph -Force Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory" - 导入角色模板并创建:
$roleDefinition = Get-Content -Path "custom-role.json" -Raw | ConvertFrom-Json New-MgDirectoryRoleDefinition -BodyParameter $roleDefinition
3. 使用Azure CLI创建角色
- 登录Azure账号:
az login - 加载JSON模板创建角色:
az ad role definition create --role-definition @custom-role.json
4. 验证角色并分配权限
- 查看已创建的自定义角色:
PowerShell:
Azure CLI:Get-MgDirectoryRoleDefinition -Filter "displayName eq '自定义身份管理器'"az ad role definition list --filter "displayName eq '自定义身份管理器'" - 将角色分配给用户或组(替换
<角色ID>和<主体ID>为实际ID):
PowerShell:
Azure CLI:New-MgDirectoryRoleAssignment -DirectoryRoleId "<角色ID>" -PrincipalId "<用户/组ID>" -ResourceScope "/"az ad role assignment create --role "<角色ID或显示名>" --assignee "<用户UPN或组ID>"
注意事项
- 必须拥有全局管理员或特权角色管理员权限才能创建自定义目录角色
- 通配符
*会包含对应资源类型的所有操作,若需更细粒度权限,可拆分具体动作(例如microsoft.directory/users/create) - 自定义角色创建后无法直接修改权限,需通过创建新版本或删除重建来调整
- 角色分配后权限可能需要数分钟才能生效
内容的提问来源于stack exchange,提问作者Sanam7
相关产品推荐
相关产品推荐

