如何调查代理 ID 交互式登录

Microsoft Entra运行状况监视在检测到租户活动发生重大更改时提供租户级别的运行状况信号和警报。 代理 ID 交互式登录场景可帮助你使用用户委托的上下文调查代理登录中的失败情况。

本文介绍如何解释场景、将警报与登录和审核日志相关联,以及缓解常见问题。 有关共享的调查工作流,请参阅调查 Microsoft Entra 运行状况监视警报。

Important

Microsoft Entra运行状况方案监视和警报目前以预览版提供。 此信息与可能在发布前进行实质性修改的预发行版产品相关。 Microsoft 不对此处提供的信息作任何明示或默示的担保。

了解交互式的含义

在运行状况监视中,交互描述代理的用户委托上下文。 这并不意味着每次代理令牌请求都需要人类用户输入密码或完成 MFA 提示。 交互式代理可以凭借委派给它的权限代表人类用户行事,以访问该用户的资源。 有关该身份验证流,请参阅 对用户进行身份验证并为交互式代理获取令牌。

若要调查此运行状况情形,请区分调用标识与令牌主体。 代理登录属性提供这两个维度:

Property 所解答的问题 使用方法
agent.agentType 谁已登录? 识别调用身份,例如代理身份实例(agenticAppInstance)。
agent.agentSubjectType 该令牌是代表谁请求的? 识别令牌主体。 交互式运行状况方案选择 agentIDuser 对象。
agent.agentSubjectParentId 哪个父标识与主体相关联? 当此值可用时,将代理的用户帐户与其父标识相关联。
agent.parentAppId 哪个父应用程序与调用代理相关联? 当此值可用时,将调用代理与其蓝图相关联。

注释

代理 ID 用户是代理的用户帐户,而不是人工用户帐户。 它允许代理使用用户上下文和委托的权限进行操作。 运行状况监视选择 agentSubjectType = agentIDuser 不是对代表用户通过 on-behalf-of(OBO)流程行事的每个代理的测试。 不要将代理的用户帐户和人工 OBO 令牌主体视为可互换的。

代理 ID 自主登录是一个单独的运行状况场景,用于代理登录并以自身身份运行,而不是使用此处监视的用户委托上下文。 代理标识和指定的服务主体可以代表这些代理。 有关应用程序权限流,请参阅 身份验证和获取自治代理的令牌。

运行状况场景不属于登录日志类别

四种登录日志描述了身份验证是如何发生的:

登录日志类型 身份验证活动
交互式登录 用户提供身份验证因素,例如密码或 MFA 响应。
非交互式用户登录 应用程序或操作系统组件代表用户进行身份验证,而无需提示用户。
服务主体登录 应用程序身份进行身份验证。
托管标识登录 托管身份进行身份验证。

代理活动可以出现在这些日志类型中。 具体而言,Agent ID 交互式登录运行状况场景使用用户登录名(非交互式)日志中的代理用户活动。 仅筛选 用户登录(交互式) 或 isInteractive = true 可能会漏掉与此场景相关的失败。 有关详细信息,请参阅 Microsoft Entra 代理 ID 日志。

Prerequisites

对每个调查任务使用最低特权角色。 查看警报不会授予更改代理帐户的凭据、同意或条件访问策略的权限。

  • 需要具有 Microsoft Entra P1 或 P2 许可证的租户才能查看运行状况方案信号。
  • 需要具有非试用版Microsoft Entra P1 或 P2 许可证以及至少 100 名每月活动用户的租户才能查看警报并接收警报通知。
  • 报表读取者 是查看运行状况信号、警报、警报配置和登录日志的最低特权角色。
  • Helpdesk Administrator 是可更新警报和警报通知配置的最低权限角色。
  • 对于 Microsoft Graph,使用HealthMonitoringAlert.Read.All读取警报,或使用HealthMonitoringAlert.ReadWrite.All读取并更新警报。 这些权限不会授予对登录日志的访问权限。
  • 使用AuditLog.Read.All通过 Microsoft Graph 读取登录日志。 读取已应用的条件访问策略需要其他权限和受支持的角色。 请参阅 列出 signIns 权限。

有关完整的运行状况角色要求,请参阅Microsoft Entra运行状况最低特权角色。

