Я пытаюсь получить доступ к ресурсу Azure Application Insights через Redash, используя функцию 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()
Однако Redash не поддерживает аутентификацию токена приложения: он использует аутентификацию по ключу приложения, выполняя такой вызов, как:
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 не найден в клиенте с именем ‹MY_AAD_SUBSCRIPTION_ID›. Это может произойти, если приложение не было установлено администратором клиента или с согласия какого-либо пользователя в клиенте. Возможно, вы отправили запрос аутентификации не тому клиенту.
Могу ли я что-то сделать в коде или конфигурации портала Azure, чтобы подключить моего «клиента» к ade.applicationinsights.io
участнику ресурса и заставить это соединение работать?