如何下载和分析 Microsoft Entra 预配日志

Microsoft Entra 预配日志提供有关租户中发生的预配事件的详细信息。 可以使用预配日志中捕获的信息来帮助排查已预配用户的问题。

本文介绍从 Microsoft Entra 管理中心下载预配日志的选项以及分析日志的方法。 此外还介绍了错误代码和特殊注意事项。

先决条件

若要查看预配日志,租户必须具有与之关联的 Microsoft Entra ID P1 或 P2 许可证。 若要升级 Microsoft Entra 版本,请参阅 Microsoft Entra ID P1 或 P2 入门

应用程序所有者可以查看其自己的应用程序的日志。 需有以下角色才能查看预配日志:

  • 报告读者
  • 安全读取者
  • 安全操作员
  • 安全管理员
  • 应用程序管理员
  • 云应用程序管理员
  • 拥有 provisioningLogs 权限并充当自定义角色的用户

如何查看预配日志

可通过多种方式查看或分析预配日志:

提示

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

要访问 Azure 门户中的日志:

  1. 至少以报告读取者身份登录到 Microsoft Entra 管理中心
  2. 浏览到“标识”>“监视和运行状况”>“预配日志”

如何下载预配日志

可以转到 Azure 门户中的日志并选择“下载”,来下载预配日志供以后使用。 结果将根据你所选的筛选条件进行筛选。 使筛选器尽量具体,以减少下载大小和时间。

屏幕截图显示预配日志中的“下载”按钮。

CSV 格式

CSV 下载内容包含三个文件:

  • ProvisioningLogs:下载除预配步骤和修改的属性之外的所有日志。
  • ProvisioningLogs_ProvisioningSteps:包含预配步骤和更改 ID。 可以使用更改 ID 将事件与其他两个文件相联接。
  • ProvisioningLogs_ModifiedProperties:包含已更改的特性和更改 ID。 可以使用更改 ID 将事件与其他两个文件相联接。

JSON 格式

若要打开 JSON 文件,请使用 Microsoft Visual Studio Code 等文本编辑器。 Visual Studio Code 提供语法突出显示,使文件更易于阅读。 还可以使用浏览器(例如 Microsoft Edge)以不可编辑的格式打开 JSON 文件。

整理 JSON 文件

下载的 JSON 文件采用可减少下载大小的格式。 这种格式可能使得有效负载难以阅读。 参考以下两种做法来整理文件:

  • 使用 Visual Studio Code 设置 JSON 格式

  • 使用 PowerShell 设置 JSON 格式。 此脚本以包含制表符和空格的格式生成 JSON 输出:

    $JSONContent = Get-Content -Path "<PATH TO THE PROVISIONING LOGS FILE>" | ConvertFrom-JSON

    $JSONContent | ConvertTo-Json > <PATH TO OUTPUT THE JSON FILE>

分析 JSON 文件

可以使用你熟悉的任何编程语言。 以下示例是 PowerShell 中的示例。

  • 读取 JSON 文件

    $JSONContent = Get-Content -Path "<PATH TO THE PROVISIONING LOGS FILE>" | ConvertFrom-JSON

现在,可以根据场景分析数据。 下面是几个示例:

  • 输出 JSON 文件中的所有作业 ID:

    foreach ($provitem in $JSONContent) { $provitem.jobId }

  • 输出操作为“create”的事件的所有更改 ID:

    foreach ($provitem in $JSONContent) { if ($provItem.action -eq 'Create') { $provitem.changeId } }

要点

以下是一些有关如何分析预配日志的提示和注意事项:

  • 如果使用的是高级版,Azure 门户会将报告的预配数据存储 30 天;如果使用的是免费版,则存储 7 天。 可以将预配日志路由到 Azure Monitor 日志,以便保留 30 天以上。

  • 例如,可将更改 ID 特性用作唯一标识符,这可能有助于与产品支持人员交互。

  • 你可能会看到不在范围内的用户的已跳过事件。

    • 示例 1:如果范围设置为 all users and groups 且具有安装范围筛选器,则可能会看到不满足范围条件的用户被跳过的日志。
    • 示例 2:如果将范围设置为 assigned users and groups,则可能继续将日志中的用户视为跳过,即使这些用户并未分配给应用程序。 这是由于配置服务从目录接收更改的方式导致的。
  • 预配日志不显示角色导入(适用于 AWS、Salesforce 和 Zendesk)。 可以在审核日志中找到角色导入日志。

