使用账户发现功能发现目标应用程序中的身份

当组织采用Microsoft Entra ID进行应用程序预配时,目标应用程序通常已包含配置预配之前创建的用户帐户。 帐户发现可帮助你找到这些现有帐户,将它们与Microsoft Entra ID用户匹配,并对其进行分类,以便你可以将非托管标识引入治理。 加入预配后,应用程序管理员可以在应用程序中手动创建帐户。 此报告允许组织在初始载入期间以及将配置程序化后发现并识别本地或孤立帐户。

帐户发现从目标应用程序检索所有用户帐户,并将其分类为三个类别:

  • 本地帐户 — 目标应用程序中的帐户在 Microsoft Entra ID 中没有对应的用户。 这些帐户可能属于以前的员工、服务帐户、通过其他流程预配的用户,或者由于数据质量问题而不匹配的帐户(例如不匹配或过时属性值)。
  • 未分配的用户 — 与 Microsoft Entra ID 用户匹配但未被分配到企业应用程序的帐户。 这些用户存在于目录中,但没有预配管理这些用户所需的应用程序分配。
  • 分配的用户 - 与分配给企业应用程序的Microsoft Entra ID用户匹配的帐户。 这些帐户由预配服务完全管理。

此分类可让你了解谁有权访问应用程序,并帮助你识别应管理、重新分配或删除的帐户。

先决条件

在使用帐户发现功能之前,必须先完成以下设置:

已知的限制

  • 帐户发现需要 直接匹配属性 ,以便用户关联。 不支持基于表达式的转换进行匹配。
  • 如果配置了多个匹配属性,则仅使用 第一个 匹配属性。

应用程序支持

对于基于 SCIM 的连接器,帐户发现要求应用程序支持 RFC 7644 第 3.4.2.4 节

具有已建立发现行为的连接器

对以下应用程序使用帐户发现的客户始终会收到完整的发现结果:

  • Atlassian Cloud
  • SCIM
  • Salesforce
  • SAP 云标识服务
  • ECMA (通过 SQL、LDAP、Web 服务和 PowerShell 连接器支持本地应用程序)
  • GitHub企业云(请参阅列出 SCIM 预配标识以了解限制)

不支持发现的连接器

以下应用程序当前不支持账户发现功能:

  • HR 预配(Workday、SAP SuccessFactors、API 驱动的预配)
  • ServiceNow
  • 亚马逊网络服务(AWS)
  • Snowflake
  • 跨租户同步
  • 云同步
  • 向 Active Directory 的组预配

所有其他连接器

可以为所有其他受支持的连接器启用帐户发现。 发现结果可能会有所不同,具体取决于目标应用程序是否支持通过 SCIM API 列出用户和分页。 如果发现报告的结果为零,请验证是否在属性映射中配置了单个直接匹配属性(无表达式)。 接下来,与应用程序供应商验证应用程序是否支持分页,该应用程序是否遵循 RFC 7644 第 3.4.4.2.4 节

发现目标应用程序中的身份

若要发现目标应用程序中的现有用户帐户,请执行以下操作:

  1. 以至少应用管理员身份登录到Microsoft Entra 管理中心
  2. 浏览到 身份>应用程序>企业应用程序
  3. 选择要为其发现标识的应用程序。
  4. 在左侧导航中,选择“ 预配”。
  5. 验证预配配置是否具有有效的凭据和成功的测试连接。
  6. 选择“ 发现身份”。

预配服务从目标应用程序检索所有用户帐户,并按类别显示它们。 检测至少需要 30 分钟才能生成报表。 在目标应用程序中包含的帐户越多,报表所花费的时间就越长。 例如,具有 250,000 个帐户的应用程序可能需要 12 小时或更多时间才能生成发现报告。

查看发现的帐户

发现过程完成后,查看每个类别的结果。

本地帐户

本地帐户存在于目标应用程序中,但在Microsoft Entra ID中没有匹配的用户。 这些帐户可能表示:

  • 删除了目录帐户但未取消预配其应用程序帐户的前员工。
  • 直接在应用程序中创建的服务帐户或共享帐户。
  • 通过使用不涉及Microsoft Entra ID的单独过程进行预配的用户。
  • 阻止匹配的数据质量问题。

查看这些帐户,以确定应将其从目标应用程序中删除、与现有Microsoft Entra ID用户匹配,还是保留 as-is。

未分配的用户

未分配的用户根据匹配属性与Microsoft Entra ID用户进行匹配,但未分配给企业应用。 若要将这些帐户引入预配管理,请执行以下操作:

  1. 导航到企业应用程序的 “用户和组 ”页。
  2. 将适当的用户或组分配给应用程序。
  3. 分配后,预配服务将在后续预配周期中管理这些帐户。

