管理应用程序的现有用户 - Microsoft PowerShell

在将应用程序与 Microsoft Entra ID 的治理功能(例如 访问评审)配合使用之前,需要首先将应用程序的现有访问权限和用户导入 Microsoft Entra ID。

许可要求

使用此功能需要Microsoft Entra ID 治理 或 Microsoft Entra 套件 许可证。 若要查找符合要求的正确许可证,请参阅 Microsoft Entra ID 治理 许可基础知识

应用程序在使用自己的身份提供程序后,已迁移到 Microsoft Entra ID

在第一种方案中,应用程序已存在于环境中。 应用程序以前使用自己的标识提供者或数据存储来跟踪哪些用户有权访问。

将应用程序更改为依赖于 Microsoft Entra ID 时,只有 Microsoft Entra ID 中并且允许访问该应用程序的用户才能访问它。 在配置更改过程中,可以选择将现有用户从该应用程序的数据存储引入 Microsoft Entra ID 中。 这些用户随后可以通过 Microsoft Entra ID 继续访问。

具有与 Microsoft Entra ID 中表示的应用程序关联的用户将使 Microsoft Entra ID 能够跟踪有权访问应用程序的用户,即使用户与应用程序的关系源自于其他位置。 例如,关系可能源自应用程序的数据库或目录。

Microsoft Entra ID 知道用户的分配后,它可以将更新发送到应用程序的数据存储。 更新包括在该用户的属性发生更改或者用户超出应用程序的作用域时。

不使用 Microsoft Entra ID 作为唯一标识提供者的应用程序

在第二种方案中,应用程序不只依赖 Microsoft Entra ID 作为其标识提供者。

在某些情况下,应用程序可能依赖于 AD 组。 在准备进行用户访问应用程序权限的评审的模式 B 中描述了这种情况。 你不需要按照该文中的描述为该应用程序配置预配,只需按照该文中有关如何评审 AD 组成员资格的模式 B 的说明进行操作即可。

在其他情况下,应用程序可能支持多个标识提供者,或者有其自己的内置凭据存储。 此方案在准备对用户访问应用程序权限进行访问评审中被描述为“模式 C”。

可能无法从应用程序中移除其他标识提供者或本地凭据身份验证。 这种情况下,如果要使用 Microsoft Entra ID 评审谁有权访问该应用程序,或者从该应用程序中移除某人的访问权限,则需要在 Microsoft Entra ID 中创建表示应用程序用户的分配,这些用户不依赖 Microsoft Entra ID 进行身份验证。

如果您计划在访问评估中审查所有可以访问该应用程序的用户,则必须使用这些任务。

例如,假设用户处于应用程序的数据存储中。 Microsoft Entra ID 配置为要求向应用程序进行角色分配。 但是,用户在 Microsoft Entra ID 中没有应用程序角色分配。

如果用户在 Microsoft Entra ID 中更新,则不会向应用程序发送任何更改。 如果应用程序的角色分配被审查,用户不会被包括在审查中。 若要让所有用户接受评审,则必须为应用程序的所有用户分配应用程序角色。

应用程序不使用 Microsoft Entra ID 作为其标识提供者,也不支持预配

对于某些旧应用程序,从应用程序中删除其他标识提供者或本地凭据身份验证或启用对这些应用程序的预配协议的支持可能不可行。

不支持预配协议的应用程序的该场景在另一篇文章(即治理不支持预配的应用程序的现有用户)中进行了介绍。

应用程序使用 Microsoft Entra ID 作为其标识提供者,并为用户提供其他访问权限

使用提供的自定义数据资源,可以通过将应用程序的访问数据直接上传到目录中,在 Microsoft Entra ID 访问评审中包括访问权限。

然后,您可以在 Microsoft Entra 连接的资源和这些访问权限上运行用户访问评审(UAR)。 审阅者可以轻松地在“我的访问”门户中评审和认证用户的访问权限,帮助确保所有资源的一致治理、改进的可见性和合规性,无论它们是否连接到Microsoft Entra。