错误代码

使用下表来更好地了解如何解决在预配日志中发现的错误。

错误代码 说明
Conflict、
EntryConflict
在 Microsoft Entra ID 或应用程序中更正有冲突的属性值。 或者,如果应该匹配并接管有冲突的用户帐户,请检查匹配特性配置。 有关配置匹配特性的详细信息,请查看文档
TooManyRequests 由于目标应用已过载并且接收的请求过多,因此拒绝了更新用户的此项尝试。 无需采取任何措施。 此尝试已自动停用。 Microsoft 也会收到此问题的通知。
InternalServerError 目标应用返回了意外的错误。 目标应用程序出现的服务问题可能阻止了此操作正常进行。 此尝试将在 40 分钟后自动重试。
InsufficientRights、
MethodNotAllowed、
NotPermitted、
未授权
Microsoft Entra 已对目标应用程序进行身份验证,但无权执行更新。 查看目标应用程序提供的任何说明,以及相关的应用程序教程
UnprocessableEntity 目标应用程序返回了意外的响应。 目标应用程序的配置可能不正确,或者目标应用程序出现的服务问题可能阻止了此操作正常进行。
WebExceptionProtocolError 连接到目标应用程序时发生 HTTP 协议错误。 无需采取任何措施。 此尝试将在 40 分钟后自动重试。
InvalidAnchor 预配服务以前创建或匹配的用户不再存在。 确保该用户存在。 若要强制对所有用户进行新的匹配,请使用 Microsoft Graph API 重启作业

重启预配将触发初始周期,这可能需要一段时间才能完成。 重启预配还会删除运行预配服务所用的缓存。 这意味着,必须再次评估租户中的所有用户和组,并可能会删除某些预配事件。
NotImplemented 目标应用返回了意外的响应。 应用配置可能不正确,或者目标应用出现的服务问题可能阻止了此操作正常进行。 查看目标应用程序提供的任何说明,以及相关的应用程序教程
MandatoryFieldsMissing、
MissingValues
由于缺少必需的值,无法创建用户。 更正源记录中缺少的特性值,或者检查匹配特性配置,确保未省略必填字段。 详细了解如何配置匹配特性。
SchemaAttributeNotFound 由于指定的特性在目标应用程序中不存在,无法执行该操作。 请参阅有关特性自定义的文档,并确保配置正确。
InternalError Microsoft Entra 预配服务中发生内部服务错误。 无需采取任何措施。 此尝试将在 40 分钟后自动停用。
InvalidDomain 由于特性值包含无效域名,无法执行该操作。 更新用户的域名,或将域名添加到目标应用程序中的允许列表。
超时 由于目标应用程序做出响应花费的时间过长,无法完成该操作。 无需采取任何措施。 此尝试将在 40 分钟后自动重试。
LicenseLimitExceeded 由于该用户没有可用的许可证,无法在目标应用程序中创建该用户。 为目标应用程序购买更多的许可证。 或者,检查用户分配和特性映射配置,确保使用正确的特性分配正确的用户。
DuplicateTargetEntries 由于发现目标应用程序中的多个用户使用了配置的匹配特性,无法完成该操作。 从目标应用程序中删除重复的用户,或者重新配置特性映射
DuplicateSourceEntries 由于发现多个用户使用了配置的匹配特性,无法完成该操作。 删除重复的用户,或者重新配置特性映射
ImportSkipped 评估每个用户时,系统将尝试从源系统导入该用户。 如果所导入的用户缺少特性映射中定义的匹配属性,则往往会发生此错误。 如果匹配特性的用户对象中缺少某个值,系统将无法评估范围限定、匹配或导出更改。 出现此错误并不意味着该用户在范围内,因为尚未评估用户的范围限定。
EntrySynchronizationSkipped 预配服务已成功查询源系统并已识别用户。 未对用户采取进一步的操作,已跳过该用户。 用户可能已超出范围,或者用户可能已在无需做出进一步的更改的目标系统中。
SystemForCrossDomainIdentity
ManagementMultipleEntriesInResponse
用于检索用户或组的 GET 请求在响应中收到多个用户或组。 系统预期仅在响应中收到一个用户或组。 例如,如果你执行 GET Group 请求来检索某个组并提供筛选器来排除成员,而跨域标识管理系统 (SCIM) 终结点返回了这些成员,则此错误就会出现。
SystemForCrossDomainIdentity
ManagementServiceIncompatible
Microsoft Entra 预配服务无法分析来自第三方应用程序的响应。 请与应用程序开发人员合作,确保 SCIM 服务器与 Microsoft Entra SCIM 客户端兼容。
SchemaPropertyCanOnlyAcceptValue 目标系统中的属性只能接受一个值,但是源系统中的属性具有多个值。 确保将单值特性映射到引发错误的属性,将源中的值更新为单值,或从映射中删除该特性。

