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

使用Kusto Python SDK导入ADLS Gen2 Blob至ADX的权限需求及授予对象问询

问题

我正尝试通过Kusto Python SDK将ADLS Gen2中的追加Blob导入至Azure Data Explorer(ADX)。以下是代码片段:

blob_descriptor = BlobDescriptor(
    "https://<STORAGEACC>.dfs.core.windows.net/<CONTAINER>/<BLOB>.gz"
)
res=client.ingest_from_blob(blob_descriptor, ingestion_properties=ingestion_props)

执行.show ingestion failures后出现报错,现咨询:

  • 访问该Blob需要哪些权限?
  • 这些权限需授予ADX集群还是运行Python脚本的客户端?

注:已为ADX集群及自身授予'Storage Blob Data Contributor'权限,当前客户端使用with_aad_device_authentication()测试。


回答

所需权限

针对ADLS Gen2追加Blob的导入场景,核心权限需求如下:

  • Storage Blob Data Reader:这是基础权限,用于读取Blob内容和容器元数据,ADX需要读取Blob内容来完成解压、解析和导入操作。
  • Storage Blob Data Contributor:该权限可覆盖读取需求,若导入过程中需要临时修改Blob元数据(比如标记已导入状态),或容器有特殊权限限制,此权限也能满足要求(你已配置此权限,可覆盖基础访问需求)。

权限授予对象

权限授予对象取决于你使用的 ingestion 模式:

  1. ADX托管 ingestion(默认模式):
    • 此模式下由ADX集群的托管标识(系统分配或用户分配)访问Blob,因此需要将权限授予ADX集群的托管标识安全主体,而非集群资源本身。你提到已为ADX集群授权,需确认是给托管标识而非集群资源直接配置权限。
  2. 客户端直接 ingestion:
    • 若Python客户端直接读取Blob并发送至ADX,则需给运行脚本的客户端身份(即你通过with_aad_device_authentication()认证的用户身份)授予权限。你已给自己配置权限,这部分是正确的,但需确认客户端是否用该身份完成了Blob访问的授权流程。

额外排查建议

  • 验证Blob URL的正确性:确保ADLS Gen2的DFS端点路径、容器名和Blob名无误,且Blob实际存在。
  • 查看.show ingestion failures的具体报错详情:比如是否是权限拒绝、路径不存在或身份认证失败,这能更精准定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:13:13