共用方式為

在权利管理中查看、添加和删除访问包的分配

在权利管理中,可以看到哪一用户已分配到访问包,这些包的策略、状态以及用户生命周期(预览版)。 如果访问包具有相应的策略,也可以直接将用户分配到访问包。 本文介绍如何查看、添加和删除访问包的分配。

先决条件

若要使用权利管理并将用户分配到访问包,必须具有以下许可证之一:

  • 微软Entra ID P2
  • 企业移动性 + 安全性 (EMS) E5 许可证
  • Microsoft Entra ID 治理订阅

查看谁具有分配

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

    提示

    可以完成此任务的其他最低特权角色包括目录所有者、访问包管理者和访问包分配管理者。

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

  3. 在“访问包”页上,打开访问包。

  4. 选择“分配”,查看活动分配的列表。

    访问包分配情况的列表

  5. 选择具体的分配,查看更多详细信息。

  6. 若要查看没有正确预配所有资源角色的分配列表,请选择筛选状态,然后选择“传递”。

    在“请求”页上找到用户的对应请求,可以查看有关传递错误的更多详细信息。

  7. 若要查看过期的分配,请选择筛选状态,然后选择已过期

  8. 若要下载已筛选列表的 CSV 文件,请选择“下载”。

以编程方式查看分配

使用 Microsoft Graph 查看分配

你也可以使用 Microsoft Graph 在访问包中检索分配。 借助具有委托的 EntitlementManagement.Read.AllEntitlementManagement.ReadWrite.All 权限的应用程序,相应角色中的用户可以调用 API 来列出 accessPackageAssignments。 具有应用程序权限 EntitlementManagement.Read.AllEntitlementManagement.ReadWrite.All 的应用程序也可以使用此 API 在所有目录中检索分配。

Microsoft Graph 将以页面形式返回结果,并在每个响应的 @odata.nextLink 属性中返回下一页结果的引用,直到读取所有结果页面。 若要读取所有结果,必须继续使用每个响应中返回的 @odata.nextLink 属性调用 Microsoft Graph,直到 @odata.nextLink 不再返回该属性,如应用中的分页 Microsoft Graph 数据所述。

当标识治理管理员可以从多个目录中检索访问包时,如果仅将用户或应用程序服务主体分配给特定于目录的委托管理角色,则请求必须提供筛选器以指示特定访问包,如:$filter=accessPackage/id eq '00001111-aaaa-2222-bbbb-3333cccc4444'

使用 PowerShell 查看分配

还可以在 PowerShell 中使用 Get-MgEntitlementManagementAssignment cmdlet 从适用于 Identity Governance 的 Microsoft Graph PowerShell cmdlet 模块 2.1.x 版或更高模块版本中检索访问包的分配。 此脚本演示了如何使用 Microsoft Graph PowerShell cmdlet 模块版本 2.4.0 检索特定访问包的所有分配。 此 cmdlet 将访问包 ID 作为参数包含在 Get-MgEntitlementManagementAccessPackage cmdlet 的响应中。 确保在使用 Get-MgEntitlementManagementAccessPackage cmdlet 时包含 -All 标志,以返回分配的所有页。

Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "EntitlementManagement.Read.All"
$accesspackage = Get-MgEntitlementManagementAccessPackage -Filter "displayName eq 'Marketing Campaign'"
if ($null -eq $accesspackage) { throw "no access package"}
$assignments = @(Get-MgEntitlementManagementAssignment -AccessPackageId $accesspackage.Id -ExpandProperty target -All -ErrorAction Stop)
$assignments | ft Id,state,{$_.Target.id},{$_.Target.displayName}

上述查询返回已过期、正在传递和已传递的分配。 如果要排除已过期或正在传递的分配,可以使用包含访问包 ID 以及分配状态的筛选器。 此脚本演示如何使用筛选器仅检索特定访问包处于 Delivered 状态的分配。 然后,该脚本将生成一个 CSV 文件 assignments.csv,其中每个分配一行。

Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "EntitlementManagement.Read.All"
$accesspackage = Get-MgEntitlementManagementAccessPackage -Filter "displayName eq 'Marketing Campaign'"
if ($null -eq $accesspackage) { throw "no access package"}
$accesspackageId = $accesspackage.Id
$filter = "accessPackage/id eq '" + $accesspackageId + "' and state eq 'Delivered'"
$assignments = @(Get-MgEntitlementManagementAssignment -Filter $filter -ExpandProperty target -All -ErrorAction Stop)
$sp = $assignments | select-object -Property Id,{$_.Target.id},{$_.Target.ObjectId},{$_.Target.DisplayName},{$_.Target.PrincipalName}
$sp | Export-Csv -Encoding UTF8 -NoTypeInformation -Path ".\assignments.csv"

直接分配用户

在某些情况下,你可能希望直接将特定的用户分配到访问包,使其不必要完成请求访问包的过程。 若要直接分配用户,访问包必须有一个允许管理员直接分配的策略。