此方案在单独的文章中介绍, 包括目录用户访问评审(预览版)目录中提供的自定义数据

术语

本文演示了使用 Microsoft Graph PowerShell cmdlet 管理应用程序角色分配的过程。 它使用以下 Microsoft Graph 术语。

说明 Microsoft Graph 术语的图。

在 Microsoft Entra ID 中,服务主体 (ServicePrincipal) 表示特定组织目录中的应用程序。 ServicePrincipal 具有名为 AppRoles 的属性,该属性会列出应用程序支持的角色,例如 Marketing specialistAppRoleAssignment 将用户链接到服务主体,并指定用户在该应用程序中具有的角色。 如果应用程序单一登录和应用程序预配是分开处理的,则应用程序可能有多个服务主体。

还可以使用 Microsoft Entra 权利管理访问包为用户提供对应用程序的有限访问权限。 在权利管理中,AccessPackage 包含一个或多个资源角色(可能来自多个服务主体)。 AccessPackage 还为用户提供访问权限包的分配 (Assignment)。

为用户创建访问包的分配时,Microsoft Entra 授权管理会自动为用户创建访问包中每个应用程序服务主体所需的必要 AppRoleAssignment 实例。 有关详细信息,请参阅 Microsoft Entra ID 权利管理中的资源访问管理 教程,了解如何通过 PowerShell 创建访问包。

在您开始之前

  • 您的租户必须具有下列许可证之一:

    • Microsoft Entra ID P2 或 Microsoft Entra ID 治理
    • 企业移动性 + 安全性 E5 许可证
  • 需要具备适当的管理权限。 如果这是你第一次执行这些步骤,则需要全局管理员角色来授权在租户中使用 Microsoft Graph PowerShell。

  • 在您的租户中,应用程序至少需要有一个服务主体。

注册应用程序

如果应用程序已在 Microsoft Entra ID 中注册,则继续执行下一步。

配置应用程序预配

如果你的应用程序使用 LDAP 目录、SQL 数据库、SAP 云标识服务或支持 SCIM,则请在创建新分配之前,为应用程序配置 Microsoft Entra 用户预配。 在创建分配之前配置预配将使 Microsoft Entra ID 能够将 Microsoft Entra ID 中的用户与应用程序数据存储中已有用户的应用程序角色分配相匹配。 如果应用程序有一个要预配的本地目录或数据库,并且还支持联合 SSO,那么你可能需要两个服务主体来表示目录中的应用程序:一个用于预配,一个用于 SSO。 如果应用程序不支持预配,请继续阅读下一部分。

  1. 确保应用程序配置为要求用户分配应用程序角色,以便仅将选定的用户预配到应用程序。

  2. 如果尚未为应用程序配置预配,则立即进行配置(但不启动预配):

  3. 检查应用程序的“属性”选项卡。 验证“需要进行用户分配?”选项是否设置为“”。 如果设置为,则目录中的所有用户(包括外部标识)都可以访问应用程序,并且无法评审对应用程序的访问。

  4. 请检查属性映射,以供该应用程序使用。 请确保将“使用此属性匹配对象”设置应用于在前面的部分中用于匹配的 Microsoft Entra 属性和列。

  5. 检查是否存在 isSoftDeleted 到应用程序属性的属性映射。

    当用户从应用程序中解除分配、在 Microsoft Entra ID 中被软删除或被阻止登录时,Microsoft Entra 配置将更新映射到 isSoftDeleted 的属性。 如果未映射任何属性,则以后从应用程序角色取消分配的用户将继续存在于应用程序的数据存储中。

  6. 如果已为应用程序启用预配,请检查应用程序预配是否未处于隔离状态。 在继续之前解决导致隔离的所有问题。

从应用程序收集现有用户,并确认哪些用户与 Microsoft Entra ID 用户匹配

