如何使用Azure Service Tags实现特定VNet流量控制及NSG配置疑问
- 首先明确:Azure系统自带的
VirtualNetworkService Tag默认涵盖当前订阅下所有VNet的地址空间,无法直接指定单个VNet。要实现仅允许特定VNet的流量,可通过以下两种方式:- 自定义Service Tag:
- 在Azure门户搜索“Service Tags”,进入自定义标签管理页面
- 点击“添加”,设置标签名称(如
Allow-Target-VNet),并将目标VNet的所有地址前缀添加进去 - 保存后,在需要限制访问的VNet对应的NSG中添加入站规则:源选择“Service Tag”,选中你创建的自定义标签,设置允许的协议、端口,动作设为“允许”
- 直接使用VNet地址前缀:
无需创建自定义标签,直接在NSG入站规则的“源地址范围”中填写允许访问的VNet的所有地址前缀,动作设为“允许”,同样能实现精准限制
- 自定义Service Tag:
- Azure门户UI确实不支持直接通过系统Service Tag指定单个VNet,因为系统的
VirtualNetwork标签包含所有VNet。要实现需求,可采用以下方案:- 自定义Service Tag批量管理:
将所有需要允许的VNet地址前缀添加到同一个自定义Service Tag中,然后在NSG规则里选择该自定义标签作为源即可 - 通过PowerShell/CLI批量配置:
如果不想使用自定义标签,可通过命令行工具直接将多个VNet地址前缀添加到NSG规则的源地址范围:- PowerShell示例:
$nsg = Get-AzNetworkSecurityGroup -Name "你的NSG名称" -ResourceGroupName "资源组名称" $allowedVnetPrefixes = @("10.0.0.0/16", "10.1.0.0/16") # 替换为目标VNet的地址前缀 Add-AzNetworkSecurityRuleConfig -NetworkSecurityGroup $nsg ` -Name "Allow-Specific-VNets" ` -Protocol "*" ` -SourceAddressPrefix $allowedVnetPrefixes ` -DestinationAddressPrefix "*" ` -Access Allow ` -Priority 100 ` -Direction Inbound Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg - Azure CLI示例:
az network nsg rule create \ --name Allow-Specific-VNets \ --nsg-name 你的NSG名称 \ --resource-group 资源组名称 \ --protocol '*' \ --source-address-prefixes 10.0.0.0/16 10.1.0.0/16 \ --destination-address-prefix '*' \ --access Allow \ --priority 100 \ --direction Inbound
- PowerShell示例:
- 自定义Service Tag批量管理:
- 注意:确保该允许规则的优先级高于任何拒绝所有的规则,否则规则不会生效
内容的提问来源于stack exchange,提问作者Dave L
相关产品推荐
相关产品推荐