注意

将用户分配到访问包时,管理员需要根据现有策略要求验证用户是否有资格获得该访问包。 否则,用户将无法成功分配到该访问包。

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

    提示

    可以完成此任务的其他最低特权角色包括目录所有者、访问包管理者和访问包分配管理者。

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

  3. 在“访问包”页上,打开访问包。

  4. 在左侧菜单中,选择“分配”。

  5. 选择“新建分配”打开“将用户添加到访问包”。

    分配 - 将用户添加到访问包

  6. 在“选择策略”列表中,选择将会控制和跟踪用户的未来请求和生命周期的策略。 如果希望所选用户具有不同的策略设置,可选择“创建新策略”来添加新策略。

  7. 选择策略后,你将能够在所选策略下添加用户以选择要将此访问包分配到的用户。

    注意

    如果选择有问题的策略,则一次只能分配一个用户。

  8. 设置所选用户的分配开始与结束日期和时间。 如果未提供结束日期,则使用该策略的生命周期设置。

  9. (可选)为直接分配提供理由,以保留记录。

  10. 如果所选策略包含其他请求者信息,请选择“查看问题”以代表用户回答这些问题,然后选择“保存”。

    分配 - 单击查看问题

    分配 - 问题窗格

  11. 选择“添加”将所选用户直接分配到访问包。

    片刻之后,选择“刷新”查看“分配”列表中的用户。

注意

如果策略要求审批,则访问包分配管理器将无法再绕过审批设置。 这意味着未经指定审批者的必要批准,无法将用户直接分配给包。 如果需要绕过审批,我们建议在访问包上创建第二个策略,该策略不要求审批,并且其范围仅限定于需要访问的用户。

直接分配任何用户(预览版)

权利管理还允许将外部用户直接分配到访问包,以便更轻松地与合作伙伴协作。 为此,访问包必须具有一个策略,该策略允许尚不在你目录中的用户请求访问权限。

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

    提示

    可以完成此任务的其他最低特权角色包括目录所有者、访问包管理者和访问包分配管理者。

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

  3. 在“访问包”页上,打开访问包。

  4. 在左侧菜单中,选择“分配”。

  5. 选择“新建分配”打开“将用户添加到访问包”。

  6. 在“选择策略”列表中,选择一个策略,该策略允许设置为“不在你目录中的用户”。

  7. 选择“任何用户”。 你可以指定要分配到此访问包的用户。 分配 - 将任何用户添加到访问包

  8. 输入用户的“名称”(可选)和用户的“电子邮件地址”(必填)。

    注意

    • 要添加的用户必须在策略范围内。 例如,如果策略设置为“特定连接组织”,则用户的电子邮件地址必须来自所选组织的域。 如果尝试添加的用户的电子邮件地址为 jen@foo.com,但所选组织的域为 bar.com,则无法将该用户添加到访问包。
    • 同样,如果将策略设置为包括“所有配置连接组织”,则用户的电子邮件地址必须来自其中一个配置连接组织。 否则,无法将用户添加到访问包。
    • 如果要将任何用户添加到访问包,需要确保在配置策略时选择“所有用户(所有连接组织 + 任何外部用户)”。
  9. 设置所选用户的分配开始与结束日期和时间。 如果未提供结束日期,则使用该策略的生命周期设置。

  10. 选择“添加”将所选用户直接分配到访问包。

  11. 片刻之后,选择“刷新”查看“分配”列表中的用户。

以编程方式直接分配用户

使用 Microsoft Graph 将用户分配到访问包

你也可以使用 Microsoft Graph 直接将用户分配到访问包。 通过具有委托的 EntitlementManagement.ReadWrite.All 权限的应用程序,或通过具有该应用程序权限的应用程序,相应角色中的用户可以调用 API 来EntitlementManagement.ReadWrite.All创建 ccessPackageAssignmentRequest。 在此请求中,requestType 属性的值应为 adminAddassignment 属性是一个结构,包含所分配用户的 targetId

使用 PowerShell 将用户分配到访问包

可以使用New-MgEntitlementManagementAssignmentRequest 模块 2.1.x 版或更高模块版本中的 cmdlet 在 PowerShell 中将用户分配到访问包。 此脚本演示如何使用 Microsoft Graph PowerShell cmdlet 模块版本 2.4.0。

Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "EntitlementManagement.ReadWrite.All"
$accesspackage = Get-MgEntitlementManagementAccessPackage -Filter "displayname eq 'Marketing Campaign'" -ExpandProperty "assignmentpolicies"
if ($null -eq $accesspackage) { throw "no access package"}
$policy = $accesspackage.AssignmentPolicies[0]
$userid = "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
$params = @{
   requestType = "adminAdd"
   assignment = @{
      targetId = $userid
      assignmentPolicyId = $policy.Id
      accessPackageId = $accesspackage.Id
   }
}
New-MgEntitlementManagementAssignmentRequest -BodyParameter $params