在预配配置中提供了连接详细信息和匹配属性后,Microsoft Entra 可以发现应用程序中的现有用户。 单击预配总览页面中的 “发现身份” 按钮。 生成报表后,你将拥有应用程序中所有用户的视图,应用程序中的用户与 Microsoft Entra ID 用户匹配,哪些用户已分配到 Microsoft Entra ID 中的企业应用程序,并且应用程序中的用户与 Microsoft Entra ID 用户不匹配)。

在 Microsoft Entra ID 中创建应用角色分配

若要 Microsoft Entra ID 将应用程序中的用户与 Microsoft Entra ID 中的用户匹配,需要在 Microsoft Entra ID 中创建应用程序角色分配。 每个应用程序角色分配都会将一个用户关联到一个服务主体的一个应用程序角色。

如果在 Microsoft Entra ID 中为用户创建应用程序角色分配(分配到应用程序),且该应用程序支持预配,则:

  • Microsoft Entra ID 将通过 SCIM 或者其目录或数据库来查询应用程序,以确定用户是否已存在。
  • 当对Microsoft Entra ID 中的用户属性进行后续更新时,Microsoft Entra ID 会将这些更新发送到应用程序。
  • 除非在 Microsoft Entra ID 外部更新,或者直到移除 Microsoft Entra ID 中的分配,否则用户将无限期保留在应用程序中。
  • 在该应用程序角色分配的下一次访问评审时,该用户将被纳入访问评审。
  • 如果用户在访问评审中被拒绝,将移除其应用程序角色分配。 Microsoft Entra ID 将通知应用程序用户被阻止登录。

如果应用程序不支持预配,则:

  • 除非在 Microsoft Entra ID 外部更新,或者直到移除 Microsoft Entra ID 中的分配,否则用户将无限期保留在应用程序中。
  • 在下一次评审该应用程序的角色分配时,用户将参加评审。
  • 如果用户在访问评审中被拒绝,将移除其应用程序角色分配。 用户将无法再从 Microsoft Entra ID 登录到应用程序。

对于已完成生成帐户发现报告的应用程序,可以使用以下步骤自动将这些用户分配到企业应用程序:

  1. 下载 CorrelatedUsers.ps1 文件。

  2. 为当前在干运行模式下没有角色分配的用户创建应用程序角色分配。 这将允许你查看将分配哪些用户,而无需将用户分配到应用程序:

    .\Assign-CorrelatedUsers.ps1 -ServicePrincipalId "InputServicePrincipalIdHere" -DryRun
    
  3. 为当前没有角色分配的用户创建应用程序角色分配:

    .\Assign-CorrelatedUsers.ps1 -ServicePrincipalId "InputServicePrincipalIdHere"
    
  4. 等待一分钟,以便更改在 Microsoft Entra ID 中同步。

检查 Microsoft Entra 预配是否与现有用户匹配

  1. 若要验证是否已将所有用户成功分配到企业应用程序,请选择发现标识以创建另一个报表,并确保所有匹配的用户都分配给应用程序。

  2. 如果应用程序服务主体为预配进行了配置,但服务主体的“预配状态”为“关”,请将其设置为“开”

  3. 根据预配用户需要多长时间的指南,等待 Microsoft Entra 预配将应用程序的现有用户与刚刚分配的用户进行匹配。

  4. 通过门户监视 预配状态 ,以确保所有用户都成功匹配。

    如果未看到正在预配的用户,请查看有关未预配任何用户的故障排除指南。 如果在预配状态中看到错误,并且正在预配到本地应用程序,请查看本地应用程序预配的故障排除指南

  5. 通过 Microsoft Entra 管理中心检查预配日志。 按状态“失败”筛选日志。 如果发生失败并且 ErrorCode 为 DuplicateTargetEntries,则这表示预配匹配规则中存在歧义,需要更新用于匹配的 Microsoft Entra 用户或映射,以确保每个 Microsoft Entra 用户都与一个应用程序用户匹配。 然后按操作“创建”和状态“已跳过”来筛选日志。 如果跳过的用户的 SkipReason 代码为 NotEffectivelyEntitled,这可能表明 Microsoft Entra ID 中的用户帐户由于用户帐户状态为“已禁用”而未匹配。

