如何使用应用程序密钥身份验证对ADXProxy进行身份验证



我正试图使用(预览(ADXProxy功能通过Redash访问Azure Application Insights资源。

我在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资源主体并使此连接正常工作吗?

Adxproxy只支持Azure Active Directory(AAD(铸造的令牌。必须为您拥有的Azure Data Explorer群集(ADX(创建令牌。如果您没有自己的ADX集群,并且出于任何原因想要通过Adxproxy访问Application Insights资源,您都可以通过https://help.kusto.windows.net'并使用该令牌。

相关内容

  • 没有找到相关文章

最新更新