使用 Azure PowerShell 添加或修改多个 Azure 防火墙规则
向 Azure 防火墙或 Azure 防火墙策略添加新规则时,应使用以下步骤来减少总更新时间:
- 检索 Azure 防火墙或 Azure 防火墙策略对象。
- 添加所有新规则并在本地对象中执行其他所需的修改。 你可以将它们添加到现有规则集合中,也可以根据需要创建新的规则集合。
- 仅当所有修改完成后,才推送防火墙或防火墙策略更新。
下面的示例演示如何使用 Azure PowerShell 将多个新的 DNAT 规则添加到现有防火墙策略。 在以下情况下,你也应遵循这些相同的原则:
- 更新应用程序或网络规则。
- 更新使用经典规则管理的防火墙。
请仔细查看以下步骤。 你应首先在测试策略上试用它,以确保它按预期工作以满足你的需求。
连接到 Azure 帐户并将上下文设置为订阅
Connect-AzAccount -Environment AzureChinaCloud
Set-AzContext -Subscription "<Subscritpion ID>"
创建防火墙策略、规则集合组和规则集合的本地对象
$policy = Get-AzFirewallPolicy -Name "<Policy Name>" -ResourceGroupName "<Resource Group Name>"
$natrulecollectiongroup = Get-AzFirewallPolicyRuleCollectionGroup -Name "<Rule Collection Group Name>" -ResourceGroupName "<Resource Group Name>" -AzureFirewallPolicyName "<Firewall Policy Name>"
$existingrulecollection = $natrulecollectiongroup.Properties.RuleCollection | where {$_.Name -eq "<rule collection name"}
定义要添加的新规则
$newrule1 = New-AzFirewallPolicyNatRule -Name "dnat-rule1" -Protocol "TCP" -SourceAddress "<Source Address>" -DestinationAddress "<Destination>" -DestinationPort "<Destination Port>" -TranslatedAddress "<Translated Address>" -TranslatedPort "<Translated Port>"
$newrule2 = New-AzFirewallPolicyNatRule -Name "dnat-rule1" -Protocol "TCP" -SourceAddress "<Source Address>" -DestinationAddress "<Destination>" -DestinationPort "<Destination Port>" -TranslatedAddress "<Translated Address>" -TranslatedPort "<Translated Port>"
将新规则添加到本地规则集合对象
$existingrulecollection.Rules.Add($newrule1)
$existingrulecollection.Rules.Add($newrule2)
使用此步骤可以添加任何其他规则,或对同一规则集合组中的现有规则执行任何修改。
更新 Azure 上的规则集合
Set-AzFirewallPolicyRuleCollectionGroup -Name " <Rule Collection Group Name> " -FirewallPolicyObject $policy -Priority 200 -RuleCollection $natrulecollectiongroup.Properties.rulecollection