我正在尝试使用(预览版)ADXProxy 功能通过 Redash 访问 Azure Application Insights 资源。
我在 Azure 中创建了一个应用注册,并且我有一些概念验证 python 代码可以成功访问我的 Application Insights 资源并traces | take 1
使用应用程序令牌执行 Kusto 查询 ():
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 替换到我上面的程序中,我会收到一个异常告诉我:
在名为 <MY_AAD_SUBSCRIPTION_ID> 的租户中找不到名为https://ade.applicationinsights.io的资源主体。如果租户管理员未安装应用程序或租户中的任何用户未同意此应用程序,则可能会发生这种情况。您可能已将身份验证请求发送给错误的租户。
我可以在代码或 Azure 门户配置中做些什么来将我的“租户”连接到ade.applicationinsights.io
资源主体并让这个连接正常工作吗?