如何使用 AAD 应用程序以编程方式执行 Kusto 查询

问题描述 投票:0回答:1

我有下面的代码来运行 kusto 查询

const string Cluster = <ClusterName>;
const string Database = <Database >;    
  
DefaultAzureCredential credential = new DefaultAzureCredential();
TokenRequestContext tokenRequestContext = new TokenRequestContext(new[] { Cluster });
AccessToken accessToken = await credential.GetTokenAsync(tokenRequestContext);

// Connect to Azure Data Explorer using the managed identity of the web app
KustoConnectionStringBuilder builder = new KustoConnectionStringBuilder($"{Cluster}/{Database}").WithAadApplicationTokenAuthentication(accessToken.Token);         

var adminProvider = KustoClientFactory.CreateCslAdminProvider(builder);
IDataReader dataReader = adminProvider.ExecuteControlCommand(Query);

上面的代码片段向我的用户详细介绍了如何成功执行查询。如何使用 AAD 应用程序运行 kusto 查询。是否可以仅使用应用程序 ID 运行查询,我没有秘密值,也没有更改 API 权限的管理员权限。

c# azure-active-directory kql azure-data-explorer
1个回答
0
投票

如何使用 AAD 应用程序执行 Kusto 查询?

要使用 Azure 广告应用程序执行 Kusto 查询,您需要在代码中使用

.WithAadApplicationKeyAuthentication

代码:

using Kusto.Data;
using Kusto.Data.Net.Client;
using static System.Net.WebRequestMethods;

class Program
{
    static void Main(string[] args)
    {
        // Replace placeholders with actual values
        string clusterUri = "https://<clustername>.<location>.kusto.windows.net";
        string database = "your-database-name";
        string applicationId = "your-app-id";
        string applicationSecret = "your-app-secret";
        string tenantId = "your tenant id";

        var kcp = new KustoConnectionStringBuilder(clusterUri, database).WithAadApplicationKeyAuthentication(applicationId, applicationSecret, tenantId);
        var kustoClient = KustoClientFactory.CreateCslQueryProvider(kcp);

        string query = "table1 | count";
        var reader =kustoClient.ExecuteQuery(query);

        while (reader.Read())
        {
            Console.WriteLine(reader.GetInt64(0));
        }
    }
}

输出:

enter image description here

上面的代码被执行并成功返回了我数据库中

Table 1
的计数。

1000

是否可以仅使用应用程序 ID 来运行查询,我没有秘密值,并且没有更改 API 权限的管理员权限。

对于 AzureAD 应用程序身份验证,您需要 ApplicationID、TenantId、Appsecret 以及 API 权限。

参考:

在 Azure 数据资源管理器中创建 Azure AD 应用程序 - Azure 数据资源管理器 |微软学习

© www.soinside.com 2019 - 2024. All rights reserved.