[在此处输入文章标题]
之前在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"
添加或更新规则
Get-AzureNetworkSecurityGroup -Name "MyNSG01" | Set-AzureNetworkSecurityRule -Name WEB -Type Inbound -Priority 100 -Action Allow -SourceAddressPrefix ‘INTERNET‘ -SourcePortRange ‘*‘ -DestinationAddressPrefix ‘*‘ -DestinationPortRange ‘80‘ -Protocol TCP
删除规则
Get-AzureNetworkSecurityGroup -Name "MyNSG01" | Remove-AzureNetworkSecurityRule -Name WEB
将NSG关联到VM
Get-AzureVM -ServiceName "ngcloud" -Name "ngvm01" | Set-AzureNetworkSecurityGroupConfig -NetworkSecurityGroupName "MyNSG01" | Update-AzureVM
从VM中删除NSG
Get-AzureVM -ServiceName "ngcloud" -Name "ngvm01" | Remove-AzureNetworkSecurityGroupConfig -NetworkSecurityGroupName "MyNSG01" | Update-AzureVM
将 NSG 关联到子网
Get-AzureNetworkSecurityGroup -Name "MyNSG01" | Set-AzureNetworkSecurityGroupToSubnet -VirtualNetworkName ‘ngtest-network‘ –SubnetName ‘Subnet-1‘
现有V-NET和subnet
关联
查看关联的结果
从子网中删除NSG
Get-AzureNetworkSecurityGroup -Name "MyNSG01" | Remove-AzureNetworkSecurityGroupFromSubnet -VirtualNetworkName ‘ngtest-network‘ -SubnetName ‘Subnet-1‘
再次查看结果
删除NSG
Remove-AzureNetworkSecurityGroup -Name "MyNSG01"