可易

授予 Agent 365 可观测性权限

可易团队阅读约 4 分钟

本文说明如何把 Agent365.Observability.OtelWrite 应用角色授给 Foundry 托管智能体的 Entra 身份,以便向 Agent 365 写入遥测,并给出核验与排障。

目录

#授予 Agent 365 可观测性权限

向 Foundry 托管智能体授予向 Microsoft Agent 365 导出遥测的权限:把 Agent365.Observability.OtelWrite 应用角色分配给该托管智能体的 Entra 智能体身份(Entra Agent Identity)。

当你的托管智能体被配置为向 Agent 365 发送遥测,并且需要 Microsoft Entra 权限来写入可观测性数据时,使用本流程。

先决条件

  • Azure CLI 2.x 或更高版本,并且已经登录。运行 az --version 确认。
  • 在 Microsoft Entra ID 中拥有全局管理员(Global Administrator)或应用程序管理员(Application Administrator)角色,以便管理应用角色分配。
  • 一个已部署、并配置为向 Agent 365 发送遥测的 Foundry 托管智能体。见为 Microsoft Foundry 配置 Agent 365 数据采集。
  • 能访问 Azure 门户中托管智能体的应用程序资源,以便取得其 Entra 智能体身份对象 ID。
  • 租户中存在 Agent365Observability 服务主体。

注意

托管智能体必须已经部署,其 Entra 智能体身份才会存在。如果在步骤 1 中找不到智能体身份对象 ID,见排查。

找出所需的 ID

在分配应用角色之前,先收集这三个值。

值说明示例
principalId托管智能体的 Entra 智能体身份对象 ID47bd3468-237c-4542-8e5a-ca37993e9605
resourceId你的租户中 Agent365Observability 服务主体对象 ID9918adcd-eb42-4743-a98e-71027476fd7a
appRoleIdAgent365.Observability.OtelWrite 应用角色 ID8f71190c-00c8-461d-a63b-f74abde9ba52
  1. 取得托管智能体的 Entra 智能体身份对象 ID。在 Azure 门户中打开你的智能体应用程序资源。在概述(Overview)窗格中选择 JSON 视图(JSON View),选择最新的 API 版本,并复制智能体身份对象 ID(agentIdentityId)。更多信息见智能体身份。

把这个值保存为 <AGENT_PRINCIPAL_ID>。如果找不到该值,见排查。

注意

对于脚本化工作流,可以用预览版 Microsoft Graph 端点 GET /beta/servicePrincipals/microsoft.graph.agentIdentity 列出智能体身份,并复制你的智能体的 id。该端点处于 beta,不支持用于生产。

  1. 取得 Agent365Observability 服务主体的对象 ID:
az rest --method GET \
  --uri "https://graph.microsoft.com/v1.0/servicePrincipals?\$filter=displayName eq 'Agent365Observability'" \
  --query "value[0].id" \
  --output tsv

注意

这些命令使用 bash 语法。在 PowerShell 中,用反引号转义美元符号($filter)。也可以把整个 URI 放进单引号,这样会抑制 PowerShell 中的变量展开。

把这个值保存为 <AGENT365_OBSERVABILITY_SP_ID>。

注意

appRoleId 的值是固定的,不因租户而变——它是 Agent365.Observability.OtelWrite 角色的众所周知标识符。直接从上表复制;不需要用命令再取一次。

分配可观测性应用角色

把 Agent365.Observability.OtelWrite 应用角色分配给托管智能体的 Entra 智能体身份。

注意

替换下面命令中出现的两处 <AGENT_PRINCIPAL_ID>——一处在 URI 路径中,一处在请求体中。把 <AGENT365_OBSERVABILITY_SP_ID> 替换为 Agent365Observability 服务主体对象 ID。appRoleId 的值保持不变。

  • 运行命令:
az rest --method POST \
   --uri "https://graph.microsoft.com/v1.0/servicePrincipals/<AGENT_PRINCIPAL_ID>/appRoleAssignments" \
   --body '{
     "principalId": "<AGENT_PRINCIPAL_ID>",
     "resourceId": "<AGENT365_OBSERVABILITY_SP_ID>",
     "appRoleId": "8f71190c-00c8-461d-a63b-f74abde9ba52"
   }'

成功的请求返回 HTTP 201,以及一个包含分配详情的 JSON 对象,其中有 principalId、resourceId 和 appRoleId。

注意

--body 的值使用单引号包裹的 JSON,这在 bash 中有效。在 PowerShell 中,把 JSON 存成文件并用 --body @body.json 传入,或使用转义了内部双引号的 here-string。

核验分配

在测试遥测导出之前,先核验角色分配存在。

  1. 运行下面的命令:
az rest --method GET \
  --uri "https://graph.microsoft.com/v1.0/servicePrincipals/<AGENT_PRINCIPAL_ID>/appRoleAssignments" \
  --query "value[?appRoleId=='8f71190c-00c8-461d-a63b-f74abde9ba52']"
  1. 确认响应中包含 Agent365.Observability.OtelWrite 应用角色的一条分配。
  1. 分配出现之后,通过在 Microsoft Agent 365 中查看追踪,测试托管智能体的遥测流。见为 Microsoft Foundry 配置 Agent 365 数据采集。

注意

应用角色分配可能需要几分钟才会传播。如果分配后立刻导出遥测失败,等待 2–5 分钟再试。

排查

现象可能原因解决办法
在 JSON 视图中找不到智能体身份对象 ID托管智能体尚未部署,或你看的是错误的资源。Entra 智能体身份在智能体首次创建或发布时创建。确认托管智能体已部署,然后重新检查 JSON 视图。更多信息见智能体身份。
找不到 Agent365Observability 服务主体你的租户中尚未预配 Agent 365 可观测性服务。联系 Microsoft 365 管理员,核验该服务已为你的租户启用。
POST 返回 HTTP 403登录用户没有创建应用角色分配的权限。确认登录账户在 Microsoft Entra ID 中拥有全局管理员(Global Administrator)或应用程序管理员(Application Administrator)角色。
az rest 返回 HTTP 401Azure CLI 会话未被授权调用 Microsoft Graph API。用 Graph 范围重新认证:az login --scope https://graph.microsoft.com/.default。
重复分配冲突(HTTP 409)该应用角色已经分配给这个 Entra 智能体身份。用核验分配中的 GET 命令核验现有分配。无需进一步操作。
核验用的 GET 返回空数组分配尚未传播,或 <AGENT_PRINCIPAL_ID> 与 Entra 智能体身份对象 ID 不一致。等待 5 分钟后重新运行 GET 命令。确认 <AGENT_PRINCIPAL_ID> 与 JSON 视图中的智能体身份对象 ID 完全一致。

PRIMARY_SOURCE: https://learn.microsoft.com/en-us/azure/foundry/agents/how-to/grant-agent-365-permissions

  • #Agent 365
  • #Entra
  • #应用角色
  • #遥测
  • #Foundry