上一篇博文中我们了解了Azure中的终结点访问控制列表,在安全方面,微软在Azure中还提供了另外一个解决方案,那就是本文我们要来了解的网络安全组NSG。网络安全组 (NSG) 包含一系列安全规则,这些规则可以允许或拒绝流向连接到 Azure 虚拟网络 (VNet) 的资源的网络流量。 可以将 NSG 关联到子网、单个 VM(经典)或附加到 VM 的单个网络接口 (NIC) (Resource Manager)。 将 NSG 关联到子网时,规则适用于连接到该子网的所有资源。 也可通过将 NSG 关联到 VM 或 NIC 来进一步限制流量。NSG 包含两组规则:入站规则和出站规则。 在每组中,规则的优先级必须保持唯一。
下图显示如何处理 NSG 规则
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 中按优先级参照以下顺序应用到流量:
- 入站流量
- 应用到子网的 NSG:如果子网 NSG 存在相应的拒绝流量的规则,则会丢弃数据包。
- 应用到 NIC (Resource Manager) 或 VM(经典)的 NSG:如果 VM\NIC NSG 存在相应的拒绝流量的规则,则会丢弃 VM\NIC 上的数据包,即使子网 NSG 存在相应的允许流量的规则。
- 出站流量
- 应用到 NIC (Resource Manager) 或 VM(经典)的 NSG:如果 VM\NIC NSG 存在相应的拒绝流量的规则,则会丢弃数据包。
- 应用到子网的 NSG:如果子网 NSG 存在相应的拒绝流量的规则,则会丢弃数据包,即使 VM\NIC NSG 存在相应的允许流量的规则。
使用Azure门户创建NSG
登录Azure门户,点击创建资源,选择网络,点击网络安全组--创建,如下图所示
输入名称,选择订阅,资源组可以新建也可以选择现有项,选择好位置,然后点击创建
资源组创建成功后,在其概述中可以看到默认的规则
在入站安全规则和出站安全规则中可以分别去添加所需的规则,如下图
下图所示为添加入站安全规则,需要填写源、源端口范围、目标、目标端口范围、优先级,选择协议和操作
还可以在说明中填写备注信息
原文地址:http://blog.51cto.com/fjcloud/2090528