上一篇博文中我们了解了Azure中的终结点访问控制列表,在安全方面,微软在Azure中还提供了另外一个解决方案,那就是本文我们要来了解的网络安全组NSG。网络安全组 (NSG) 包含一系列安全规则,这些规则可以允许或拒绝流向连接到 Azure 虚拟网络 (VNet) 的资源的网络流量。 可以将 NSG 关联到子网、单个 VM(经典)或附加到 VM 的单个网络接口 (NIC) (Resource Manager)。 将 NSG 关联到子网时,规则适用于连接到该子网的所有资源。 也可通过将 NSG 关联到 VM 或 NIC 来进一步限制流量。NSG 包含两组规则:入站规则和出站规则。 在每组中,规则的优先级必须保持唯一。

下图显示如何处理 NSG 规则

Azure网络安全组NSG_第1张图片

NSG 资源

NSG 包含以下属性:

属性

说明

约束

注意事项

名称

NSG 的名称

必须在区域内唯一。
可以包含字母、数字、下划线、句点和连字符。
必须以字母或数字开头。
必须以字母、数字或下划线结尾。
不能超过 80 个字符。

由于可能需要创建多个 NSG,因此请确保设置命名约定,以便轻松标识 NSG 的功能。

区域

在其中创建 NSG 的 Azure 区域。

只能将多个 NSG 关联到该 NSG 所在区域中的资源。

若要了解一个区域可以有多少 NSG,请阅读 Azure 限制。

资源组

NSG 所在的资源组。

虽然 NSG 存在于一个资源组中,但可将其关联到任意资源组中的资源,只要该资源与 NSG 属于同一 Azure 区域。

资源组用于以部署单元的形式集中管理多个资源。
可以考虑将 NSG 与相关联的资源组合在一起。

规则

入站或出站规则,用于定义允许或拒绝的具体流量。


请参阅本文的 NSG 规则部分。

需要注意的是:不支持将基于终结点的 ACL 和网络安全组置于相同 VM 实例上。 如果想要使用 NSG,但已有了终结点 ACL,则请先删除该终结点 ACL。

NSG 规则

NSG 规则包含以下属性:

属性

说明

约束

注意事项

名称

规则的名称。

必须在区域内唯一。
可以包含字母、数字、下划线、句点和连字符。
必须以字母或数字开头。
必须以字母、数字或下划线结尾。
不能超过 80 个字符。

一个 NSG 中可以有多个规则,因此请确保遵循命名约定,以便标识规则的功能。

协议

要与规则匹配的协议。

TCP、UDP 或 *

使用 * 作为协议时,会包括 ICMP(仅限东西通信),以及 UDP 和 TCP,可能会减少所需规则的数量。
同时,使用 * 可能是过于宽泛的方法,因此建议只在必要时使用 *。

源端口范围

要与规则匹配的源端口范围。

单个端口号(从 1 到 65535)、端口范围(示例:1-65535)、或 *(表示所有端口)。

源端口可以是暂时的。 除非客户端程序在使用特定端口,否则请在大多数情况下使用 *。
尽可能尝试使用端口范围,这样就不需使用多个规则。
不能使用逗号对多个端口或端口范围分组。

目标端口范围

要与规则匹配的目标端口范围。

单个端口号(从 1 到 65535)、端口范围(示例:1-65535)、或 *(表示所有端口)。

尽可能尝试使用端口范围,这样就不需使用多个规则。
不能使用逗号对多个端口或端口范围分组。

方向

要与规则匹配的流量方向。

入站或出站。

入站和出站规则会根据方向分别处理。

优先级

将按优先级顺序来检查规则。 一旦应用某个规则,不再检查其他规则的匹配情况。

介于 100 到 4096 之间的数字。

考虑以 100 为增量,为每个规则创建规则跳转优先级,为将来可能创建的新规则留出空间。

操作

规则匹配时要应用的访问类型。

允许或拒绝。

请记住,如果找不到某个数据包的允许规则,则会丢弃该数据包。

默认标记

