使用 SQL FQDN 配置 Azure 防火墙应用程序规则

现在可以使用 SQL FQDN 配置 Azure 防火墙应用程序规则。 这样,就可以限制为在你的虚拟网络中只能访问指定的 SQL 服务器实例。

使用 SQL FQDN 可以筛选流量:

  • 从 VNet 到 Azure SQL 数据库或 Azure Synapse Analytics。 例如:仅允许访问 sql-server1.database.chinacloudapi.cn
  • 从本地发往 VNet 中运行的 Azure SQL 托管实例或 SQL IaaS 的流量。
  • 从“分支到分支”到 VNet 中运行的 Azure SQL 托管实例或 SQL IaaS。

仅在代理模式下支持 SQL FQDN 筛选(端口 1433)。 如果在默认重定向模式下使用 SQL,则可以使用 SQL 服务标记作为网络规则的一部分来筛选访问。 如果对 SQL IaaS 通信使用非默认端口,则可以在防火墙应用程序规则中配置这些端口。

使用 Azure CLI 进行配置

  1. 使用 Azure CLI 部署 Azure 防火墙

  2. 如果筛选发往 Azure SQL 数据库、Azure Synapse Analytics 或 SQL 托管实例的流量,请确保将 SQL 连接模式设置为“代理”。 若要了解如何切换 SQL 连接模式,请参阅 Azure SQL 连接设置

    注意

    与重定向相比,SQL 代理模式可能会导致更大的延迟。 若要继续使用重定向模式(在 Azure 中建立客户端连接的默认模式),可以在防火墙网络规则中使用 SQL 服务标记筛选访问流量。

  3. 使用 SQL FQDN 创建包含应用程序规则的新规则集合,以允许访问 SQL 服务器:

     az extension add -n azure-firewall
    
     az network firewall application-rule create \ 
         --resource-group Test-FW-RG \
         --firewall-name Test-FW01 \ 
         --collection-name sqlRuleCollection \
         --priority 1000 \
         --action Allow \
         --name sqlRule \
         --protocols mssql=1433 \
         --source-addresses 10.0.0.0/24 \
         --target-fqdns sql-serv1.database.chinacloudapi.cn
    

使用 Azure PowerShell 进行配置

  1. 使用 Azure PowerShell 部署 Azure 防火墙

  2. 如果筛选发往 Azure SQL 数据库、Azure Synapse Analytics 或 SQL 托管实例的流量,请确保将 SQL 连接模式设置为“代理”。 若要了解如何切换 SQL 连接模式,请参阅 Azure SQL 连接设置

    注意

    与重定向相比,SQL 代理模式可能会导致更大的延迟。 若要继续使用重定向模式(在 Azure 中建立客户端连接的默认模式),可以在防火墙网络规则中使用 SQL 服务标记筛选访问流量。

  3. 使用 SQL FQDN 创建包含应用程序规则的新规则集合,以允许访问 SQL 服务器:

    $AzFw = Get-AzFirewall -Name "Test-FW01" -ResourceGroupName "Test-FW-RG"
    
    $sqlRule = @{
       Name          = "sqlRule"
       Protocol      = "mssql:1433" 
       TargetFqdn    = "sql-serv1.database.chinacloudapi.cn"
       SourceAddress = "10.0.0.0/24"
    }
    
    $rule = New-AzFirewallApplicationRule @sqlRule
    
    $sqlRuleCollection = @{
       Name       = "sqlRuleCollection" 
       Priority   = 1000 
       Rule       = $rule
       ActionType = "Allow"
    }
    
    $ruleCollection = New-AzFirewallApplicationRuleCollection @sqlRuleCollection
    
    $Azfw.ApplicationRuleCollections.Add($ruleCollection)    
    Set-AzFirewall -AzureFirewall $AzFw    
    

使用 Azure 门户进行配置

  1. 使用 Azure CLI 部署 Azure 防火墙

  2. 如果筛选发往 Azure SQL 数据库、Azure Synapse Analytics 或 SQL 托管实例的流量,请确保将 SQL 连接模式设置为“代理”。 若要了解如何切换 SQL 连接模式,请参阅 Azure SQL 连接设置

    注意

    与重定向相比,SQL 代理模式可能会导致更大的延迟。 若要继续使用重定向模式(在 Azure 中建立客户端连接的默认模式),可以在防火墙网络规则中使用 SQL 服务标记筛选访问流量。

  3. 在应用程序规则中添加相应的协议、端口和 SQL FQDN,然后选择“保存”。 application rule with SQL FQDN

  4. 从通过防火墙筛选流量的 VNet 中的虚拟机访问 SQL。

  5. 验证 Azure 防火墙日志是否显示允许流量。

后续步骤

要了解 SQL 代理和重定向模式,请参阅 Azure SQL 数据库连接体系结构