在 Microsoft Entra 预配服务通过您创建的应用程序角色分配匹配用户后,对这些用户的后续更改将被发送到应用程序。

选择适当的审阅者

创建每个访问评审时,管理员可以选择一个或多个审阅者。 审阅者都可以通过选择继续访问资源的用户或将其删除来执行评审。

通常,资源所有者负责执行评审。 如果要创建组评审,作为评审模式 B 中集成的应用程序的访问权限的一部分,则可以选择组所有者作为审阅者。 因为 Microsoft Entra ID 中的应用程序不一定具有所有者,因此无法选择应用程序所有者作为审阅者。 相反,在创建评审时,可以提供应用程序所有者的名称作为审阅者。

还可以选择在创建组或应用程序的评审时进行 多阶段评审。 例如,可以选择让每个分配的用户的经理执行评审的第一个阶段,让资源所有者执行第二阶段。 这样,资源所有者就可以专注于已获得其经理批准的用户。

在创建评审之前,请检查租户中是否有足够的 Microsoft Entra ID P2 或 Microsoft Entra ID 治理 SKU 席位。 此外,请检查所有审阅者是否都是具有电子邮件地址的活动用户。 访问评审开始后,他们都会查看来自 Microsoft Entra ID 的电子邮件。 如果审阅者没有邮箱,则在评审开始时,他们不会收到电子邮件或电子邮件提醒。 而且,如果阻止他们登录 Microsoft Entra ID,则他们将无法执行评审。

配置访问评审或权限管理

一旦用户担任应用程序角色,并且你确定了审阅者,那么你就可以通过访问评审或权利管理来治理这些用户以及需要访问权限的任何其他用户。

通过对应用角色分配进行访问评审来审查和移除现有访问权限

如果应用程序具有多个应用程序角色而且由多个服务主体表示,或者想要设置一个流程让用户请求应用程序的访问权限或者向用户分配访问权限,请继续阅读本文的以下部分以使用权利管理治理访问权限

现在,既然现有用户已被分配了应用程序角色,就可以配置 Microsoft Entra ID 来开始对那些分配的评审

  1. 对于此步骤,您需要拥有全局管理员或身份治理管理员的角色。

  2. 按照创建组或应用程序的访问评审的指南中的说明,创建应用程序的角色分配评审。 将评审配置为在评审完成后应用结果。 在 PowerShell 中,可以使用New-MgIdentityGovernanceAccessReviewDefinition中的 cmdlet 来创建访问评审。 有关详细信息,请参阅 示例

    注释

    如果在创建访问评审时启用评审决策帮助程序,则决策帮助程序建议基于 30 天的时间间隔,具体取决于用户上次使用 Microsoft Entra ID 登录到应用程序的时间。

  3. 访问评审开始时,要求审阅者提供输入。 默认情况下,他们每个人都会收到来自 Microsoft Entra ID 的电子邮件,其中包含指向访问权限面板的链接,他们将在访问权限面板中评审应用程序的访问权限

  4. 评审开始后,可以监视其进度,并根据需要更新审批者,直到访问评审完成。 然后,可以确认其访问权限被审阅者拒绝的用户是否已从应用程序中删除其访问权限。

  5. 如果在创建评审时未选择自动应用,则需要在评审完成后应用评审结果。

  6. 等待评审的状态更改为“已应用结果”。 几分钟后,应会看到被拒绝的用户(如果有)的应用程序角色分配被移除。

  7. 应用结果后,Microsoft Entra ID 将开始从应用程序取消预配被拒绝的用户。 根据关于预配用户需要多长时间的指导,等待 Microsoft Entra 预配开始撤销被拒用户的访问权限。 通过门户监视 预配状态 ,以确保所有被拒绝的用户都已成功删除。

    如果未看到正在取消预配的用户,请查看有关未预配任何用户的故障排除指南。 如果在预配状态中看到错误,并且正在预配到本地应用程序,请查看本地应用程序预配的故障排除指南

