使用网络安全组控制网络访问

已完成

在实施将 ERP 系统移动到 Azure 这一项目的过程中,必须确保服务器具有适当的隔离,这样才能确保只有受到允许的系统可以建立网络连接。 例如,假设你拥有为 ERP 应用存储数据的数据库服务器。 你想阻止被禁止的系统通过网络与这些数据服务器进行通信,同时允许应用服务器与它们进行通信。

网络安全组

网络安全组可以筛选 Azure 资源中传入和传出的网络流量。 它们还包含安全规则,通过配置这些规则,可以允许或拒绝入站和出站流量。 可以使用网络安全组来筛选 VM 间或子网间的流量,无论是在虚拟网络中还是在 Internet 中。

网络安全组的分配和评估

网络安全组被分配到网络接口或子网。 将网络安全组分配给子网时,这些规则将应用于该子网中的所有网络接口。 通过将网络安全组关联至 VM 的网络接口,可以进一步限制流量。

在将网络安全组应用于子网和网络接口时,每个网络安全组都是单独评估的。 入站流量先由应用于子网的网络安全组评估,然后由应用于网络接口的网络安全组评估。 与之相反的是,来自 VM 的出站流量将先由应用于网络接口的网络安全组评估,然后由应用于子网的网络安全组评估。

网络安全组关系图。

将网络安全组应用于子网而不是单独的网络接口,可以简化管理工作。 采用此方法,还可以确保特定子网内的所有 VM 都受到同一组规则的保护。

可以对每个子网和网络接口应用一个网络安全组。 网络安全组支持 TCP(传输控制协议)、UDP(用户数据报协议)和 ICMP(Internet 控制消息协议),并在 OSI(开放系统互连)模型的第 4 层运行。

在此制造企业场景中,网络安全组有助于保护网络。 你可以控制可连接到应用服务器的计算机。 可配置网络安全组,只让特定范围的 IP 地址连接到这些服务器。 你甚至可以仅允许在特定端口中传入或传出的访问或来自单个 IP 地址的访问,进一步限制这一点。 可以将这些规则应用于通过本地网络远程连接的设备,或者在 Azure 中的资源之间应用。

安全规则

网络安全组包含一个或多个安全规则。 可配置安全规则以允许或拒绝流量。

规则具有多个属性:

properties 解释
名称 网络安全组中的唯一名称
优先级 介于 100 和 4096 之间的数字
源和目标 可以是任何值,也可以是单个 IP 地址、无类域间路由 (CIDR) 块(例如 10.0.0.0/24)、服务标记或应用安全组
协议 TCP、UDP 或任意协议
方向 规则适用于入站流量还是出站流量
端口范围 单个端口或包含多个端口的范围
操作 允许或拒绝流量

网络安全组安全规则按优先级进行评估。 它们使用 5 元组信息(源、源端口、目标、目标端口和协议)来允许或拒绝流量。 当规则的条件与设备配置匹配时,将停止处理规则。

例如,假设公司已创建一条安全规则,允许端口 3389 (RDP) 上的入站流量流向 Web 服务器,且优先级为 200。 接下来,假设另一位管理员创建了一条规则,拒绝端口 3389 上的入站流量,且优先级为 150。 拒绝规则优先,因为系统首先处理该规则。 优先级为 150 的规则会在优先级为 200 的规则之前处理。

使用网络安全组时,连接是有状态的。 自动允许同一个 TCP/UDP 会话返回流量。 例如,允许端口 80 上流量的入站规则同样允许 VM 响应请求(通常是在临时端口上)。 无需使用对应的出站规则。

对于 ERP 系统,ERP 应用的 Web 服务器连接到它们各自子网中的数据库服务器。 可以应用安全规则来声明,从 Web 服务器到数据库服务器唯一允许的通信是用于 SQL Server 数据库通信的端口 1433。 所有到数据库服务器的其他流量都将被拒绝。

默认安全规则

创建网络安全组时,Azure 会创建多个默认规则。 这些默认规则是无法更改的,但是可以用自己的规则来覆盖它们。 这些默认规则允许虚拟网络和 Azure 负载均衡器之间的连接。 它们还允许到 Internet 的出站通信,并拒绝来自 Internet 的入站流量。

针对入站流量的默认规则为:

优先级 规则名称 说明
65000 AllowVnetInbound 允许虚拟网络内任何 VM 之间的入站流量
65001 AllowAzureLoadBalancerInbound 允许从默认负载均衡器到子网内的任何 VM 的流量
65500 DenyAllInBound 拒绝从任何外部源到任何 VM 的流量

针对出站流量的默认规则为:

优先级 规则名称 说明
65000 AllowVnetOutbound 允许虚拟网络内任何 VM 之间的出站流量
65001 AllowInternetOutbound 允许从任何 VM 传往 Internet 的出站流量
65500 DenyAllOutBound 拒绝从任何内部 VM 到虚拟网络外部的系统的流量

扩充式安全规则

可使用网络安全组的扩充式安全规则来简化大量规则的管理。 在需要实现更复杂的规则的网络集时,扩充式安全规则也能提供帮助。 使用扩充式安全规则,可以将以下选项添加至单个安全规则中:

  • 多个 IP 地址
  • 多个端口
  • 服务标记
  • 应用安全组

假设公司需要限制对数据中心内的资源的访问,这些资源分布在多个网络地址范围间。 使用扩充式规则,可以将这些所有范围添加到单个规则中,降低网络安全组中的管理开销和复杂性。

服务标记

可使用服务标记进一步简化网络安全组的安全性操作。 可以允许或拒绝发往指定 Azure 服务的流量(全球或按区域)。

使用服务标记,可以按资源或按服务来限制访问,从而简化 VM 和 Azure 虚拟网络的安全性操作。 服务标记表示一组 IP 地址,有助于简化安全规则的配置。 对于可以使用标记指定的资源,无需了解它们的 IP 地址或端口详细信息。

可以限制对多种服务的访问。 Microsoft 管理服务标记(这意味着你无法创建自己的服务标记)。 一些标记示例包括:

  • VirtualNetwork:表示 Azure 中任意位置的所有虚拟网络地址,如果使用的是混合连接,则还包括本地网络中的虚拟网络地址。
  • AzureLoadBalancer:表示 Azure 的基础结构负载均衡器。 此标记将转换为主机的虚拟 IP 地址 (168.63.129.16),Azure 的运行状况探测源于该 IP。
  • Internet:表示虚拟网络地址外部任何可公开访问的内容,包括具有公共 IP 地址的资源。 一个此类资源是 Azure 应用服务的 Web 应用功能。
  • AzureTrafficManager:表示 Azure 流量管理器的 IP 地址。
  • 存储:表示 Azure 存储的 IP 地址空间。 可以指定是允许还是拒绝流量。 还可以指定是否仅允许访问特定区域,但是无法选择单独的存储帐户。
  • SQL:表示 Azure SQL 数据库、Azure Database for MySQL、Azure Database for PostgreSQL 和 Azure Synapse Analytics 服务的地址。 可以指定是允许还是拒绝流量,还可以限制为特定区域。
  • AppService:表示 Azure 应用服务的地址前缀。

应用安全组

使用应用安全组,可以为特定应用使用的资源配置网络安全。 可以在逻辑上对 VM 进行分组,无需考虑它们的 IP 地址或子网分配情况。

可在网络安全组中使用应用安全组,将安全规则应用于一组资源。 可以更轻松地部署和纵向扩展特定的应用工作负载。 你可以将新的 VM 部署添加到一个或多个应用安全组,该 VM 会自动为该工作负载选取安全规则。

通过应用安全组,你可以将网络接口组合在一起。 然后可以将应用安全组作为网络安全组中的源或目标规则使用。

例如,公司在虚拟网络中有许多前端服务器。 必须能通过端口 80 和 8080 访问 Web 服务器。 必须能通过端口 1433 访问数据库服务器。 将 Web 服务器的网络接口分配给一个应用安全组,然后将数据库服务器的网络接口分配给另一个应用安全组。 然后在网络安全组中创建两个入站规则。 一个规则允许将 HTTP 流量发送至 Web 服务器应用安全组中的所有服务器。 另一个规则允许将 SQL 流量发送至数据库服务器应用安全组中的所有服务器。

应用安全组图。

如果不使用应用安全组,则需要为每个 VM 创建单独的规则。 或者,需要将网络安全组添加到子网,然后将所有 VM 添加到该子网。

应用安全组的主要优势在于它能简化管理工作。 在部署或重新部署应用服务器时,可以轻松地添加和删除应用安全组的网络接口。 还可以动态地将新规则应用于应用安全组,这些规则随后会自动应用于该应用安全组中的所有 VM。

网络安全组的适用情况

最佳做法是始终使用网络安全组,以帮助保护网络资产,使其不接收不需要的流量。 网络安全组在网络层提供精细的访问控制,且消除了为每个 VM 或虚拟网络设置安全规则的复杂性。