组织通常需要出于各种原因更新其 Azure 防火墙策略,例如载入新应用程序或工作负载、解决安全漏洞、执行维护或优化策略,方法是合并或删除未使用的规则。 这些更新可能涉及多个参与者,每个更改可能需要几分钟才能部署。
使用 Azure 防火墙策略草稿 + 部署,可以使用两个阶段方法简化此过程:
支持的方案和限制
草稿和部署功能专为特定用例设计,具有某些约束:
支持的方案
- 此功能专用于 Azure 防火墙策略。 它不支持使用经典规则配置的防火墙。
局限性
- 草稿是作为当前应用策略的克隆创建的。 创建草稿后对应用策略所做的任何更改不会反映在草稿中,除非手动更新。
- 部署草稿将替换整个已应用的策略。 创建草稿后对已应用策略所做的修改不会被保留,除非这些修改也被添加到草稿中。
- 策略草稿中不支持直接创建新的规则集合组(RCG)。
- 在任何给定时间,策略只能存在一个草稿。
先决条件
- 如果没有 Azure 订阅,可以创建一个 免费帐户 以开始使用。
- 若要将此功能与 Azure CLI 配合使用,请确保已安装 Azure 防火墙扩展并将其更新到 版本 1.2.3 或更高版本。
注释
通过 Azure PowerShell 或 Azure REST API 使用此功能时,必须先下载当前策略并基于它手动创建草稿。 相比之下,使用 Azure 门户或 CLI 会从现有策略自动生成草稿。
使用草稿 + 部署
Azure 防火墙草稿 + 部署允许在将防火墙策略应用到生产环境之前对防火墙策略进行批量更新。
在 Azure 门户中,导航到现有的防火墙策略或创建新的防火墙策略。
在 “Azure 防火墙策略 ”页上的“ 管理 ”部分下,选择“ 草稿和部署”,然后选择“ 创建新草稿”。 这会创建一个草稿,该草稿是当前应用策略的确切副本。
在草稿页上,对规则或设置进行更改或添加。 这些页面与部署的策略中的页面相同。 这些更改仅在部署草稿时生效。
若要验证更改,请返回到 “部署 ”屏幕以查看更新的规则或设置。 若要应用更改,请选择“ 部署草稿”。 部署后,草稿将替换当前策略,并成为最新版本。 部署后会删除草稿。
根据需要重复此过程,对防火墙策略进行进一步更新。
运行 az login 命令以登录到 Azure 帐户:
az login
使用 az network firewall policy draft create 命令创建草稿。 此命令创建当前已应用策略的草稿。 可以使用 --policy-name 和 --resource-group 参数指定防火墙策略的名称和资源组:
az network firewall policy draft create --policy-name fw-policy --resource-group test-rg
使用 az network firewall policy draft update 命令更新草稿草案中的设置。 此命令允许修改草稿的威胁情报模式和 IDPS 模式。 使用 --threat-intel-mode 参数设置所需的威胁情报模式和 --idps-mode 参数来配置入侵检测和防护系统(IDPS)模式:
az network firewall policy draft update --policy-name fw-policy --resource-group test-rg --threat-intel-mode Off --idps-mode Deny
更新草稿规则
使用 az network firewall policy rule-collection-group draft create 命令创建新的规则集合组 (RCG):
az network firewall policy rule-collection-group draft create --rule-collection-group-name rcg-b --policy-name fw-policy --resource-group test-rg --priority 303
将 NAT 规则集合添加到草稿中的现有 RCG
az network firewall policy rule-collection-group draft collection add-nat-collection \
--name nat_collection_1 \
--collection-priority 10003 \
--policy-name fw-policy \
--resource-group test-rg \
--rule-collection-group-name rcg-c \
--action DNAT \
--rule-name network_rule_21 \
--description "test" \
--destination-addresses "202.120.36.15" \
--source-addresses "202.120.36.13" "202.120.36.14" \
--translated-address 128.1.1.1 \
--translated-port 1234 \
--destination-ports 12000 12001 \
--ip-protocols TCP UDP
使用 az network firewall policy draft show 命令查看草稿的详细信息:
az network firewall policy draft show --policy-name fw-policy --resource-group test-rg
使用 az network firewall policy deploy 命令部署草稿以应用更改:
az network firewall policy deploy --name fw-policy --resource-group test-rg
如果您不再需要草稿,请使用az network firewall policy draft delete命令将其删除。
az network firewall policy draft delete --policy-name fw-policy --resource-group test-rg
使用 New-AzFirewallPolicyDraft cmdlet 创建当前应用策略的草稿。 指定策略名称和资源组:
New-AzFirewallPolicyDraft -AzureFirewallPolicyName fw-policy -ResourceGroupName test-rg
使用 Set-AzFirewallPolicyDraft cmdlet 更新草稿中的设置。 例如,可以更新威胁情报模式和 IDPS 模式:
Set-AzFirewallPolicyDraft -AzureFirewallPolicyName fw-policy -ResourceGroupName test-rg -ThreatIntelWhitelist $threatIntelWhitelist
使用以下 cmdlet 更新草稿规则:
New-AzFirewallPolicyRuleCollectionGroupDraft -AzureFirewallPolicyRuleCollectionGroupName rcg-a -ResourceGroupName test-rg -AzureFirewallPolicyName fw-policy -Priority 200
$rule1 = New-AzFirewallPolicyApplicationRule -Name "Allow-HTTP" -Protocol "Http:80" -SourceAddress "10.0.0.0/24" -TargetFqdn www.example.com
$rule2 = New-AzFirewallPolicyApplicationRule -Name "Allow-HTTPS-2" -Protocol "Https:443" -SourceAddress "10.0.0.0/24" -TargetFqdn "www.secureexample.com"
$ruleCollection = New-AzFirewallPolicyFilterRuleCollection -Name "Allow-Rules" -Priority 100 -Rule $rule1, $rule2 -ActionType Allow
Set-AzFirewallPolicyRuleCollectionGroupDraft -AzureFirewallPolicyRuleCollectionGroupName rcg-b -ResourceGroupName test-rg -AzureFirewallPolicyName fw-policy -Priority 400 -RuleCollection $ruleCollection
使用 Get-AzFirewallPolicyDraft cmdlet 查看草稿的详细信息:
Get-AzFirewallPolicyDraft -AzureFirewallPolicyName fw-policy -ResourceGroupName test-rg
使用 Deploy-AzFirewallPolicy cmdlet 将草稿中的更改应用于实时策略:
Deploy-AzFirewallPolicy -Name fw-policy -ResourceGroupName test-rg
如果要放弃草稿而不应用更改,请使用 Remove-AzFirewallPolicyDraft cmdlet:
Remove-AzFirewallPolicyDraft -AzureFirewallPolicyName fw-policy -ResourceGroupName test-rg
后续步骤