KustoServiceError при использовании аутентификации приложения - PullRequest
1 голос
/ 14 марта 2020

У меня возникли проблемы при попытке установить соединитель для Kusto с помощью клиентской библиотеки Kusto для Python.

Мне удалось заставить его работать, используя метод 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 Обозреватель данных (с многофакторной аутентификацией) и Azure Обозреватель данных.

Я боролся с этим некоторое время, и я не мог найти решение. Кто-нибудь имеет представление о том, что может быть проблема здесь?

Ответы [ 2 ]

3 голосов
/ 14 марта 2020

Возможны две причины:

1) Вы не дали разрешение приложению на саму базу данных. Разрешения для ресурса Azure проводника данных (мы называем его «плоскостью управления») с помощью кнопки «контроль доступа (IAM)» позволяют вашему приложению выполнять операции управления кластером (такие как добавление и удаление баз данных), а разрешения в самой базе данных позволяет выполнять операции внутри базы данных, такие как создание таблиц и выполнение запросов (мы называем это «плоскостью данных»). Обратите внимание, что вы также можете предоставить разрешения для всех баз данных в кластере, нажав кнопку «разрешения» в блейд-кластере.

Чтобы исправить это, нажмите на базу данных в Azure Portal и, как только вы окажетесь в блейд-базе данных, нажмите кнопку «Права доступа» и дайте разрешение приложению (admin, user, viewer et c.). см. снимок экрана ниже.

2) Вы не указали правильно ни одного из трех требуемых точек данных (appId, appKey и идентификатор авторизации)

Вот соответствующий снимок экрана для добавления разрешения в указанную c база данных: enter image description here

0 голосов
/ 15 марта 2020

Добавление еще контекста. Предоставление приложению делегированных разрешений ADX только позволяет вашему приложению выполнять аутентификацию пользователя для ресурсов ADX, но оно не предоставляет приложению никаких ролей для вашего указанного c ресурса ADX.

Ответ, приведенный выше, поможет вам понять, как сделать это.

...