在权利管理中针对访问包配置职责分离检查

在权利管理中,可以配置多个策略,并为需要通过访问包访问的每个用户社区提供不同的设置。 例如,员工可能只需要经理批准即可访问某些应用程序,但来自其他组织的来宾可能同时需要发起人和资源团队部门经理的批准才能访问。 在针对目录中已有用户的策略中,可以指定可为其请求访问的特定用户组。 但是,你可能需要避免用户获得过多的访问权限。 为了满足此要求,需要根据请求者已经拥有的访问权限进一步限制谁可以请求访问权限。

借助访问包上的“职责分离”设置,可以这样配置:已是组成员或已经分配了一个访问包的用户不能请求额外的访问包。

myaccess experience for attempting to request incompatible access

有关职责分离检查的方案

例如,你有一个访问包“市场营销活动”,你的组织和其他组织的人员都可以请求访问该包,以便在活动进行时与你组织的营销部门合作。 由于营销部门的员工已有权访问该营销活动材料,因此你不希望他们请求访问包的访问权限。 或者,假设你已有一个动态组“营销部门员工”,其中包括了所有营销员工。 你可以指明该访问包与该动态组的成员身份不兼容。 然后,当营销部门的员工在查找要请求的访问包时,他们无法请求访问“营销活动”访问包。

类似地,假设你的应用程序有两个应用角色(“西部销售”和“东部销售”,表示销售区域),你想要确保某个用户在某个时间只属于一个销售区域。 如果你有两个访问包:访问包“西部管辖区”提供“西部销售”角色,访问包“东部管辖区”提供“东部销售”角色,则可进行以下配置:

  • “西部管辖区”访问包配置为与“东部管辖区”访问包不兼容,并将
  • “东部管辖区”访问包配置为与“西部管辖区”访问包不兼容 。

如果你一直在使用 Microsoft 标识管理器或其他本地标识管理系统来自动访问本地应用程序,则也可以将这些系统与权利管理进行集成。 如果要通过权利管理控制对 Microsoft Entra 集成应用的访问,并希望防止用户进行不兼容的访问,则可以配置为访问包与组不兼容。 这可能是本地标识管理系统通过 Microsoft Entra Connect 发送到 Microsoft Entra ID 的组。 此检查可确保用户无法请求访问包,前提是该访问包提供的访问权限与用户在本地应用中的访问权限不兼容。

先决条件

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

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

将一个访问包或组成员身份配置为不兼容,因此无法请求访问另一个访问包

提示

本文中的步骤可能因开始使用的门户而略有不同。

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

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

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

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

  3. 在“访问包”页上,打开用户将请求的访问包。

  4. 在左侧菜单中,选择“职责分离”。

  5. 如果你要阻止已分配有另一个访问包的用户请求此访问包,请选择“添加访问包”,然后选择为该用户分配的访问包。

    configuration of incompatible access packages

  6. 如果你要阻止具有现有组成员身份的用户请求此访问包,请选择“添加组”,然后选择该用户已是其成员的组。

以编程方式通过 Graph 配置不兼容的访问包

可以使用 Microsoft Graph 配置与访问包不兼容的组和其他访问包。 如果一个用户具有某个应用程序的适当角色,且该应用程序具有委托的 EntitlementManagement.ReadWrite.All 权限,或如果某个应用程序具有前述EntitlementManagement.ReadWrite.All应用程序权限,则该用户或该应用程序可以调用 API 来添加、删除和列出 访问包的不兼容组和访问包。

通过 Microsoft PowerShell 配置不兼容的访问包

还可以使用 Microsoft Graph PowerShell cmdlet for Identity Governance 模块 1.16.0 或更高版本中的 cmdlet 配置与 PowerShell 中的访问包不兼容的组和其他访问包。

以下脚本演示如何使用 Graph 的 v1.0 配置文件来创建关系,以指示另一个访问包不兼容。

Connect-MgGraph -Scopes "EntitlementManagement.ReadWrite.All"

$apid = "5925c3f7-ed14-4157-99d9-64353604697a"
$otherapid = "cdd5f06b-752a-4c9f-97a6-82f4eda6c76d"

$params = @{
   "@odata.id" = "https://graph.microsoft.com/v1.0/identityGovernance/entitlementManagement/accessPackages/" + $otherapid
}
New-MgEntitlementManagementAccessPackageIncompatibleAccessPackageByRef -AccessPackageId $apid -BodyParameter $params

查看已配置为与此访问包不兼容的其他访问包

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

遵循以下步骤,查看已指示与现有访问包不兼容的其他访问包列表:

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

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

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

  4. 在左侧菜单中,选择“职责分离”。

  5. 选择“不兼容”。

识别已具有不兼容的对另一个访问包的访问权限的用户(预览版)

如果在已分配用户的访问包上配置了不兼容的访问权限设置,则可以下载具有该附加访问权限的用户的列表。 同时还分配到了不兼容访问包的用户将无法重新请求访问权限。

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

可按照以下步骤查看分配有两个访问包的用户的列表。

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

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

  3. 在“访问包”页上,打开你已在其中将另一个访问包配置为不兼容的访问包。

  4. 在左侧菜单中,选择“职责分离”。

  5. 在表中,如果第二个访问包的“附加访问权限”列中包含非零值,则表示一个或多个用户具有分配。

    Screenshot of an access package marked as incompatible with existing access assignments.

  6. 选择该计数以查看不兼容分配的列表。

  7. 如果需要,可以选择“下载”按钮将该分配列表保存为 CSV 文件。

识别具有不兼容的对另一个访问包的访问权限的用户

