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

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

先决条件

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

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

查看谁具有分配

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

    提示

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

  2. 浏览到 ID 治理>权限管理>访问包

  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 命令行小程序,从 Microsoft Graph PowerShell cmdlets for Identity Governance 模块版本 2.1.x 或更高版本中检索访问包的分配。 此脚本演示了如何使用 Microsoft Graph PowerShell cmdlet 模块版本 2.4.0 检索特定访问包的所有分配。 此 cmdlet 将访问包 ID 作为参数包含在 Get-MgEntitlementManagementAccessPackage cmdlet 的响应中。 确保在使用 Get-MgEntitlementManagementAccessPackage cmdlet 时包含 -All 标志,以返回分配的所有页。

Connect-MgGraph -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 -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. 浏览到 ID 治理>权限管理>访问包

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

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

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

    分配 - 添加用户以访问包

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

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

    注意

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

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

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

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

    作业 - 单击“查看问题”

    工作分配 - 问题窗格

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

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

注意

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

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

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

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

    提示

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

  2. 浏览到 ID 治理>权限管理>访问包

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

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

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

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

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

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

    注意

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

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

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

以编程方式直接分配用户

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

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

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

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

Connect-MgGraph -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 -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 -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"

将访问分配配置为生命周期工作流的一部分

在 Microsoft Entra 生命周期工作流功能中,可以将 请求用户访问包分配 任务添加到载入工作流。 该任务可以指定用户应具有的访问包。 在为用户运行工作流时,将自动创建访问包分配请求。

  1. 至少使用标识治理管理员生命周期工作流管理员角色登录到 Microsoft Entra 管理中心

  2. 浏览到 ID 治理>生命周期工作流>工作流

  3. 选择员工入职或移动工作流。

  4. 选择“任务”,然后选择“添加任务”

  5. 选择“请求用户访问包分配”,然后选择“添加”

  6. 选择新添加的任务。

  7. 选择“选择访问包”,然后选择应将新用户或移动用户分配到的访问包。

  8. 选择“选择策略”,然后选择该访问包中的访问包分配策略

  9. 选择“保存”。

删除分配

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

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

  2. 浏览到 ID 治理>权利管理>访问包

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

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

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

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

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

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

以编程方式删除分配

使用 Microsoft Graph 删除分配

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

使用 PowerShell 删除分配

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

Connect-MgGraph -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
}

将分配移除配置为生命周期工作流的一部分

在 Microsoft Entra 生命周期工作流功能中,可以将为用户移除访问包分配的任务添加到卸载工作流中。 该任务可以指定用户可能分配到的访问包。 在为用户运行工作流时,其访问包分配将被自动移除。

  1. 至少使用标识治理管理员生命周期工作流管理员角色登录到 Microsoft Entra 管理中心

  2. 浏览到 ID 治理>生命周期工作流>工作流

  3. 选择员工离职工作流。

  4. 选择“任务”,然后选择“添加任务”

  5. 选择“移除用户的访问包分配”,然后选择“添加”。

  6. 选择新添加的任务。

  7. 选择“选择访问包”,然后选择应将要离职的用户从中移除的一个或多个访问包

  8. 选择“保存”。

后续步骤