你还可使用New-MgBetaEntitlementManagementAccessPackageAssignment 模块 2.4.0 或更高版本中的 cmdlet 在 PowerShell 中将目录中的多个用户分配到访问包。 该 cmdlet 作为多种参数

  • 访问包 ID,包含在 Get-MgEntitlementManagementAccessPackage cmdlet 的响应中,
  • 访问包分配策略 ID,包含在 assignmentpolicies cmdlet 中的响应中 Get-MgEntitlementManagementAccessPackage 字段中的策略,
  • 目标用户的对象 ID,可以是字符串数组,或是从 Get-MgGroupMember cmdlet 返回的用户成员列表。

例如,如果要确保当前为组成员的所有用户也具有访问包的分配,可以使用此 cmdlet 为当前没有分配的用户创建请求。 此 cmdlet 仅会创建分配,不会移除不再是组成员的用户的分配。 如果希望访问包的分配跟踪组的成员身份并随时间推移添加和删除分配,请改用自动分配策略

Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "EntitlementManagement.ReadWrite.All,Directory.Read.All"
$members = @(Get-MgGroupMember -GroupId "a34abd69-6bf8-4abd-ab6b-78218b77dc15" -All)

$accesspackage = Get-MgEntitlementManagementAccessPackage -Filter "displayname eq 'Marketing Campaign'" -ExpandProperty "assignmentPolicies"
if ($null -eq $accesspackage) { throw "no access package"}
$policy = $accesspackage.AssignmentPolicies[0]
$req = New-MgBetaEntitlementManagementAccessPackageAssignment -AccessPackageId $accesspackage.Id -AssignmentPolicyId $policy.Id -RequiredGroupMember $members

如果要为尚未在目录中的用户添加分配,可使用New-MgBetaEntitlementManagementAccessPackageAssignmentRequest beta 版模块 2.1.x 或更高 beta 版模块中的 cmdlet。 此脚本演示了 Microsoft Graph beta配置文件和 Microsoft Graph PowerShell cmdlet 模块版本 2.4.0 的用法。 该 cmdlet 作为多种参数

  • 访问包 ID,包含在 Get-MgEntitlementManagementAccessPackage cmdlet 的响应中,
  • 访问包分配策略 ID,包含在 assignmentpolicies cmdlet 中的响应中 Get-MgEntitlementManagementAccessPackage 字段中的策略,
  • 目标用户的电子邮件地址。
Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "EntitlementManagement.ReadWrite.All"
$accesspackage = Get-MgEntitlementManagementAccessPackage -Filter "displayname eq 'Marketing Campaign'" -ExpandProperty "assignmentPolicies"
if ($null -eq $accesspackage) { throw "no access package"}
$policy = $accesspackage.AssignmentPolicies[0]
$req = New-MgBetaEntitlementManagementAccessPackageAssignmentRequest -AccessPackageId $accesspackage.Id -AssignmentPolicyId $policy.Id -TargetEmail "sample@example.com"

删除分配

可删除用户或管理员之前请求的分配。

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

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

  3. 在“访问包”页上,打开访问包。

  4. 在左侧菜单中,选择“分配”。

  5. 选中你想从访问包中删除其分配的用户旁边的复选框。

  6. 选择左窗格顶部附近的“删除”按钮。

    分配 - 从访问包中删除用户

    会显示通知,告知该分配已被删除。

以编程方式删除分配

使用 Microsoft Graph 删除分配

你也可以使用 Microsoft Graph 删除用户到访问包的分配。 通过具有委托的 EntitlementManagement.ReadWrite.All 权限的应用程序,或通过具有该应用程序权限的应用程序,相应角色中的用户可以调用 API 来EntitlementManagement.ReadWrite.All创建 ccessPackageAssignmentRequest。 在此请求中,requestType 属性的值应为 adminRemoveassignment 属性是一个结构,包含确定 id 是否被删除的 accessPackageAssignment 属性。

使用 PowerShell 删除分配

可以使用New-MgEntitlementManagementAssignmentRequest 模块 2.1.x 版或更高模块版本中的 cmdlet 在 PowerShell 中删除用户的分配。 此脚本演示如何使用 Microsoft Graph PowerShell cmdlet 模块版本 2.4.0。

Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "EntitlementManagement.ReadWrite.All"
$accessPackageId = "9f573551-f8e2-48f4-bf48-06efbb37c7b8"
$userId = "11bb11bb-cc22-dd33-ee44-55ff55ff55ff"
$filter = "accessPackage/Id eq '" + $accessPackageId + "' and state eq 'Delivered' and target/objectId eq '" + $userId + "'"
$assignment = Get-MgEntitlementManagementAssignment -Filter $filter -ExpandProperty target -all -ErrorAction stop
if ($assignment -ne $null) {
   $params = @{
      requestType = "adminRemove"
      assignment = @{ id = $assignment.id }
   }
   New-MgEntitlementManagementAssignmentRequest -BodyParameter $params
}

后续步骤