本文介绍如何创建一个在 Microsoft Entra ID 中有权限管理用户和组的企业应用分配的自定义角色。 有关角色分配的元素以及子类型、权限和属性集等术语的含义,请参阅 自定义角色概述。
先决条件
有关详细信息,请参阅 使用 PowerShell 或 Graph 资源管理器的先决条件。
企业应用角色权限
本文中讨论了两种企业应用权限。 所有示例都使用 update 权限。
- 若要读取范围内的用户和组分配,请授予
microsoft.directory/servicePrincipals/appRoleAssignedTo/read 权限
- 若要管理范围内的用户和组分配,请授予
microsoft.directory/servicePrincipals/appRoleAssignedTo/update 权限
授予 update 权限后,被分派人能够管理向企业应用的用户和组分配。 可以针对单个应用程序或针对所有应用程序授予用户和/或组分配的范围。 如果在组织范围级别授予,则被分派人可以管理所有应用程序的分配。 如果在应用程序级别授予,则被分派人只能管理指定应用程序的分配。
授予 update 权限的操作分为两步:
- 使用权限
microsoft.directory/servicePrincipals/appRoleAssignedTo/update 创建自定义角色
- 向用户或组授予权限,以管理向企业应用的用户和组分配。 这时,你可以将范围设置为组织范围级别或单个应用程序。
创建新的自定义角色
在 Microsoft Entra 管理中心,你可以创建和管理自定义角色,以控制对企业应用的访问和权限。
注意
自定义角色是在组织范围级别创建和管理的,只在组织的“概述”页中提供。
以至少特权角色管理员身份登录到 Microsoft Entra 管理中心。
浏览到 Entra ID>角色与管理员。
选择 “新建自定义角色”。
在“基本信息”选项卡上,为角色名称提供“管理用户和组分配”,为角色描述提供“授予管理用户和组分配的权限”,然后选择“下一步”。
在“权限”选项卡上的搜索框中输入“microsoft.directory/servicePrincipals/appRoleAssignedTo/update”,选中所需权限旁边的复选框,然后选择“下一步”。
在“查看 + 创建”选项卡上查看权限,然后选择“创建” 。
使用 Microsoft Entra 管理中心将角色分配给用户
以至少特权角色管理员身份登录到 Microsoft Entra 管理中心。
浏览到 Entra ID>角色与管理员。
选择 “管理用户和组分配 ”角色。
选择“添加分配”,选择所需用户,然后单击“选择”以向用户添加角色分配。
分配提示
若要向被分派人授予权限以管理组织范围内所有企业应用的用户和组访问权限,请从组织的 Microsoft Entra ID“概述”页上组织范围内的“角色和管理员”列表开始操作。
若要授予分配者管理特定企业应用的用户和组访问权限的权限,请转到Microsoft Entra ID 中的该应用,并在该应用 的角色和管理员 列表中打开。 选择新的自定义角色并完成用户或组分配。 被分派人只能管理特定应用的用户和组访问权限。
要测试自定义角色分配,请以被分配者身份登录并打开应用程序的“用户和组”页面,验证“添加用户”选项是否已启用。
有关详细信息,请参阅 在 Microsoft Entra ID 中创建自定义角色 和 分配 Microsoft Entra 角色。
创建自定义角色
使用以下 PowerShell 脚本创建新角色:
# Basic role information
$description = "Can manage user and group assignments for Applications"
$displayName = "Manage user and group assignments"
$templateId = (New-Guid).Guid
# Set of permissions to grant
$allowedResourceAction = @("microsoft.directory/servicePrincipals/appRoleAssignedTo/update")
$rolePermission = @{'allowedResourceActions'= $allowedResourceAction}
$rolePermissions = $rolePermission
# Create new custom admin role
$customRole = New-MgRoleManagementDirectoryRoleDefinition -Description $description `
-DisplayName $displayName -RolePermissions $rolePermissions -TemplateId $templateId -IsEnabled
分配自定义角色
使用此 PowerShell 脚本分配角色。
# Get the user and role definition you want to link
$user = Get-MgUser -Filter "userPrincipalName eq 'chandra@example.com'"
$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "displayName eq 'Manage user and group assignments'"
# Get app registration and construct scope for assignment.
$appRegistration = Get-MgApplication -Filter "displayName eq 'My Filter Photos'"
$directoryScope = '/' + $appRegistration.Id
# Create a scoped role assignment
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -DirectoryScopeId $directoryScope `
-PrincipalId $user.Id -RoleDefinitionId $roleDefinition.Id
使用 Create unifiedRoleDefinition API 创建自定义角色。 有关详细信息,请参阅 在 Microsoft Entra ID 中创建自定义角色 和 分配 Microsoft Entra 角色。
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions
{
"description": "Can manage user and group assignments for Applications.",
"displayName": "Manage user and group assignments",
"isEnabled": true,
"rolePermissions":
[
{
"allowedResourceActions":
[
"microsoft.directory/servicePrincipals/appRoleAssignedTo/update"
]
}
],
"templateId": "<PROVIDE NEW GUID HERE>",
"version": "1"
}
使用 Microsoft Graph API 分配自定义角色
使用 Create unifiedRoleAssignment API 分配自定义角色。 角色分配会将安全主体 ID(可以是用户或服务主体)、角色定义 ID 和 Microsoft Entra 资源范围合并。 有关角色分配元素的详细信息,请参阅 自定义角色概述
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "<PROVIDE OBJECTID OF USER TO ASSIGN HERE>",
"roleDefinitionId": "<PROVIDE OBJECTID OF ROLE DEFINITION HERE>",
"directoryScopeId": "/"
}
后续步骤