如果在已为其分配了用户的访问包上配置不兼容的访问设置,那么还分配了不兼容访问包或组的其他用户将无法重新请求访问。

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

可按照以下步骤查看分配有两个访问包的用户的列表。

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

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

  3. 打开你将在其中配置不兼容分配的访问包。

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

  5. 在“状态”字段中,确保选择了“已交付”状态。

  6. 选择“下载”按钮,并将生成的 CSV 文件保存为包含分配列表的第一个文件。

  7. 在导航栏中,选择 Identity Governance。

  8. 在左侧菜单中,选择“访问包”,然后打开计划指示为不兼容的访问包。

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

  10. 在“状态”字段中,确保选择了“已交付”状态。

  11. 选择“下载”按钮,并将生成的 CSV 文件保存为包含分配列表的第二个文件。

  12. 使用 Excel 等电子表格程序打开这两个文件。

  13. 这两个文件中都列出的用户具有已存在的不兼容分配。

以编程方式识别已具有不兼容访问权限的用户

可以使用 Microsoft Graph 检索访问包的分配,这些分配的范围仅限于那些也拥有另一个访问包分配的用户。 如果用户具有某个应用程序的管理角色,且该应用程序具有委托的 EntitlementManagement.Read.AllEntitlementManagement.ReadWrite.All 权限,则可以调用 API 来列出其他访问权限

使用 PowerShell 识别已具有不兼容访问权限的用户

还可使用用于标识治理的 Microsoft Graph PowerShell cmdlet 模块 2.1.0 或更高版本中的 Get-MgEntitlementManagementAssignment cmdlet 查询具有访问包分配的用户。

例如,如果有两个访问包,一个 ID 为 29be137f-b006-426c-b46a-0df3d4e25ccd,另一个 ID 为 cce10272-68d8-4482-8ba3-a5965c86cfe5,则可以检索有第一个访问包分配的用户,然后将其与有第二个访问包分配的用户进行比较。 还可使用类似于以下的 PowerShell 脚本来报告同时有两个访问包分配的用户:

$c = Connect-MgGraph -Scopes "EntitlementManagement.Read.All"

$ap_w_id = "29be137f-b006-426c-b46a-0df3d4e25ccd"
$ap_e_id = "cce10272-68d8-4482-8ba3-a5965c86cfe5"
$apa_w_filter = "accessPackage/id eq '" + $ap_w_id + "' and state eq 'Delivered'"
$apa_e_filter = "accessPackage/id eq '" + $ap_e_id + "' and state eq 'Delivered'"
$apa_w = @(Get-MgEntitlementManagementAssignment -Filter $apa_w_filter -ExpandProperty target -All)
$apa_e = @(Get-MgEntitlementManagementAssignment -Filter $apa_e_filter -ExpandProperty target -All)
$htt = @{}; foreach ($e in $apa_e) { if ($null -ne $e.Target -and $null -ne $e.Target.Id) {$htt[$e.Target.Id] = $e} }
foreach ($w in $apa_w) { if ($null -ne $w.Target -and $null -ne $w.Target.Id -and $htt.ContainsKey($w.Target.Id)) { write-output $w.Target.Email } }

为替代方案配置多个访问包

如果访问包已配置为不兼容,那么分配给该不兼容访问包的用户无法请求该访问包,管理员也不能进行新的不兼容分配。

例如,如果“生产环境”访问包已将“开发环境”包标记为不兼容,并且用户有“开发环境”访问包的分配,那么“生产环境”的访问包管理者无法为该用户创建“生产环境”的分配。 为了能够实施该分配,需要首先删除用户对“开发环境”访问包的现有分配。

如果存在可能需要覆盖“职责分离”规则的特殊情况,通过配置额外的访问包来捕获具有重叠访问权限的用户,可以让审批者、审阅者和审核者清楚地了解这些分配的特殊性质。

例如,如果存在一种情况,其中某些用户需要同时访问生产和部署环境,则可以创建一个新的访问包“生产和开发环境”。 该访问包可以将“生产环境”访问包的一些资源角色和“开发环境”访问包的一些资源角色作为其资源角色。

如果不兼容访问的动机是一个资源的角色特别有问题,那么可以从组合访问包中省略该资源,并明确要求通过管理员将用户分配给资源的角色。 如果该资源是第三方应用程序或你自己的应用程序,那么通过使用下一节中介绍的应用程序角色分配活动工作簿来监视这些角色分配,可以确保监督效果。

根据治理流程,该组合访问包的策略可以是:

  • “直接分配”策略,用于确保只有访问包管理器会与访问包交互,也可以是
  • “用户可以请求访问”策略,这样用户就可以发送请求,这意味着可能还需要一个额外的批准环节

相较于其他访问包上的策略,此策略的生命周期设置的有效天数可能要短得多,或者需要更频繁的访问评审,并进行定期监督,以确保用户不会保留超过必要的访问时间。

监视和报告访问权限分配

可以使用 Azure Monitor 工作簿来了解用户如何接收其访问权限。

  1. 配置 Microsoft Entra ID,以将审核事件发送到 Azure Monitor

  2. 名为“访问包活动”的工作簿显示与特定访问包相关的每个事件。

    View access package events

  3. 若要查看应用程序角色分配是否发生更改(分配不是由于访问包分配而创建),可以选择名为“应用程序角色分配活动”的工作簿。 如果选择省略权利活动,那么只显示不是由权利管理对应用程序角色所做的更改。 例如,如果全局管理员直接将用户分配给应用程序角色,会显示一行信息。

    View app role assignments

后续步骤