现在,你有了一个基线,可确保已评审现有访问权限,接下来可以继续在下一部分中配置权利管理,以启用新的访问请求。

使用权利管理控制访问权限

在其他情况下,例如在希望每个应用程序角色有不同审阅者的情况下,可以让应用程序由多个服务主体表示;如果希望有一个流程供用户请求(或者通过该流程向用户分配)对应用程序的访问权限,那么你可以针对每个应用程序角色为 Microsoft Entra ID 配置一个访问包。 每个访问包都可以有一个策略,用于周期性审查分配给该访问包的任务。 创建访问包和策略后,可以将具有现有应用程序角色分配的用户分配给访问包,以便通过访问包来评审其分配。

在本部分中,你将配置 Microsoft Entra 权利管理,以便对包含应用角色分配的访问包分配进行评审,并且配置其他策略,让用户能够请求对应用角色的访问权限。

  1. 对于此步骤,你需要有“全局管理员”或“标识治理管理员”角色,或者被委托为目录创建者和应用程序所有者。
  2. 如果还没有应用程序治理方案的目录,请在 Microsoft Entra 权利管理中创建目录。 可以使用 PowerShell 脚本 创建每个目录,如在 使用 PowerShell 创建目录中所示。
  3. 使用必需的资源来填充目录,将应用程序以及应用程序依赖的任何 Microsoft Entra 组添加为该目录中的资源。 可以使用 PowerShell 脚本 将每个资源添加到目录,如 将应用程序作为资源添加到目录中所示。
  4. 对于每个应用程序及它们的每个应用程序角色或组,创建一个访问包,其中包括角色或组作为其资源。 在配置这些访问包的此阶段,请将每个访问包中的第一个访问包分配策略配置为 直接分配的策略,以便只有管理员才能在该策略中创建分配,为现有用户设置访问评审要求(如果有的话)以便他们不会无限期地保留访问权限。 如果你有许多访问包,则可以使用 PowerShell 脚本 在目录中创建每个访问包,如 为具有单个角色的应用程序创建访问包。
  5. 对于每个访问包,将相应角色应用程序的现有用户或该组的成员分配到访问包及其直接分配策略中。 可以使用 Microsoft Entra 管理中心直接将用户分配给访问包,也可通过 Graph 或 PowerShell 批量分配,如添加现有用户的分配中所示。
  6. 如果在访问包分配策略中配置了访问评审,则在访问评审开始时,应让审阅者提供输入。 默认情况下,他们每个人都会收到来自 Microsoft Entra ID 的电子邮件,其中包含指向访问权限面板的链接,他们将在该面板中评审访问包分配。 评审完成之后,在几分钟内,应会看到被拒绝的用户(如果有)的应用程序角色分配被移除。 随后,Microsoft Entra ID 将开始从应用程序取消预配被拒绝的用户。 根据关于预配用户需要多长时间的指导,等待 Microsoft Entra 预配开始撤销被拒用户的访问权限。 通过门户监视 预配状态 ,以确保所有被拒绝的用户都已成功删除。
  7. 如果你有职责分离要求,请为访问包配置不兼容的访问包或现有组。 如果你的方案需要能够替代职责分离检查,则还可以为这些替代方案设置其他访问包
  8. 如果你希望允许尚无权请求访问权限的用户,请在每个访问包中为用户创建其他访问包分配策略以请求访问权限。 在该策略中配置审批和定期访问评审要求。

后续步骤