默认标记是系统提供的针对某类 IP 地址的标识符。 可以使用任何规则的源地址前缀目标地址前缀属性中的默认标记。 有三个可使用的默认标记:

  • VirtualNetwork (Resource Manager)(如果是经典部署模型,则为 VIRTUAL_NETWORK):此标记包括虚拟网络地址空间(Azure 中定义的 CIDR 范围)、所有连接的本地地址空间,以及连接的 Azure VNet(本地网络)。

  • AzureLoadBalancer (Resource Manager)(如果是经典部署模型,则为 AZURE_LOADBALANCER):此标记表示 Azure 的基础结构负载均衡器。 此标记将转换为 Azure 数据中心 IP,Azure 负载均衡器的运行状况探测源于该 IP。

  • Internet (Resource Manager)(如果是经典部署模型,则为 INTERNET):此标记表示虚拟网络外部的 IP 地址空间,可以通过公共 Internet 进行访问。

默认规则

所有 NSG 都包含一组默认规则。 默认规则无法删除,但由于给它们分配的优先级最低,可以用创建的规则来重写它们。

默认规则允许和禁止的流量如下所示:

  • 虚拟网络:从方向上来说,在虚拟网络中发起和结束的通信可以是入站通信,也可以是出站通信。

  • Internet:允许出站通信,但阻止入站通信。

  • 负载均衡器:允许 Azure 负载均衡器探测 VM 和角色实例的运行状况。 如果重写此规则,Azure 负载均衡器运行状况探测会失败,这可能对服务造成影响。

入站默认规则

名称

Priority

Source IP

Source Port

Destination IP

Destination Port

协议

Access

AllowVNetInBound

65000

VirtualNetwork

*

VirtualNetwork

*

*

允许

AllowAzureLoadBalancerInBound

65001

AzureLoadBalancer

*

*

*

*

允许

DenyAllInBound

65500

*

*

*

*

*

拒绝

出站默认规则

名称

Priority

Source IP

Source Port

Destination IP

Destination Port

协议

Access

AllowVnetOutBound

65000

VirtualNetwork

*

VirtualNetwork

*

*

允许

AllowInternetOutBound

65001

*

*

Internet

*

*

允许

DenyAllOutBound

65500

*

*

*

*

*

拒绝

将 NSG 相关联

可以根据所使用的部署模型将 NSG 关联到 VM、NIC 和子网,如下所示:

  • VM(仅经典部署模型):安全规则适用于所有出入 VM 的流量。

  • NIC(仅 Resource Manager 部署模型):安全规则适用于所有与 NSG 关联的出入 NIC 的流量。 在多 NIC VM 中,可以为每个 NIC 单独应用不同(或相同)的 NSG。

  • 子网(资源管理器部署模型和经典部署模型):安全规则适用于出入任何连接到子网的资源的任何流量。

可以将不同的 NSG 关联到 VM(或 NIC,具体取决于部署模型)以及 NIC 或 VM 连接到的子网。 安全规则在每个 NSG 中按优先级参照以下顺序应用到流量:

  • 入站流量

    1. 应用到子网的 NSG:如果子网 NSG 存在相应的拒绝流量的规则,则会丢弃数据包。

    2. 应用到 NIC (Resource Manager) 或 VM(经典)的 NSG:如果 VM\NIC NSG 存在相应的拒绝流量的规则,则会丢弃 VM\NIC 上的数据包,即使子网 NSG 存在相应的允许流量的规则。

  • 出站流量

    1. 应用到 NIC (Resource Manager) 或 VM(经典)的 NSG:如果 VM\NIC NSG 存在相应的拒绝流量的规则,则会丢弃数据包。

    2. 应用到子网的 NSG:如果子网 NSG 存在相应的拒绝流量的规则,则会丢弃数据包,即使 VM\NIC NSG 存在相应的允许流量的规则。

使用Azure门户创建NSG

登录Azure门户,点击创建资源,选择网络,点击网络安全组--创建,如下图所示

Azure网络安全组NSG_第2张图片

输入名称,选择订阅,资源组可以新建也可以选择现有项,选择好位置,然后点击创建

Azure网络安全组NSG_第3张图片

资源组创建成功后,在其概述中可以看到默认的规则

Azure网络安全组NSG_第4张图片

在入站安全规则和出站安全规则中可以分别去添加所需的规则,如下图

Azure网络安全组NSG_第5张图片

下图所示为添加入站安全规则,需要填写源、源端口范围、目标、目标端口范围、优先级,选择协议和操作

Azure网络安全组NSG_第6张图片

还可以在说明中填写备注信息

Azure网络安全组NSG_第7张图片