使用应用程序身份验证时出现KustoService错误

2024-07-07 07:05:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试使用Kusto Python客户端库设置Kusto的连接器时遇到问题

我通过执行以下操作,使用with_aad_device_authentication方法使其工作:

KCSB = KustoConnectionStringBuilder.with_aad_device_authentication(KUSTO_CLUSTER)
KCSB.authority_id = AAD_TENANT_ID

client = KustoClient(KCSB)

KUSTO_QUERY = "Table | take 10"
RESPONSE = client.execute(KUSTO_DATABASE, KUSTO_QUERY)

这要求我通过访问网页并输入库提供的代码进行身份验证

但是,当我试图使用with_aad_application_key_authentication方法连接到数据库时,它会抛出我

KustoServiceError: (KustoServiceError(...), [{'error': {'code': 'Forbidden', 'message': 'Caller is not authorized to perform this action', '@type': 'Kusto.DataNode.Exceptions.UnauthorizedDatabaseAccessException' ...

我不理解这一点,因为我已授予我的应用程序以下权限:Azure Data Explorer(具有多因素自动验证)和Azure Data Explorer

我在这个问题上挣扎了一段时间,但我想不出一个解决办法。有人知道这里有什么问题吗


Tags: 方法client客户端dataauthenticationdevicewithquery
2条回答

添加更多上下文。 将应用程序委派的权限授予ADX只允许应用程序对ADX资源执行用户身份验证,但不会授予应用程序本身在特定ADX资源上的任何角色

上面的答案指导你如何做到这一点

可能有两个原因:

1)您没有授予应用对数据库本身的权限。使用“访问控制(IAM)”按钮对Azure data explorer资源(我们称之为“控制平面”)的权限允许应用程序在群集上执行管理操作(例如添加和删除数据库),而数据库本身的权限允许在数据库内执行操作,例如创建表和执行查询(我们称之为“数据平面”)。请注意,您还可以通过单击集群刀片服务器中的“权限”按钮,为集群中的所有数据库提供权限

要修复此问题,请单击Azure portal中的数据库,进入数据库刀片服务器后,单击“权限”按钮并授予应用程序权限(管理员、用户、查看器等)。请参见下面的屏幕截图

2)您没有正确提供三个必需数据点中的任何一个(appId、appKey和authority id)

以下是在特定数据库中添加权限的相关屏幕截图: enter image description here

相关问题 更多 >