分配 Microsoft Entra 角色(预览版)

权利管理支持各种资源类型(例如应用程序、SharePoint 网站、组和 Teams)的访问生命周期。 有时,用户需要额外的权限才能以特定方式使用这些资源。 例如,用户可能需要访问组织的 Power BI 仪表板,但需要 Power BI 管理员角色才能查看组织范围的指标。 尽管其他 Microsoft Entra ID 功能(例如可分配角色的组)可能支持这些 Microsoft Entra 角色分配,但通过这些方法授予的访问权限不太明确。 例如,你将管理组的成员身份,而不是直接管理用户的角色分配。

通过使用权利管理将 Microsoft Entra 角色分配给员工和来宾,你可以查看用户的权利,以快速确定分配给该用户的角色。 将 Microsoft Entra 角色作为资源包含在访问包中时,还可以指定该角色分配是“符合条件”还是“活动”

通过访问包分配 Microsoft Entra 角色有助于高效地大规模管理角色分配,并改进角色分配生命周期。

使用访问包分配 Microsoft Entra 角色的场景

假设你的组织最近为支持团队雇用了 50 名新员工,你的任务是为这些新员工提供访问他们所需资源的权限。 这些员工需要访问支持组和某些与支持相关的应用程序。 他们还需要三个 Microsoft Entra 角色(包括“支持管理员”角色)才能完成其工作。 你可以设置一个包含 SharePoint 站点、组和特定 Microsoft Entra 角色的访问包,而不是单独将这 50 名员工中的每一名分配给所有资源和角色。 然后,你可以将访问包配置为让经理成为审批者,并与支持团队共享链接。

将资源角色添加到新访问包的屏幕截图。

现在,加入支持团队的新成员可以在“我的访问”中请求访问此访问包,并在经理批准该请求后立即访问他们需要的所有内容。 这可以节省你的时间和精力,因为支持团队正计划在全球范围内扩张,并打算雇用约 1,000 名新员工,但你不再需要手动将每名员工分配给访问包。

注意

建议使用 Privileged Identity Management 为用户提供即时访问权限,以执行需要提升权限的任务。 可通过 Microsoft Entra 角色(在我们的文档 Microsoft Entra 内置角色中被标记为“特权”)提供这些权限。 权利管理更适合为用户分配一组资源,其中可以包括完成工作所需的 Microsoft Entra 角色。 分配到访问包的用户往往对资源拥有更长期的访问权限。 虽然我们建议通过 Privileged Identity Management 管理高特权角色,但可以通过权利管理中的访问包为这些角色设置资格。

先决条件

使用此功能需要 Microsoft Entra ID Governance 许可证。 如需查找符合要求的许可证,请参阅《Microsoft Entra ID 治理许可基础知识》。

将 Microsoft Entra 角色添加为访问包中的资源

必备角色:全局管理员、Identity Governance 管理员、目录所有者或访问包管理员

按照以下步骤更改现有访问包的不兼容组或其他访问包的列表:

  1. 至少以标识治理管理员身份登录到 Microsoft Entra 管理中心

  2. 浏览到“标识治理”>“权利管理”>“访问包”。

  3. 在“访问包”页上,打开要向其中添加资源角色的访问包,然后选择“资源角色”

  4. 在“将资源角色添加到访问包”页上,选择“Microsoft Entra 角色(预览版)”,打开“选择 Microsoft Entra 角色”窗格

  5. 选择要包含在访问包中的 Microsoft Entra 角色。 为访问包选择角色的屏幕截图。

  6. 在“角色”列表中,选择“符合条件的成员”或“活动成员”为访问包中的资源角色选择角色的屏幕截图。

  7. 选择 添加

注意

如果选择“符合条件”,则用户将有资格担任该角色,并且可以使用 Microsoft Entra 管理中心的 Privileged Identity Management 激活其分配。 如果选择“活动”,则用户将具有活动角色分配,直到他们不再有权访问访问包。 对于标记为“特权”的 Entra 角色,只能选择“符合条件”。 有关特权角色的列表,请参阅 Microsoft Entra 内置角色

以编程方式将 Microsoft Entra 角色添加为访问包中的资源

若要以编程方式添加 Microsoft Entra 角色,请使用以下代码:

    "role": {
        "originId": "Eligible",
        "displayName": "Eligible Member",
        "originSystem": "DirectoryRole",
        "resource": {
            "id": "ea036095-57a6-4c90-a640-013edf151eb1"
        }
    },
    "scope": {
        "description": "Root Scope",
        "displayName": "Root",
        "isRootScope": true,
        "originSystem": "DirectoryRole",
        "originId": "c4e39bd9-1100-46d3-8c65-fb160da0071f"
    }
}

使用 Graph 将 Microsoft Entra 角色添加为访问包中的资源

可使用 Microsoft Graph 将 Microsoft Entra 角色添加为访问包中的资源。 如果一个用户具有某个应用程序的适当角色,且该应用程序具有委托的 EntitlementManagement.ReadWrite.All permission,或如果某个应用程序具有 EntitlementManagement.ReadWrite.All 应用程序权限,则该用户或该应用程序可以调用 API 来创建包含 Microsoft Entra 角色的访问包,并向该访问包分配用户。

使用 PowerShell 将 Microsoft Entra 角色添加为访问包中的资源

还可以使用适用于 Identity Governance 的 Microsoft Graph PowerShell cmdlet 模块版本 1.16.0 或更高版本中的 cmdlet 在 PowerShell 中将 Microsoft Entra 角色添加为访问包中的资源。

以下脚本演示了如何使用 Graph Beta 配置文件将 Microsoft Entra 角色添加为访问包中的资源:

首先,检索要包含在访问包中的类别(以及该类别中的资源及其范围和角色)的 ID。 使用类似于以下示例的脚本。 这假定目录中有一个应用程序资源。

Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "EntitlementManagement.ReadWrite.All"

$catalog = Get-MgEntitlementManagementCatalog -Filter "displayName eq 'Entra Admins'" -All
if ($catalog -eq $null) { throw "catalog not found" }
$rsc = Get-MgEntitlementManagementCatalogResource -AccessPackageCatalogId $catalog.id -Filter "originSystem eq 'DirectoryRole'" -ExpandProperty scopes
if ($rsc -eq $null) { throw "resource not found" }
$filt = "(id eq '" + $rsc.Id + "')"
$rrs = Get-MgEntitlementManagementCatalogResource -AccessPackageCatalogId $catalog.id -Filter $filt -ExpandProperty roles,scopes

然后,将该资源中的 Microsoft Entra 角色分配给相应访问包。 例如,如果希望将先前返回的资源的第一个资源角色添加为访问包的资源角色,可以使用与下方所示类似的脚本。

$apid = "cdd5f06b-752a-4c9f-97a6-82f4eda6c76d"

$rparams = @{
    role = @{
        id =  $rrs.Roles[0].Id
        displayName =  $rrs.Roles[0].DisplayName
        description =  $rrs.Roles[0].Description
        originSystem =  $rrs.Roles[0].OriginSystem
        originId =  $rrs.Roles[0].OriginId
        resource = @{
            id = $rrs.Id
            originId = $rrs.OriginId
            originSystem = $rrs.OriginSystem
        }
    }
    scope = @{
        id = $rsc.Scopes[0].Id
        originId = $rsc.Scopes[0].OriginId
        originSystem = $rsc.Scopes[0].OriginSystem
    }
}

New-MgEntitlementManagementAccessPackageResourceRoleScope -AccessPackageId $apid -BodyParameter $rparams

下一步