你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Set-AzFirewall

保存修改后的防火墙。

语法

Set-AzFirewall
   -AzureFirewall <PSAzureFirewall>
   [-AsJob]
   [-DefaultProfile <IAzureContextContainer>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

说明

Set-AzFirewall cmdlet 更新Azure 防火墙。

示例

1:更新防火墙应用程序规则集合的优先级

$azFw = Get-AzFirewall -Name "AzureFirewall" -ResourceGroupName "rg"
$ruleCollection = $azFw.GetApplicationRuleCollectionByName("ruleCollectionName")
$ruleCollection.Priority = 101
Set-AzFirewall -AzureFirewall $azFw

此示例更新Azure 防火墙的现有规则集合的优先级。 假设资源组“rg”中Azure 防火墙“AzureFirewall”包含名为“ruleCollectionName”的应用程序规则集合,上述命令将更改该规则集合的优先级,并在之后更新Azure 防火墙。 如果没有 Set-AzFirewall 命令,则对本地$azFw对象执行的所有操作都不会反映在服务器上。

2:创建Azure 防火墙并稍后设置应用程序规则集合

$azFw = New-AzFirewall -Name "AzureFirewall" -ResourceGroupName "rg" -VirtualNetworkName "vnet-name" -PublicIpName "pip-name"

$rule = New-AzFirewallApplicationRule -Name R1 -Protocol "http:80","https:443" -TargetFqdn "*google.com", "*microsoft.com" -SourceAddress "10.0.0.0"
$RuleCollection = New-AzFirewallApplicationRuleCollection -Name RC1 -Priority 100 -Rule $rule -ActionType "Allow"
$azFw.ApplicationRuleCollections = $RuleCollection

$azFw | Set-AzFirewall

在此示例中,首先创建防火墙,而无需任何应用程序规则集合。 之后会创建应用程序规则和应用程序规则集合,然后在内存中修改防火墙对象,而不会影响云中的实际配置。 若要在云中反映更改,必须调用 Set-AzFirewall。

3:更新Azure 防火墙的威胁 Intel 操作模式

$azFw = Get-AzFirewall -Name "AzureFirewall" -ResourceGroupName "rg"
$azFw.ThreatIntelMode = "Deny"
Set-AzFirewall -AzureFirewall $azFw

此示例更新资源组“rg”中Azure 防火墙“AzureFirewall”的威胁 Intel 操作模式。 如果没有 Set-AzFirewall 命令,则对本地$azFw对象执行的所有操作都不会反映在服务器上。

4:解除分配和分配防火墙

$firewall=Get-AzFirewall -ResourceGroupName rgName -Name azFw
$firewall.Deallocate()
$firewall | Set-AzFirewall

$vnet = Get-AzVirtualNetwork -ResourceGroupName rgName -Name anotherVNetName
$pip = Get-AzPublicIpAddress -ResourceGroupName rgName -Name publicIpName
$firewall.Allocate($vnet, $pip)
$firewall | Set-AzFirewall

此示例检索防火墙、解除分配防火墙并保存它。 Deallocate 命令会删除正在运行的服务,但会保留防火墙的配置。 若要在云中反映更改,必须调用 Set-AzFirewall。 如果用户希望再次启动服务,则应在防火墙上调用 Allocate 方法。 新的 VNet 和公共 IP 必须与防火墙位于同一资源组中。 同样,若要在云中反映更改,必须调用 Set-AzFirewall。

5:为强制隧道方案分配管理公共 IP 地址

$vnet = Get-AzVirtualNetwork -ResourceGroupName rgName -Name anotherVNetName
$pip = Get-AzPublicIpAddress -ResourceGroupName rgName -Name publicIpName
$mgmtPip = Get-AzPublicIpAddress -ResourceGroupName rgName -Name MgmtPublicIpName
$firewall.Allocate($vnet, $pip, $mgmtPip)
$firewall | Set-AzFirewall

此示例为强制隧道方案分配具有管理公共 IP 地址和子网的防火墙。 VNet 必须包含名为“AzureFirewallManagementSubnet”的子网。

6:将公共 IP 地址添加到Azure 防火墙

$pip = New-AzPublicIpAddress -Name "azFwPublicIp1" -ResourceGroupName "rg" -Sku "Standard" -Location "centralus" -AllocationMethod Static
$azFw = Get-AzFirewall -Name "AzureFirewall" -ResourceGroupName "rg"
$azFw.AddPublicIpAddress($pip)

$azFw | Set-AzFirewall

在此示例中,附加到防火墙的公共 IP 地址“azFwPublicIp1”。

7:从Azure 防火墙中删除公共 IP 地址

$pip = Get-AzPublicIpAddress -Name "azFwPublicIp1" -ResourceGroupName "rg"
$azFw = Get-AzFirewall -Name "AzureFirewall" -ResourceGroupName "rg"
$azFw.RemovePublicIpAddress($pip)

$azFw | Set-AzFirewall

在此示例中,从防火墙分离的公共 IP 地址“azFwPublicIp1”。

8:更改Azure 防火墙上的管理公共 IP 地址

$newMgmtPip = New-AzPublicIpAddress -Name "azFwMgmtPublicIp2" -ResourceGroupName "rg" -Sku "Standard" -Location "centralus" -AllocationMethod Static
$azFw = Get-AzFirewall -Name "AzureFirewall" -ResourceGroupName "rg"
$azFw.ManagementIpConfiguration.PublicIpAddress = $newMgmtPip

$azFw | Set-AzFirewall

在此示例中,防火墙的管理公共 IP 地址将更改为“AzFwMgmtPublicIp2”

9:将 DNS 配置添加到Azure 防火墙

$dnsServers = @("10.10.10.1", "20.20.20.2")
$azFw = Get-AzFirewall -Name "AzureFirewall" -ResourceGroupName "rg"
$azFw.DNSEnableProxy = $true
$azFw.DNSServer = $dnsServers

$azFw | Set-AzFirewall

在此示例中,DNS 代理和 DNS 服务器配置附加到防火墙。

10:更新防火墙应用程序规则集合中现有规则的目标

$azFw = Get-AzFirewall -Name "AzureFirewall" -ResourceGroupName "rg"
$ruleCollection = $azFw.GetNetworkRuleCollectionByName("ruleCollectionName")
$rule=$ruleCollection.GetRuleByName("ruleName")
$rule.DestinationAddresses = "10.10.10.10"
Set-AzFirewall -AzureFirewall $azFw

此示例更新Azure 防火墙的规则集合中现有规则的目标。 这允许在 IP 地址动态更改时自动更新规则。

11:在 Azure 防火墙 上允许活动 FTP

$azFw = Get-AzFirewall -Name "AzureFirewall" -ResourceGroupName "rg"
$azFw.AllowActiveFTP = $true

$azFw | Set-AzFirewall

在此示例中,防火墙上允许使用活动 FTP。

12:从虚拟中心解除分配和分配防火墙

$firewall=Get-AzFirewall -ResourceGroupName rgName -Name azFw
$firewall.Deallocate()
$firewall | Set-AzFirewall

$Hub = Get-AzVirtualHub -ResourceGroupName "testRG" -Name "westushub"
$firewall.Allocate($Hub.Id)
$firewall | Set-AzFirewall

此示例检索中心防火墙,解除分配中心防火墙,并保存它。 Deallocate 命令删除对虚拟中心的引用,但会保留防火墙的配置。 若要在云中反映更改,必须调用 Set-AzFirewall。 Allocate 方法将虚拟中心引用分配给防火墙。 同样,若要在云中反映更改,必须调用 Set-AzFirewall。

13:在Azure 防火墙上启用 Fat Flow 日志记录

$azFw = Get-AzFirewall -Name "ps184" -ResourceGroupName "ps774"
$azFw.EnableFatFlowLogging = $true

$azFw | Set-AzFirewall

AllowActiveFTP	                : null	
		ApplicationRuleCollections	    : Count = 0	
		ApplicationRuleCollectionsText	: "[]"	
		DNSEnableProxy	                : null	
		DNSServer	                    : null	
		DNSServersText	                : "null"	
		Etag	                        : "W/\"7533fa1b-8588-400d-857c-6bc372e14f1b\""
		FirewallPolicy	                : null	
		HubIPAddresses	                : null	
		Id	                            : "/subscriptions/aeb5b02a-0f18-45a4-86d6-81808115cacf/resourceGroups/ps774/providers/Microsoft.Network/azureFirewalls/ps184"	
		EnableFatFlowLogging	            : "true"	
		IpConfigurations	            : Count = 0	
		IpConfigurationsText	        : "[]"	
		Location	                    : "eastus"	
		ManagementIpConfiguration	    : null	
		ManagementIpConfigurationText	: "null"	
		Name	                        : "ps184"	
		NatRuleCollections	            : Count = 0	
		NatRuleCollectionsText	        : "[]"	
		NetworkRuleCollections	        : Count = 0	
		NetworkRuleCollectionsText	    : "[]"	
		PrivateRange	                : null	
		PrivateRangeText	            : "null"	
		ProvisioningState	            : "Succeeded"	
		ResourceGroupName	            : "ps774"	
		ResourceGuid	                : null	
		Sku	                            : {Microsoft.Azure.Commands.Network.Models.PSAzureFirewallSku}	
		Tag	                            : null	
		TagsTable	                    : null	
		ThreatIntelMode	                : "Alert"	
		ThreatIntelWhitelist	        : {Microsoft.Azure.Commands.Network.Models.PSAzureFirewallThreatIntelWhitelist}	
		ThreatIntelWhitelistText	    : "{\r
 \"FQDNs\": null,\r
 \"IpAddresses\": null\r\n}"	
		Type	                        : "Microsoft.Network/azureFirewalls"	
		VirtualHub	                    : null	
		Zones	                        : Count = 0	
		privateRange	                : null

在此示例中,防火墙上启用了“启用 Fat Flow 日志记录”。

14:将标准 Azure 防火墙版升级到 高级版

$azfw = Get-AzFirewall -Name "AzureFirewall" -ResourceGroupName "rg"
$azfw.Sku.Tier="Premium"
Set-AzFirewall -AzureFirewall $azfw

此示例将现有的 Azure 防火墙 Standard 升级到高级版防火墙。 升级过程可能需要几分钟时间,不需要服务停机。 成功完成升级后,可以将退出的标准策略替换为高级策略。

15:使用可用性区域解除分配和分配防火墙

$firewall=Get-AzFirewall -ResourceGroupName rgName -Name azFw
$firewall.Deallocate()
$firewall | Set-AzFirewall

$vnet = Get-AzVirtualNetwork -ResourceGroupName rgName -Name anotherVNetName
$pip = Get-AzPublicIpAddress -ResourceGroupName rgName -Name publicIpName
$firewall.Zones = "1","2","3"
$firewall.Allocate($vnet, $pip)
$firewall | Set-AzFirewall

此示例检索防火墙、解除分配防火墙并保存它。 Deallocate 命令会删除正在运行的服务,但会保留防火墙的配置。 若要在云中反映更改,必须调用 Set-AzFirewall。 如果用户想要再次启动服务,但使用 可用性区域,则需要调用 Zone 方法,以引号定义所需的可用性区域,并用逗号分隔。 如果需要删除可用性区域,则需要改为引入$null参数。 最后,应在防火墙上调用 Allocate 方法。 新的 VNet 和公共 IP 必须与防火墙位于同一资源组中。 同样,若要在云中反映更改,必须调用 Set-AzFirewall。

参数

-AsJob

在后台运行 cmdlet

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AzureFirewall

The AzureFirewall

Type:PSAzureFirewall
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Confirm

提示你在运行 cmdlet 之前进行确认。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultProfile

用于与 Azure 通信的凭据、帐户、租户和订阅。

Type:IAzureContextContainer
Aliases:AzContext, AzureRmContext, AzureCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

输入

PSAzureFirewall

输出

PSAzureFirewall