分配的用户

分配的用户与已分配到应用程序的Microsoft Entra ID用户匹配。 这些帐户由预配服务完全管理。 除非你想要查看或更新其属性映射,否则不需要执行任何操作。

将相关用户分配到企业应用程序和/或访问包

在应用程序中发现用户后,可以将这些用户分配到企业应用程序或访问包。 下载Assign-CorrelatedUsers.ps1文件,并在 PowerShell 7.x 中运行该文件以分配用户。

可选参数

参数 说明
-DryRun 显示 在不 进行任何更改的情况下会发生什么情况。
-SkipAppRoleAssignment 仅管理访问包并跳过分配应用角色。
重复检测 在创建新分配之前检查现有分配。
客户端状态筛选器 验证 API 结果是否与预期状态匹配,以防止 API 古怪。
-OutputFile 以 CSV 文件的形式创建完整的审核线索,其中包含时间戳、操作和错误详细信息。
严格模式 配合 Set-StrictMode -Version Latest$ErrorActionPreference = "Stop" 运行,以便在出现意外问题时快速失败。

示例情况

将所有相关用户分配到企业应用程序:

pwsh -File '.\Assign-CorrelatedUsers.ps1' -ServicePrincipalId "7A22..."

使用示例 规则 文件将所有相关用户分配到特定访问包:

pwsh -File '.\Assign-CorrelatedUsers.ps1' -ServicePrincipalId '7A22...' -RulesFile '.\access-package-rules-internal.csv' -DryRun -OutputFile '.\results-dryrun.csv'

根据定义的规则将用户分配到包:

pwsh -ExecutionPolicy Bypass -File '.\Assign-CorrelatedUsers.ps1' -ServicePrincipalId "7A22..." -RulesFile ".\access-package-rules.csv"

将用户分配到访问包,并为不符合任何已定义规则的用户指定后备包:

pwsh -ExecutionPolicy Bypass -File '.\Assign-CorrelatedUsers.ps1' -ServicePrincipalId "7A22..." -RulesFile ".\access-package-rules.csv" -AccessPackageId "fallback-pkg-id" -PolicyId "fallback-policy-id" -FallbackBehavior UseFallback

将用户分配给访问包并跳过应用程序角色分配:

pwsh -ExecutionPolicy Bypass -File '.\Assign-CorrelatedUsers.ps1' -ServicePrincipalId "7A22..." -RulesFile ".\access-package-rules.csv" -SkipAppRoleAssignment

规则文件说明

规则文件是一个标准的CSV文件,包含以下列:

Purpose
RuleGroup 共享同一组编号的行一起进行 AND 处理。 各组被独立评估。
PropertyName 目标 SCIM 属性包中的键,例如 userTypeurn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department。 可以通过为单个用户选择 “查看属性 ”或查看预配属性映射,在发现体验中找到属性名称。
Operator eq、、necontainsstartswith、或endswithregex
Value 要与之比较的值。 比较不区分大小写。
AccessPackageId 组匹配时要分配的访问包。 导航到Microsoft Entra 管理中心中的访问包时,可以在 URL 中找到此值。
PolicyId 访问包的分配策略。 导航到Microsoft Entra 管理中心中的访问包时,可以在 URL 中找到此值。

与身份治理集成

帐户发现与Microsoft Entra ID 治理一起工作,以帮助管理完整的标识生命周期。 在您在目标应用程序中发现标识后,您可以:

  • 将现有用户分配到访问包以控制访问权限,对访问包运行评审以认证访问权限,并配置生命周期工作流以自动执行生命周期管理。
  • 配置 权利管理 ,以控制谁可以请求访问应用程序。
  • 设置 生命周期工作流 ,以基于用户生命周期事件自动预配和取消预配。

有关管理应用程序访问的详细信息,请参阅 管理环境中的应用程序的管理访问权限

使用 Microsoft Graph 检索结果

除了查看Microsoft Entra 管理中心中发现的帐户之外,还可以使用Microsoft Graph以编程方式检索帐户发现结果。

使用 Microsoft Graph beta API 可以:

  • 列出租户中的身份关联报告。
  • 获取特定身份关联报告。
  • 列出报告中包含的身份。
  • 按关联状态筛选标识。

有关 API 的详细信息,请参阅以下资源:

Important

Microsoft Graph beta 终结点上提供了标识关联 API。 beta 终结点下的 API 可能会更改,不支持在生产应用程序中使用。

使用 Microsoft MCP Server for Enterprise 调查帐户发现(预览版)

