练习 - 保护你的网络

已完成

在本练习中,你将使用 Azure 门户查看和管理防火墙规则。 你还将在使用公共终结点时配置最安全的连接。

使用以下按钮打开 Azure 门户(如果尚未这样做)。

确保网络安全

在部署 Azure SQL 数据库中的数据库时,运行的脚本已启用“允许 Azure 服务和资源访问此服务器”,这允许来自任何区域或订阅的任何资源访问你的资源。 取消选中该设置以确保对公共终结点进行最安全的配置,这一点非常重要。 未选中“允许 Azure 服务和资源访问此服务器”设置时,它会阻止除已添加的连接和网络以外的所有连接和网络

在本练习中,你将了解如何查看和编辑防火墙规则。 设置防火墙规则可能十分复杂,因为需要为所有连接指定一个 IP 地址范围,有时可以使用动态 IP 地址。 本练习末尾的演示视频中提供了用于保护网络的替代方法。

在 Azure 门户中管理防火墙规则

  1. 在 Azure 门户资源菜单中,选择“SQL 数据库”,然后选择“Azure SQL 数据库(AdventureWorks)”

  2. 在 SQL 数据库的命令栏中,选择“设置服务器防火墙”。

    Screenshot of how to go to firewalls and virtual networks.

  3. 对于“允许 Azure 服务和资源访问此服务器”,请取消选中设置旁边的框。

  4. 系统应在部署期间添加了你的计算机的客户端 IP 地址,但如果没有任何规则与客户端 IP 匹配,则在“规则名称”下添加你的 IP 地址,确保能够从 SQL Server Management Studio (SSMS) 登录

  5. 选择“保存”以保存更改。 在 SQL 数据库菜单中,选择“概述”以返回到概述页

  6. 若要确认你仍可从本地计算机进行访问,请转到 SSMS。 在“对象资源管理器”中右键单击数据库,然后选择“刷新”以刷新与 Azure SQL 数据库逻辑服务器的连接。 如果没有发生错误,则表示已成功为 IP 地址配置对 Azure SQL 数据库逻辑服务器的安全访问。

    Screenshot of how to refresh the database connection.

  7. (可选)可以通过在 SSMS 中从“新建查询”运行此代码来检查 SSMS 如何连接到 Azure SQL 数据库实例

    SELECT client_net_address FROM sys.dm_exec_connections WHERE session_id=@@SPID;
    

    结果应该是本地计算机的公共 IP 地址。 可以通过在 PowerShell(而不是 Azure Cloud Shell)的本地实例上运行以下命令来验证 IP 地址:

    (Invoke-WebRequest -UseBasicParsing -Uri "https://ipinfo.io/ip").Content
    

    你使用了类似的命令来查找模块开头的 IP 地址。 此查询应会返回相同的 IP 地址。

使用 Azure Cloud Shell 管理防火墙规则

还可以使用 Azure CLI az sql server firewall-rule 命令创建、删除和查看服务器级别防火墙规则。 可以通过 Azure 虚拟机 (VM) 的命令行界面或 PowerShell 笔记本使用 Azure CLI。 在本练习中,你将试用 Cloud Shell。 可以通过 Azure 门户打开 Cloud Shell 终端,但目前使用右侧的沙盒内置终端,这本质上是一样的。

  1. 要配置环境,请运行以下命令:

    $database_name = "AdventureWorks"
    $server = Get-AzureRmSqlServer -ResourceGroupName <rgn>Sandbox resource group name</rgn>
    $logical_server = $server.ServerName
    
  2. 输入以下命令以列出服务器的防火墙设置:

    az sql server firewall-rule list -g <rgn>Sandbox resource group name</rgn> -s $logical_server
    

    输出应是 Azure 门户中 Azure SQL 逻辑服务器的“网络”菜单的“防火墙规则”设置上每个规则的 JSON 对象。

使用 Azure 门户或 Cloud Shell 设置服务器级防火墙规则会授予客户端 IP 地址访问逻辑服务器中的所有数据库的权限。 可以在 SSMS 中使用 T-SQL 命令 EXECUTE sp_set_database_firewall_rule 配置适用于单个数据库的数据库级防火墙规则。 T-SQL 是唯一可用于为特定数据库配置防火墙规则的方法。 有关详细信息,请参阅本模块“总结”页面中的参考。

深入学习

现在,你已了解如何在服务器上和数据库级别为特定 IP 地址或 IP 地址范围更新防火墙规则。 在生产环境中,则可能还需要从各种虚拟网络或资源(例如 Azure 应用或 Azure VM)进行访问。 Azure VM 具有动态 IP 地址,这意味着地址会发生更改。 可以设置静态 IP 地址,但可能很难使用防火墙规则进行维护。 也可使用虚拟网络规则管理来自包含 VM 或其他服务的特定子网的访问。 也可配置专用终结点,这是连接到 Azure SQL 数据库逻辑服务器的最安全方法。

还可以使用“网络”菜单并转到 Azure SQL 逻辑服务器的“连接”选项卡,设置允许从客户端连接到逻辑服务器的最低 TLS 版本。

在下面的视频中,你将了解如何创建、配置和比较连接到 Azure SQL 数据库中的数据库的各种方法:

  • 允许访问 Azure 资源
  • 防火墙规则
  • 虚拟网络规则
  • 专用终结点