我在尝试使用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
我在这个问题上挣扎了一段时间,但我想不出一个解决办法。有人知道这里有什么问题吗
添加更多上下文。 将应用程序委派的权限授予ADX只允许应用程序对ADX资源执行用户身份验证,但不会授予应用程序本身在特定ADX资源上的任何角色
上面的答案指导你如何做到这一点
可能有两个原因:
1)您没有授予应用对数据库本身的权限。使用“访问控制(IAM)”按钮对Azure data explorer资源(我们称之为“控制平面”)的权限允许应用程序在群集上执行管理操作(例如添加和删除数据库),而数据库本身的权限允许在数据库内执行操作,例如创建表和执行查询(我们称之为“数据平面”)。请注意,您还可以通过单击集群刀片服务器中的“权限”按钮,为集群中的所有数据库提供权限
要修复此问题,请单击Azure portal中的数据库,进入数据库刀片服务器后,单击“权限”按钮并授予应用程序权限(管理员、用户、查看器等)。请参见下面的屏幕截图
2)您没有正确提供三个必需数据点中的任何一个(appId、appKey和authority id)
以下是在特定数据库中添加权限的相关屏幕截图:![enter image description here](https://i.stack.imgur.com/ci5pt.png)
相关问题 更多 >
编程相关推荐