使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息。
适用于:✅ Azure Data Explorer
Microsoft Entra 应用程序身份验证要求创建应用程序并将其注册到Microsoft Entra ID。 在 Microsoft Entra 租户中创建应用程序注册时,会自动创建服务主体。
可以在Azure portal中创建应用注册,也可以以编程方式使用Azure CLI创建。 选择适合你的方案的选项卡。
注册应用
登录到 Azure portal 并打开 Microsoft Entra ID 边栏选项卡。
浏览到 App registrations 并选择新注册。
为应用程序命名,例如“example-app”。
选择支持的帐户类型,它决定了谁可以使用应用程序。
在“重定向 URI”下,选择“Web”作为要创建的应用程序类型。 URI 是可选的,本例中将其留空。
选择“注册”。
设置身份验证
服务主体可以使用两种类型的身份验证:基于密码的身份验证(应用程序机密)和基于证书的身份验证。 以下部分介绍如何对应用程序的凭据使用基于密码的身份验证。 或者可以使用 X509 证书对应用程序进行身份验证。
在本部分中,你将复制以下值:应用程序 ID 和密钥值。 将这些值粘贴到某个位置(如文本编辑器),以便在步骤 配置数据库的客户端凭据。
浏览到“概述”边栏选项卡。
复制“应用程序(客户端) ID”和“目录(租户) ID”。
注意
需要应用程序 ID 和租户 ID 才能授权服务主体access数据库。
在“证书和机密”边栏选项卡中,选择“新建客户端密码”。
输入说明和到期时间。
选择 添加 。
复制密钥值。
注意
离开此页后,将无法访问密钥值。
现已创建了 Microsoft Entra 应用程序和服务主体。
为应用程序配置委托的权限 - 可选
如果应用程序需要使用调用用户的凭据access数据库,请为应用程序配置委派权限。 例如,如果要生成 Web API 并且想使用调用 API 的用户的凭据进行身份验证。
如果只需要对授权的数据资源access,可以跳过本部分并继续向数据库access对服务主体进行。
浏览到“应用注册”的“API 权限”边栏选项卡。
选择添加权限。
选择“我的组织使用的 API”。
搜索并选择Azure Data Explorer。
在“委托的权限”中,选择“user_impersonation”框。
选择“添加权限”。
向数据库授予服务主体access
创建应用程序注册后,需要向数据库授予相应的服务主体access。 以下示例为查看器提供access。 有关其他角色,请参阅 Kusto 基于角色的 access control。
使用上一步骤中复制的应用程序 ID 和租户 ID 的值。
在query editor中执行以下命令,将占位符值ApplicationID和TenantID替换为实际值:
.add database <DatabaseName> viewers ('aadapp=<ApplicationID>;<TenantID>') '<Notes>'例如:
.add database Logs viewers ('aadapp=00001111-aaaa-2222-bbbb-3333cccc4444;9876abcd-e5f6-g7h8-i9j0-1234kl5678mn') 'App Registration'最后一个参数是字符串,当查询与数据库关联的角色时,该字符串会显示为注释。
注意
创建完应用程序注册后,可能会有几分钟的延迟,之后才可以引用它。 如果收到了找不到应用程序的错误,请等待并重试。
有关角色的详细信息,请参阅基于基于Access control。
使用应用程序凭据access数据库
使用应用程序凭据通过 client 库以编程方式access数据库。
. . .
string applicationClientId = "<myClientID>";
string applicationKey = "<myApplicationKey>";
string authority = "<myApplicationTenantID>";
. . .
var kcsb = new KustoConnectionStringBuilder($"https://{clusterName}.kusto.chinacloudapi.cn/{databaseName}")
.WithAadApplicationKeyAuthentication(
applicationClientId,
applicationKey,
authority);
var client = KustoClientFactory.CreateCslQueryProvider(kcsb);
var queryResult = client.ExecuteQuery($"{query}");
注意
为之前创建的应用程序注册(服务主体)指定应用程序 id 和密钥。
有关详细信息,请参阅如何在应用中使用Microsoft身份验证库(MSAL)进行身份验证和通过 .NET Core Web 应用使用Azure Key Vault。
疑难解答
“资源无效”错误
如果应用程序用于对用户或access的应用程序进行身份验证,则必须为服务应用程序设置委派权限。 声明应用程序可以对用户或应用程序进行身份验证以进行access。 进行身份验证时,不这样做将导致出现类似于以下的错误:
AADSTS650057: Invalid resource. The client has requested access to a resource which is not listed in the requested permissions in the client's application registration...
你需要按照说明为应用程序配置委托的权限。
“启用用户同意”错误
你的 Microsoft Entra 租户管理员可以制定一种策略,阻止租户用户向应用程序提供同意。 用户尝试登录到应用程序时,这种情况将导致出现类似于以下的错误:
AADSTS65001: The user or administrator has not consented to use the application with ID '<App ID>' named 'App Name'
这时需要联系 Microsoft Entra 管理员,向租户中的所有用户授予同意,或者为特定应用程序启用用户同意。