调查信号并发出警报

从警报的时间范围和受影响的实体开始,然后使用日志来确定配置更改还是令牌获取问题导致了失败。

  1. 至少以报表读者身份登录到Microsoft Entra 管理中心。

  2. 浏览到 Entra ID>监视和运行状况>运行状况,然后选择 运行状况监视。

  3. 选择 代理 ID 交互式登录。如果方案未在活动警报中列出,请选择 “所有方案 ”以查看其信号。

    “运行状况监视”的屏幕截图,其中突出显示了代理 ID 交互式登录方案。

  4. 查看 代理 ID 交互式登录完成量 和 代理 ID 交互式登录失败量 图。 将更改与代理的预期使用情况和最近的部署进行比较。

  5. 从方案概述中,选择一个处于活动状态的代理 ID 交互式登录失败次数大幅增加警报。 记录异常时间范围并查看 信号 和 受影响的实体 部分。

    代理 ID 交互式登录方案概述的屏幕截图,其中显示了完成和失败信号以及活动故障警报。

  6. 在 “受影响的实体”下,为应用程序和用户选择 “查看”。 使用这些标识缩小日志调查范围。 这些列表是受影响实体的示例,而不是每个失败请求的列表。

  7. 浏览到 Entra ID>Agents,然后在 Agents 边栏中选择“登录日志”。 选择 “用户登录(非交互式)”,将日期范围设置为异常时间范围,并将 “状态” 筛选为 “失败”。

    从代理打开的登录日志的屏幕截图,其中突出显示了Entra ID和代理,选中了非交互式用户登录选项卡,状态设置为“失败”。

  8. 将受影响的应用程序和用户与单个事件相关联。 查看Microsoft Entra 智能体 ID 日志中所述的代理程序详细信息。 如果调用标识筛选器排除了这些事件,请通过 Microsoft Graph 检查agentSubjectType,而不要假设没有匹配的失败。

  9. 打开失败事件并查看其错误代码、失败原因、应用程序、资源和条件访问结果。 如果需要升级问题,请记录请求 ID、关联 ID 和时间戳。 请参阅 登录日志活动详细信息。

  10. 查看 审核日志 ,了解代理标识、蓝图、代理用户帐户、委派权限授予以及故障开始前不久的相关策略的更改。

故障量增加本身并不能证明发生了服务中断或攻击。 将失败和完成趋势与部署活动进行比较,并在更改访问权限之前确认单个登录事件的原因。

将警报与Microsoft Graph相关联

使用 运行状况监视 API 检索所选警报及其扩充。 查看警报提供的影响摘要和任何支持查询。 用所选警报的 ID 替换 {alertId}。 扩展将检索受影响的资源示例,该示例默认不会返回。 请参阅 “获取运行状况监视警报”。

GET https://microsoftgraph.chinacloudapi.cn/beta/reports/healthMonitoring/alerts/{alertId}?$expand=enrichment/impacts/microsoft.graph.healthmonitoring.directoryobjectimpactsummary/resourceSampling
Prefer: include-unknown-enum-members

对于聚合的非交互式用户活动,请使用 getSummarizedNonInteractiveSignIns。 以下请求使用文档中说明的应用程序筛选器将结果缩小到受影响的应用程序。 将 {application-client-id} 替换为应用程序的 appId,而不是其服务主体对象 ID。

GET https://microsoftgraph.chinacloudapi.cn/beta/auditLogs/getSummarizedNonInteractiveSignIns(aggregationWindow='h1')?$filter=appId eq '{application-client-id}'
Prefer: include-unknown-enum-members

包括 Prefer 标头,以接收来自可演变枚举的 agentIDuser。 遵循响应中返回的任何 @odata.nextLink 内容。 在返回的数据中,选择其中 agent.agentSubjectType 为 agentIDuser 且 status.errorCode 非零的行。 查看 appId、userPrincipalName、agent 和 signInCount 属性。 选择交互式方案的对象时,不需要 agent.agentType 有一个特定值。

summarizedSignIn 资源跨多个维度聚合事件。 用于 signInCount 了解请求量;不要将响应行计数为单个登录或唯一受影响的用户。 聚合和日志可用性可能与运行状况图不同,因此不要期望总计完全匹配。