跨租户同步的错误代码

使用下表来更好地了解如何解决在跨租户同步的预配日志中发现的错误。

错误代码 原因 解决方案
Microsoft Entra ID
CannotUpdateObjectsOriginated
InExternalService
同步引擎无法更新目标租户中的一个或多个用户属性。

由于强制实施授权源 (SOA),操作在 Microsoft Graph API 中失败。 目前,列表中显示以下属性:
Mail
showInAddressList
在某些情况下(例如,当 showInAddressList 属性是用户更新的一部分时),同步引擎可能会在没有违规属性的情况下自动重试(用户)更新。 否则,你需要直接在目标租户中更新属性。
AzureDirectory
B2BManagementPolicy
CheckFailure
允许自动兑换的跨租户同步策略失败。

同步引擎会进行检查,以确保目标租户的管理员已创建允许自动兑换的入站跨租户同步策略。 同步引擎还会检查源租户的管理员是否启用了自动兑换的出站策略。
确保已为源租户和目标租户启用自动兑换设置。 有关详细信息,请参阅自动兑换设置
Microsoft Entra ID
QuotaLimitExceeded
租户中的对象数超出了目录限制。

Microsoft Entra ID 对可在租户中创建的对象数有限制。
检查是否可以提高配额。 若要了解目录限制和提高配额的步骤,请参阅 Microsoft Entra 服务限制和局限性
InvitationCreationFailure Microsoft Entra 预配服务尝试邀请目标租户中的用户。 该邀请失败。 进一步调查可能需要联系客户支持。
Microsoft Entra ID
已禁止
外部协作设置已阻止邀请。 导航到用户设置,并确保允许外部协作设置
InvitationCreation
FailureInvalidPropertyValue
可能的原因:
* 主要 SMTP 地址为无效值。
* UserType 既不是来宾,也不是成员
* 不支持组电子邮件地址
可能的解决方案:
* 主要 SMTP 地址具有有效值。 解决此问题可能需要更新源用户的邮件属性。 有关详细信息,请参阅准备与 Microsoft 365 进行目录同步
* 确保 userType 属性预配为来宾或成员类型。 可以通过检查属性映射来修复此问题,以了解 userType 属性的映射方式。
* 用户的电子邮件地址与租户中某个组的电子邮件地址一致。 更新两个对象其中之一的电子邮件地址。
InvitationCreation
FailureAmbiguousUser
受邀用户具有的代理地址与目标租户中的某个内部用户一致。 代理地址必须唯一。 若要解决此错误,请删除目标租户中的现有内部用户,或将此用户从同步范围中移除。
Microsoft Entra ID
CannotUpdateObjects
MasteredOnPremises
如果目标租户中的用户最初从 AD 同步到 Microsoft Entra ID 并转换为外部用户,则授权来源仍在本地,并且无法更新用户。 无法通过跨租户同步来更新用户
EntityTypeNotSupported 组可用于确定预配范围内的用户。 无法同步组对象。 客户无需执行任何操作。 这是跳过的事件。 如果使用按需预配,请确保选择用户而不是要预配的组。

后续步骤