You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python查询Application Insights日志遇InsufficientAccessError问题排查

Python查询Application Insights日志权限问题排查

问题描述

我希望通过Python直接查询Application Insights中的日志,使用Azure Monitor Query和Azure Identity库实现,代码如下:

from azure.identity import DefaultAzureCredential
from azure.monitor.query import LogsQueryClient

cred = DefaultAzureCredential(logging_enable=True, managed_identity_client_id=my_managed_identity_client_id)

client = LogsQueryClient(cred)

response = client.query_workspace(
            workspace_id=my_workspace_id,
            query=some_query,
            timespan(some_start_time, some_end_time))

执行代码时持续报错:

(InsufficientAccessError) The provided credentials have insufficient access to perform the requested operation.

已完成的配置:

  • 为托管标识在Application Insights及运行代码的Azure Databricks工作区的IAM中配置了Contributor权限
  • 使用了Application Insights关联的Log Analytics工作区ID作为workspace_id

排查与解决方案

  • 确认权限作用范围:必须给托管标识在目标Log Analytics工作区(即my_workspace_id对应的资源)的IAM中分配权限,而非仅在Application Insights或Databricks工作区。因为query_workspace接口直接操作Log Analytics工作区,Application Insights的日志存储在关联的该工作区中,权限需直接赋予此工作区。
  • 等待权限生效延迟:IAM权限配置后通常有10-15分钟的生效延迟,若刚配置完就测试,需等待一段时间后重试。
  • 验证托管标识配置:在Databricks中确保托管标识已启用,代码中指定的my_managed_identity_client_id是正确的用户分配托管标识的客户端ID;如果是系统分配托管标识,无需指定该参数,直接使用DefaultAzureCredential()即可。
  • 使用精准权限角色:替换Contributor权限,给托管标识分配Log Analytics Reader角色(针对Log Analytics工作区)。该角色专为日志查询设计,权限更精准,避免Contributor角色可能存在的隐含限制。
  • 检查日志表访问权限:确认查询的日志表存在于指定的Log Analytics工作区中,且没有额外的表级权限限制(Log Analytics Reader默认可访问所有表)。

内容的提问来源于stack exchange,提问作者noname

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:06:13