我有下面的代码来运行 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 权限的管理员权限。
如何使用 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));
}
}
}
输出:
上面的代码被执行并成功返回了我数据库中
Table 1
的计数。
1000
是否可以仅使用应用程序 ID 来运行查询,我没有秘密值,并且没有更改 API 权限的管理员权限。
对于 AzureAD 应用程序身份验证,您需要 ApplicationID、TenantId、Appsecret 以及 API 权限。
参考: