你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Kusto 工具和 SDK 时,网络安全是首要任务。 为了保护客户数据、查询和身份验证令牌,Kusto 强制实施 DNS 限制,限制与预定义的受信任域集的连接。 虽然这些限制提高了安全性,但某些方案可能需要绕过它们来支持自定义配置,例如在自定义 URI 后面托管 Kusto 或使用旧版 SDK。 这些方案包括:
- 使用自定义 URI 托管 Kusto 的客户
- 为实现冗余或高可用性,将 Kusto 托管在 Azure Front Door 后的客户
- 使用旧版 SDK 的客户,其中尚不允许使用新域
- 在新云中使用旧版 SDK 的客户
在这些情况下,Kusto SDK 和工具允许添加自定义津贴以绕过默认限制。
重要
对于后两种情况,解决问题的最佳方式是更新到你使用的 SDK 或工具的最新版本。 仅将自定义域和策略替代用作短期解决方案。
本文提供有关在 Kusto 工具中管理 DNS 限制的分步指南,包括添加受信任的主机、禁用 DNS 验证以及以编程方式自定义验证策略。
使用 Kusto Explorer 绕过 DNS 限制
打开 Kusto 资源管理器。
在 “工具” 功能区中,选择“ 选项”。
选择“连接”。
在 “其他受信任的主机”中,添加要使用的完全限定主机名或 DNS 后缀(前面有星号
*)。 可以通过用分号;分隔多个 FQDN 或 DNS 后缀来列出这些 FQDN 或 DNS 后缀。
使用 Azure 数据资源管理器 Web UI 绕过 DNS 限制
打开 Azure 数据资源管理器。
选择右上角的 “设置” 图标。
选择 连接。
在 “其他受信任的主机”中,添加要使用的完全限定主机名或 DNS 后缀(前面有星号
*)。 列出多个 FQDN 或 DNS 后缀,并用分号;将它们分隔开。
使用命令行应用程序和工具绕过 DNS 限制
对于命令行应用程序和工具,通过传递命令行参数或设置环境变量来完全禁用 DNS 验证。
注释
使用环境变量禁用 DNS 验证会影响使用 C# SDK 的所有应用程序和工具,包括 Kusto Explorer、Light Ingest、Kusto CLI 以及使用 C# Kusto SDK 开发的任何第三方应用程序。
若要禁用使用命令行参数,请将以下参数添加到工具的命令行。
-tweaks:Kusto.Cloud.Platform.Data.EnableWellKnownKustoEndpointsValidation=false
若要禁用使用环境变量,请执行以下作:
SET TWEAKS="Kusto.Cloud.Platform.Data.EnableWellKnownKustoEndpointsValidation=false"
使用 Kusto SDK 绕过 DNS 限制
使用 Kusto SDK 以编程方式控制 DNS 验证,可以通过添加受信任的主机和 DNS 域,或为 SDK 提供一个逻辑条件函数,该函数接收目标主机名,并根据连接是否被允许返回 true 或 false。
using Kusto.Data.Common;
// Add a DNS domain
KustoTrustedEndpoints.AddTrustedHosts(
new[] { new FastSuffixMatcher<EndpointContext>.MatchRule(".domain.com", exact: false, context: KustoTrustedEndpoints.KustoEndpointContext) },
replace:false);
// Add a fully qualified domain name
KustoTrustedEndpoints.AddTrustedHosts(
new[] { new FastSuffixMatcher<EndpointContext>.MatchRule("mykusto.domain.com", exact: true, context: KustoTrustedEndpoints.KustoEndpointContext) },
replace:false);
// Set a custom validation policy
KustoTrustedEndpoints.SetOverridePolicy(
(hostname) => true,
KustoTrustedEndpoints.KustoEndpointContext);