[在此处输入文章标题]

之前在Azure上,对于网络安全,用户自己可以配置VM终结点的ACL ,但是无法针对整个V-NET或定义一个组来配置ACL。

网络安全组 (NSG) 的出现解决了这个问题,可用于控制指向虚拟网络中一个或多个虚拟机 (VM) 实例的通信。在NSG中 包含了允许或拒绝指向 VM 实例的流量的访问控制规则,并且可以随时更改 NSG 的规则。

备注:

NSG 需要区域 VNet,NSG 与关联到地缘组的 VNet 不兼容。

一个VM或子网只能关联一个NSG

目前每个NSG最多包含200个规则

目前每个订阅最多有100个NSG

1 规则内容

名称:规则的唯一标识符

类型:入站/出站

优先级: <可以指定一个介于 100 和 4096 之间的整数>

IP 地址:源 IP 范围的 CIDR

源端口范围: <介于 0 与 65000 之间的整数或范围>

目标 IP 范围:目标 IP 范围的 CIDR

目标端口范围: <介于 0 与 65000 之间的整数或范围>

协议: <允许使用 TCP、UDP 或“*”>

访问:允许/拒绝

默认规则:NSG拥有默认规则,不能删除,但是优先级最低

入站

Name

优先级

源 IP

源端口

目标 IP

目标端口

协议

访问

允许入站 VNET

65000

VIRTUAL_NETWORK

*

VIRTUAL_NETWORK

*

*

允许

允许入站 AZURE 负载平衡器

65001

AZURE_LOADBALANCER

*

*

*

*

允许

拒绝所有入站

65500

*

*

*

*

*

拒绝

出站

Name

优先级

源 IP

源端口

目标 IP

目标端口

协议

访问

允许出站 VNET

65000

VIRTUAL_NETWORK

*

VIRTUAL_NETWORK

*

*

允许

允许出站 INTERNET

65001

*

*

INTERNET

*

*

允许

拒绝所有出站

65500

*

*

*

*

*

拒绝

2 创建和管理NSG

对于NSG的关联,会有以下几种情况:

  • 将 NSG 关联到 VM ,那么该 NSG 中的网络访问规则将直接应用到发往 VM 的所有流量。
  • 将 NSG 关联到子网 ,那么NSG 中的网络访问规则将应用到该子网中的所有 VM。
  • 将2个NSG分别关联到VM和VM所在的V-NBT,那么这个VM将会收到双重保护。

每次规则或关联修改,都会在数分钟内完成更新

2.1 计划NSG

创建和关联 NSG到VM

1.创建网络安全组 (NSG)。

2.添加网络安全规则,除非默认规则足以满足需要。

3.将 NSG 关联到 VM。

4.更新 VM。

5.更新后,NSG 规则会立即生效。

更新现有的NSG

1.添加、删除或更新现有 NSG 中的规则。

2.与 NSG 关联的所有 VM 在数分钟内就会更新。如果 NSG 规则已与 VM 关联,则不需要进行 VM 更新。

更改 NSG 关联

1.将新的 NSG 关联到已与另一个 NSG 关联的 VM。

2.更新 VM。

3.新 NSG 中的规则在数分钟内就会生效。

2.2 配置NSG

目前,只能使用 PowerShell cmdlet 和 REST API 配置和修改 NSG

创建网络安全组

New-AzureNetworkSecurityGroup -Name "MyNSG01" -Location “China East” -Label "Security group for my Vnet in China East"

clip_image002

添加或更新规则

Get-AzureNetworkSecurityGroup -Name "MyNSG01" | Set-AzureNetworkSecurityRule -Name WEB -Type Inbound -Priority 100 -Action Allow -SourceAddressPrefix 'INTERNET' -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP

Azure NSG(安全组)_第1张图片

删除规则

Get-AzureNetworkSecurityGroup -Name "MyNSG01" | Remove-AzureNetworkSecurityRule -Name WEB

Azure NSG(安全组)_第2张图片

将NSG关联到VM

Get-AzureVM -ServiceName "ngcloud" -Name "ngvm01" | Set-AzureNetworkSecurityGroupConfig -NetworkSecurityGroupName "MyNSG01" | Update-AzureVM

clip_image008

从VM中删除NSG

Get-AzureVM -ServiceName "ngcloud" -Name "ngvm01" | Remove-AzureNetworkSecurityGroupConfig -NetworkSecurityGroupName "MyNSG01" | Update-AzureVM

clip_image010

NSG 关联到子网

Get-AzureNetworkSecurityGroup -Name "MyNSG01" | Set-AzureNetworkSecurityGroupToSubnet -VirtualNetworkName 'ngtest-network' –SubnetName 'Subnet-1'

现有V-NET和subnet

Azure NSG(安全组)_第3张图片

关联

clip_image014

查看关联的结果

clip_image016

从子网中删除NSG

Get-AzureNetworkSecurityGroup -Name "MyNSG01" | Remove-AzureNetworkSecurityGroupFromSubnet -VirtualNetworkName 'ngtest-network' -SubnetName 'Subnet-1'

clip_image018

再次查看结果

clip_image020

删除NSG

Remove-AzureNetworkSecurityGroup -Name "MyNSG01"

clip_image022