Authentication Azure Data Explorer(Kusto)的AAD身份验证无法通过API进行简单查询

Authentication Azure Data Explorer(Kusto)的AAD身份验证无法通过API进行简单查询,authentication,azure-data-explorer,Authentication,Azure Data Explorer,我正试图通过Python的API访问Kusto(换句话说,是一个“无头”脚本),并希望使用AAD应用程序进行身份验证。我专门处理上的示例代码,它尝试查询集群上的Samples>StormEvents表。我可以在Kusto资源管理器中运行查询,但是在尝试运行示例代码时,我得到了“调用方无权执行此操作”的消息 我按照和上的说明在Azure门户上创建AAD应用程序,并为Azure Data Explorer添加API权限。在代码中,我在client_ID字段中有来自门户的“Application(cl

我正试图通过Python的API访问Kusto(换句话说,是一个“无头”脚本),并希望使用AAD应用程序进行身份验证。我专门处理上的示例代码,它尝试查询集群上的Samples>StormEvents表。我可以在Kusto资源管理器中运行查询,但是在尝试运行示例代码时,我得到了“调用方无权执行此操作”的消息

我按照和上的说明在Azure门户上创建AAD应用程序,并为Azure Data Explorer添加API权限。在代码中,我在client_ID字段中有来自门户的“Application(client)ID”,在client_secret字段中有相应的secret。authority_id字段设置为72f988bf-86f1-41af-91ab-2d7cd011db47,这是门户以及应用程序名称(和客户端id)上的表格上显示的内容,完全可以接受

因此,代码如下(省略导入和特定机密):

cluster=”https://help.kusto.windows.net"
客户_id=“”
client_secret=“”
授权机构_id=“72f988bf-86f1-41af-91ab-2d7cd011db47”
kcsb=KustoConnectionStringBuilder.with_aad_应用程序\u密钥\u身份验证(
群集、客户端id、客户端机密、权限id
)
客户=KustoClient(kcsb)
db=“样本”
query=“StormEvents |取10”
response=client.execute(数据库,查询)
故障输出为:

azure.kusto.data.exceptions.KustoServiceError:(KustoServiceError(…),[{'error':{'code':'Forbidded','message':'调用方无权执行此操作','@type':'kusto.DataNode.exceptions.UnauthorizedDatabaseAccessException','@message':“Principal'AAD app id=(省略)'无权访问数据库'样本'。”,“@context”:{'timestamp':'2019-06-05T19:39:17.3493255Z','serviceAlias':'HELP','machineName':'KEngine000000','processName':'Kusto.WinSvc.Svc','processId':18832','threadId':25568','appDomainName':'Kusto.WinSvc.Svc.exe','clientRequestd':'KPC.execute;9ede2b2b2b2d-5fb-5fba-478c-ad8f-8306284cf6e9','activityId':'efdb96c9-da46-4d5f-547b732evityId':'33f89e2b-2347-447a-abe9-81e586d0e2a0','activityType':'DN FE ExecuteQuery','parentActivityId':'438b2bb3-26fb-4f7e-813d-bc8a5c39ce1c','activityStack':'(活动堆栈:CRID=KPC.execute;9ede2b2d-5fba-478c-ad8f-8306284cf6e9 and=efdb96c9-da46-4d5f-b739-54661e7002e3>KD查询客户端执行任务任务任务任务任务任务任务任务任务数据流/5ddd9239-e742-4edc-ab3e-55d59a1f2c99>P-WCF-Service-EXECUTEQUOTEQUOTE内部任务任务任务任务任务任务任务任务任务数据流-ICLIENTSERVICENTERITAB3-26fb-4f7e-813d-BC8C39FE)f89e2b-2347-447a-abe9-81e586d0e2a0)},“永久”:真})

我还在KustoExplorer中添加了示例集群,如文档所述

我还缺少什么吗?

是ADX集群的URL,它是一个探索性的辅助工具,只允许AAD用户(而不是AAD应用程序)进行交互式访问


要使用AAD应用程序身份验证运行自动化,您应该在自己的集群/数据库中重定向代码,并向AAD应用程序授予必要的权限(数据库用户/查看器)

谢谢,知道这一点很好,因为该示例没有指出该限制,因为它提供了所有三种身份验证技术的代码。我将与群集管理员联系,以获取AAD应用程序的权限。感谢您指出这一点。应更新该示例以包含此注释