对于单个事件,显式包含非交互式事件类型,并将示例 UTC 时间戳替换为您的调查时间范围。 如果没有事件类型筛选器, List signIns API 默认仅返回交互式用户登录。

GET https://microsoftgraph.chinacloudapi.cn/beta/auditLogs/signIns?$filter=createdDateTime ge 2026-10-05T10:00:00Z and createdDateTime lt 2026-10-05T11:00:00Z and signInEventTypes/any(t: t eq 'nonInteractiveUser')
Prefer: include-unknown-enum-members

在返回的事件中,将 agent.agentSubjectType = agentIDuser 与受影响的应用程序、用户和非零错误代码相关联。 使用单个事件的失败原因和其他详细信息来选择缓解措施。

注释

这些Microsoft Graph示例使用/beta。 Beta API 可能会更改,且不支持用于生产应用程序。

缓解常见问题

使用匹配登录事件中的错误代码,而不仅仅是警报标题。 以下示例是起点,而不是详尽的列表。 错误含义在Microsoft 标识平台错误参考中定义。

AADSTS65001 表示用户或管理员尚未同意该应用程序。 检查受影响的应用程序、资源和请求的范围。 授予给不同代理标识或针对不同资源的权限无法实现预期的访问。

  1. 确认代理所需的委派权限,以及代理是使用显式授予还是从其蓝图继承的权限。
  2. 根据租户的同意策略,要求授权管理员或适当的授予同意的用户仅授予所需的权限。
  3. 重试令牌请求,确认新的匹配登录事件已成功。

有关配置指南,请参阅授予代理对Microsoft 365的访问权限,以及配置代理标识蓝图的可继承权限。

令牌断言已过期或无效

AADSTS500133 指示断言不在其有效时间范围内。 AADSTS50013 表示无效的断言,并可能有多个原因,包括过期或格式不正确的令牌。 不要假定每个断言错误都有相同的原因。

  1. 查看失败原因并识别失败的令牌交换阶段。
  2. 要求代理开发人员检查断言有效性、过期和受众,并通过相应的流获取新的令牌,而不是重复提交相同的无效断言。
  3. 对于人工用户 OBO,请验证传入的用户令牌是否面向代理标识 blueprint,而不是下游资源。 请参阅 代理中的代表流。
  4. 对于代理的用户帐户,请根据 代理的用户帐户模拟协议验证父标识和令牌链。 不要指示代理的用户帐户使用密码登录;它不支持供人工用户使用的凭据。

条件访问阻止令牌颁发

AADSTS53003 表示条件访问阻止了令牌颁发。 拦截可能是有意的,因此不要仅为了减少故障量而禁用策略。

  1. 查看失败事件的 条件访问 详细信息,包括目标资源和策略结果。
  2. 将策略的预期范围与受影响的身份进行比较。 查看审计日志,了解最近的策略或分配更改。
  3. 如果该阻止是预期的,请保留该安全控制。 如果作用域是意外的,请让策略所有者仅更正受影响的分配或配置。

请参阅 排查条件访问登录问题 并 调查条件访问策略更改。

蓝图凭据无效或已过期

AADSTS7000215 指示客户端密钥无效。 AADSTS7000222 表示已过期的客户端机密密钥。 蓝图凭据链中的失败可能会阻止下游令牌获取。

  1. 要求代理开发人员识别失败请求使用的凭据和客户端 ID。 验证请求是否使用预期的租户和蓝图。
  2. 更正无效凭据,或使用批准的部署过程轮换过期的凭据。 凭据属于蓝图,而不是代理标识或代理的用户帐户。
  3. 在从部署中删除旧凭据之前验证新的令牌请求。

有关凭据模型和支持的身份验证选项,请参阅代理标识蓝图和Microsoft代理标识平台错误代码。

确认恢复

纠正根本原因后,确认受影响的应用程序和主体的新登录事件成功,并且失败量将恢复到其预期模式。 在将新日志与运行状况图进行比较之前,考虑处理延迟。

仅在调查警报后将其标记为 已忽略。 关闭此警报并不能解决根本的登录问题。 有关警报状态和通知指南,请参阅调查Microsoft Entra运行状况监视警报和配置运行状况警报通知。