你当前正在访问 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 限制

  1. 打开 Kusto 资源管理器。

  2. “工具” 功能区中,选择“ 选项”。

  3. 选择“连接”

  4. “其他受信任的主机”中,添加要使用的完全限定主机名或 DNS 后缀(前面有星号 *)。 可以通过用分号 ;分隔多个 FQDN 或 DNS 后缀来列出这些 FQDN 或 DNS 后缀。

    “选项”编辑器的屏幕截图,其中突出显示了“其他受信任的主机”字段。

使用 Azure 数据资源管理器 Web UI 绕过 DNS 限制

  1. 打开 Azure 数据资源管理器

  2. 选择右上角的 “设置” 图标。

  3. 选择 连接

  4. “其他受信任的主机”中,添加要使用的完全限定主机名或 DNS 后缀(前面有星号 *)。 列出多个 FQDN 或 DNS 后缀,并用分号 ;将它们分隔开。

    ADX 设置编辑器的屏幕截图,其中突出显示了“其他受信任的主机”字段。

使用命令行应用程序和工具绕过 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 提供一个逻辑条件函数,该函数接收目标主机名,并根据连接是否被允许返回 truefalse


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);