Как я могу пройти аутентификацию с помощью ADXProxy, используя аутентификацию по ключу приложения? - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь получить доступ к ресурсу Azure Application Insights через Reda sh, используя функцию (предварительного просмотра) ADXProxy.

Я создал регистрацию приложения в Azure, и я ' у нас есть некоторый проверочный код python, который может успешно получить доступ к моему ресурсу Application Insights и выполнить запрос Kusto (traces | take 1) с помощью токена приложения:

import azure.kusto
import azure.kusto.data.request
import msal

cluster = 'https://ade.applicationinsights.io/subscriptions/<MY_SUBSCRIPTION>/resourcegroups/<MY_RESOURCE_GROUP>/providers/microsoft.insights/components/<MY_APP_INSIGHTS_RESOURCE>'
app_id = '<MY_APP_ID>'
app_key = '<MY_SECRET>'
authority_id = '<MY_AAD_SUBSCRIPTION_ID>'

def run():

    app = msal.ConfidentialClientApplication(
        client_id=app_id, 
        client_credential=app_key, 
        authority='https://login.microsoftonline.com/<MY_AAD_SUBSCRIPTION_ID>')

    token = app.acquire_token_for_client(['https://help.kusto.windows.net/.default'])

    kcsb = azure.kusto.data.request.KustoConnectionStringBuilder.with_aad_application_token_authentication(
        connection_string=cluster,
        application_token=token['access_token']
    )

    client = azure.kusto.data.request.KustoClient(kcsb)

    result = client.execute('<MY_APP_INSIGHTS_RESOURCE>', 'traces | take 1')

    for res in result.primary_results:
        print(res)

    return 1

if __name__ == "__main__":
    run()

Однако Reda sh не поддерживает аутентификацию токена приложения: он использует аутентификацию по ключу приложения, делая вызов типа:

    kcsb = azure.kusto.data.request.KustoConnectionStringBuilder.with_aad_application_key_authentication(
        connection_string = cluster,
        aad_app_id = app_id,
        app_key = app_key,
        authority_id = '<MY_AAD_SUBSCRIPTION_ID>'
    )

Я не могу успешно подключиться к своему ресурсу App Insights, используя этот тип потока. Если я подставлю этот KustoConnectionStringBuilder в мою программу выше, я получу исключение, сообщающее мне:

Участник ресурса с именем https://ade.applicationinsights.io не найден в арендаторе с именем , Это может произойти, если приложение не было установлено администратором клиента или не было одобрено каким-либо пользователем в клиенте. Возможно, вы отправили запрос аутентификации не тому арендатору.

Могу ли я что-то сделать с помощью кода или Azure Конфигурирование портала, чтобы подключить мой «арендатор» к субъекту ресурса ade.applicationinsights.io и получить это соединение работает?

1 Ответ

1 голос
/ 29 февраля 2020

Adxproxy поддерживает только токены, создаваемые Azure Active Directory (AAD). Маркер должен быть создан для кластера Azure Data Explorer (ADX), которым вы владеете. Если у вас нет собственного кластера ADX и по какой-либо причине вы хотите получить доступ к своим ресурсам Application Insights через Adxproxy, вы всегда можете аутентифицироваться на «https://help.kusto.windows.net» и использовать этот токен.

...