gpt4 book ai didi

python - 如何使用 Python 客户端正确验证 Kusto?

转载 作者:行者123 更新时间:2023-12-02 00:18:18 24 4
gpt4 key购买 nike

我正在尝试测试我的节点和 Azure 数据资源管理器 (ADX/Kusto) 之间的连接。我正在考虑使用 python 脚本在 Kusto 上创建一个表。

请注意,我对这些都不太熟悉,因此详细步骤如下。

我正在关注这个quickstart guide在 Microsoft 文档上。

生成应用程序 ID 和 key

使用应用程序注册服务:

  1. 创建新注册(名为 kusto test): enter image description here

  2. 创建客户端 secret : enter image description here

创建 Kusto 数据库

从集群中,通过 UI 创建数据库(称为 kusto-test)

enter image description here

授权

在 ADX 集群上 > 访问控制 (IAM) > 添加角色分配。 enter image description here

Python 脚本

from azure.kusto.data.request import KustoClient, KustoConnectionStringBuilder
from azure.kusto.data.exceptions import KustoServiceError
from azure.kusto.data.helpers import dataframe_from_result_table

KUSTO_DATABASE = "kusto-test"
CLUSTER = "https://mynode.myregion.kusto.windows.net"

CLIENT_ID = "KUSTO_TEST_APP_ID" # From image above
CLIENT_SECRET = "KUSTO_TEST_PASS" # From image above

AUTHORITY_ID = "<insert here your tenant id>" #Got from https://login.windows.net/<YourDomain>/.well-known/openid-configuration/

KCSB_DATA = KustoConnectionStringBuilder.with_aad_application_key_authentication(
CLUSTER, CLIENT_ID, CLIENT_SECRET, AUTHORITY_ID
)


KUSTO_CLIENT = KustoClient(KCSB_DATA)
CREATE_TABLE_COMMAND = ".create table StormEvents (StartTime: datetime, EndTime: datetime, EpisodeId: int, EventId: int, State: string, EventType: string, InjuriesDirect: int, InjuriesIndirect: int, DeathsDirect: int, DeathsIndirect: int, DamageProperty: int, DamageCrops: int, Source: string, BeginLocation: string, EndLocation: string, BeginLat: real, BeginLon: real, EndLat: real, EndLon: real, EpisodeNarrative: string, EventNarrative: string, StormSummary: dynamic)"

RESPONSE = KUSTO_CLIENT.execute_mgmt(KUSTO_DATABASE, CREATE_TABLE_COMMAND)

dataframe_from_result_table(RESPONSE.primary_results[0])

预期:

  • 已在 ADX 上成功创建表。

实际:

  • 收到UnauthorizedDatabaseAccessException错误。
azure.kusto.data.exceptions.KustoServiceError: (KustoServiceError(...), [{u'error': {u'code': u'Forbidden', u'@permanent': True, u'@message': u"Principal '....' is not authorized to access database 'kusto-test'.", ...}, u'message': u'Caller is not authorized to perform this action', u'@type': u'Kusto.DataNode.Exceptions.UnauthorizedDatabaseAccessException'}}])

最佳答案

在 Azure 门户“访问控制”中添加所有者仅向该实体提供管理资源(也称为“控制平面”)的权限,不适用于数据库本身的权限(也称为“控制平面”) “数据平面”)。

要为该应用程序提供在数据平面中操作的权限,例如运行查询、创建表等,您需要在适用的数据库“权限”部分中授予它权限:

database permission section

关于python - 如何使用 Python 客户端正确验证 Kusto?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56334954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com