使用 Azure PowerShell 添加或修改多个 Azure 防火墙规则

向 Azure 防火墙或 Azure 防火墙策略添加新规则时,应使用以下步骤来减少总更新时间:

  1. 检索 Azure 防火墙或 Azure 防火墙策略对象。
  2. 添加所有新规则并在本地对象中执行其他所需的修改。 你可以将它们添加到现有规则集合中,也可以根据需要创建新的规则集合。
  3. 仅当所有修改完成后,才推送防火墙或防火墙策略更新。

下面的示例演示如何使用 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

后续步骤