可以使用 Microsoft MCP Server for Enterprise 通过以自然语言提问来调查帐户发现报告。 MCP 服务器将问题转换为只读Microsoft Graph请求,强制执行已登录用户的特权和授予 MCP 客户端的权限,并返回结果的自然语言摘要。

此选项适用于想要浏览帐户发现结果的管理员,而无需手动构造Microsoft Graph请求。 MCP 客户端还显示基础请求,以便可以查看和审核操作。

MCP 前提条件

在使用 MCP 服务器进行帐户发现之前:

  • 预配Microsoft MCP Server for Enterprise 并连接 MCP 客户端
  • 向 MCP 客户端 MCP.ProvisioningLog.Read.All 授予委派权限。
  • 使用具有受支持的 Microsoft Entra 角色的工作或学校帐户登录。 支持的角色包括应用程序管理员、云应用程序管理员、混合标识管理员、全局读取者、报表读取者、安全管理员、安全操作员和安全读取者。
  • 使用全局Microsoft云。 Microsoft MCP Server for Enterprise 和标识关联 API 目前在主权云中不可用。

MCP 服务器仅支持委派的用户交互式访问。 不支持仅应用程序访问。

示例问题

连接 MCP 客户端后,可以提出以下问题:

  • “向我显示最新的帐户发现报告。
  • “列出服务主体 <service-principal-id>的帐户发现报告。
  • “最新的帐户发现报告是否完成且没有错误?”
  • “是否有任何帐户发现报告仍在进行中?”
  • “获取标识关联报告 <report-id>。”
  • 列出<report-id>身份关联报告中的身份。
  • “报表 <report-id> 中的哪些标识是本地帐户?”
  • 报告<report-id>中的哪些身份与 Microsoft Entra 用户匹配,但没有应用分配?
  • “报表 <report-id> 中的哪些标识未能关联?”

根据问题,MCP 服务器可以执行如下请求:

GET /beta/reports/correlations
GET /beta/reports/correlations/{identityCorrelationId}
GET /beta/reports/correlations/{identityCorrelationId}/identities
GET /beta/reports/correlations/{identityCorrelationId}/identities?$filter=status eq 'uncorrelated'

了解关联状态

Microsoft 图形 API表示具有以下关联状态值的帐户发现类别:

关联类别 Microsoft Graph状态 说明
分配的用户 correlatedAssigned 目标标识与分配给企业应用程序的 Entra 用户匹配。
未分配的用户 correlatedNotAssigned 目标标识与 Entra 用户匹配,但未将 Entra 用户分配给企业应用程序。
本地帐户 uncorrelated 未找到与目标标识符对应的 Microsoft Entra ID 用户。
关联失败 failToCorrelate 关联过程未能成功评估身份。 查看为该标识返回的错误信息。

示例调查

以下对话说明了管理员如何调查报表:

  1. 问:“向我显示服务主体 <service-principal-id>的最新已完成帐户发现报告。
  2. 复制 MCP 客户端返回的报告 ID。
  3. 询问:“列出身份关联报告 <report-id> 中的身份。”
  4. 问另一个问题,包括报表 ID,例如,“报表 <report-id> 中的哪些标识是本地帐户?”或“报表 <report-id> 中的哪些标识无法关联?”

在依赖于结果之前,请查看 MCP 客户端显示的Microsoft Graph请求。 对于大型报表,客户端可能需要按照 @odata.nextLink 获取后续页面。

MCP 故障排除

如果 MCP 客户端无法检索帐户发现结果:

  • 确认 MCP 客户端具有 MCP.ProvisioningLog.Read.All 委派权限。
  • 确认当前登录的用户具有受支持的 Microsoft Entra 角色。
  • 确认该帐户已登录到包含帐户发现报告的租户。
  • 查看 MCP 客户端显示的请求和响应。
  • 检查Microsoft Graph活动日志,了解 Microsoft MCP Server for Enterprise 发出的请求。 按 MCP 服务器应用 ID e8c77dc2-69b3-43f4-bc51-3213c9d915b4筛选日志。

MCP 服务器将支持的请求转发到Microsoft Graph。 Microsoft 图形 API行为和 beta 限制也适用于通过 MCP 服务器发出的请求。

筛选和搜索结果

使用搜索和筛选功能查找特定帐户:

  • 按名称或属性值搜索帐户。
  • 按类别(本地、未分配或已分配)筛选结果。
  • 管理列,以便从目标应用程序查看导入的属性和关联状态。

适用于应用程序开发人员

要使帐户发现功能可与目标应用程序配合使用,该应用程序必须支持 RFC 7644 第 3.4.2.4 节中所述的 SCIM 分页机制。 配置服务在发现流程中使用分页从目标应用程序检索所有用户帐户。