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

如何在Python中使用用户分配托管标识对Kusto进行身份验证?

使用用户分配托管标识完成Azure函数到Kusto集群的身份验证

1. 先确认托管标识的Kusto权限

确保你持有的用户分配托管标识已被授予Kusto集群/数据库的对应权限(比如查询用Viewer、写入用Ingestor),可以通过Kusto查询窗口执行命令配置:

# 给数据库分配查看权限
.add database <你的数据库名> viewers ('aadapp=<托管标识clientId>')

# 给集群分配查看权限(如果需要集群级访问)
.add cluster viewers ('aadapp=<托管标识clientId>')

2. 把托管标识关联到Azure函数

门户操作

进入你的函数应用 -> 身份标识 -> 用户分配的标识 -> 添加,搜索并选中目标托管标识后保存。

AZ CLI操作

az functionapp identity assign --resource-group <你的资源组名> --name <函数应用名> --identities <托管标识principalId>

3. 在函数代码中实现身份验证

根据你使用的语言,结合Kusto SDK和托管标识凭据完成认证:

Python示例(用azure-kusto-data库)

from azure.kusto.data import KustoClient, KustoConnectionStringBuilder
from azure.identity import ManagedIdentityCredential

# 指定用户分配托管标识的clientId初始化凭据
credential = ManagedIdentityCredential(client_id="<托管标识clientId>")
# 构建Kusto连接字符串
kcsb = KustoConnectionStringBuilder.with_aad_managed_service_identity_authentication(
    "<Kusto集群URL,格式:https://xxx.kusto.windows.net>"
)
kcsb.set_credential(credential)

# 创建客户端并执行查询
client = KustoClient(kcsb)
response = client.execute_query("<你的数据库名>", "StormEvents | take 10")

C#示例(用Microsoft.Azure.Kusto.Data库)

using Microsoft.Azure.Kusto.Data;
using Microsoft.Azure.Kusto.Data.Common;

var clientId = "<托管标识clientId>";
var clusterUri = new Uri("<Kusto集群URL>");

// 基于用户分配托管标识创建认证提供器
var authProvider = new ManagedIdentityAuthenticationProvider(clientId);
var kustoClient = KustoClientFactory.CreateClient(clusterUri, authProvider);

// 执行查询
var query = "StormEvents | take 10";
var database = "<你的数据库名>";
var response = await kustoClient.ExecuteQueryAsync(database, query);

4. 验证身份是否生效

部署函数后,通过执行查询或查看函数日志确认:

  • 若能正常返回Kusto数据,说明认证成功;
  • 若出现权限错误,检查Kusto的角色分配是否正确;
  • 若出现标识未找到的错误,确认函数应用已正确关联目标托管标识。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 02:45:39