共用方式為


教學課程:使用 Azure PowerShell 保護您的虛擬中樞

在本教學課程中,您會在一個區域中建立具有虛擬中樞的虛擬 WAN 執行個體,並在虛擬中樞內部署 Azure 防火牆以保護連線。 在此範例中,您會示範虛擬網路之間的安全連線。 虛擬網路和站對站、點對站或 ExpressRoute 分支之間的流量也會受到虛擬安全中樞的支援。

在本教學課程中,您會了解如何:

  • 部署虛擬 WAN
  • 部署 Azure 防火牆和設定自訂路由
  • 測試連線能力

重要

虛擬 WAN 是中樞內所提供中樞和服務集合。 您可以部署所需的任意虛擬 WAN 數目。 在虛擬 WAN 中樞內有多種服務,例如 VPN 和 ExpressRoute 等等。 這些服務都會自動部署在可用性區域中 (除了 Azure 防火牆),前提是該區域支援可用性區域。 若要將現有的 Azure Virtual WAN 中樞升級至安全中樞,並讓 Azure 防火牆使用可用性區域,您必須使用 Azure PowerShell,如本文稍後所述。

必要條件

  • 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

  • PowerShell 7

    進行本教學課程時,您必須在 PowerShell 7 本機上執行 Azure PowerShell。 若要安裝 PowerShell 7,請參閱 從 Windows PowerShell 5.1 遷移至 PowerShell 7

  • 「Az.Network」模組版本必須是 4.17.0 或更高版本。

登入 Azure

Connect-AzAccount
Select-AzSubscription -Subscription "<sub name>"

初始虛擬 WAN 部署

在第一個步驟中,您需要設定一些變數,並建立資源群組、虛擬 WAN 執行個體和虛擬中樞:

# Variable definition
$RG = "vwan-rg"
$Location = "westeurope"
$VwanName = "vwan"
$HubName =  "hub1"
$FirewallTier = "Standard" # or "Premium"

# Create Resource Group, Virtual WAN and Virtual Hub
New-AzResourceGroup -Name $RG -Location $Location
$Vwan = New-AzVirtualWan -Name $VwanName -ResourceGroupName $RG -Location $Location -AllowVnetToVnetTraffic -AllowBranchToBranchTraffic -VirtualWANType "Standard"
$Hub = New-AzVirtualHub -Name $HubName -ResourceGroupName $RG -VirtualWan $Vwan -Location $Location -AddressPrefix "192.168.1.0/24" -Sku "Standard"

建立兩個虛擬網路,並將其連線到中樞作為輪輻:

# Create Virtual Network
$Spoke1 = New-AzVirtualNetwork -Name "spoke1" -ResourceGroupName $RG -Location $Location -AddressPrefix "10.1.1.0/24"
$Spoke2 = New-AzVirtualNetwork -Name "spoke2" -ResourceGroupName $RG -Location $Location -AddressPrefix "10.1.2.0/24"
# Connect Virtual Network to Virtual WAN
$Spoke1Connection = New-AzVirtualHubVnetConnection -ResourceGroupName $RG -ParentResourceName  $HubName -Name "spoke1" -RemoteVirtualNetwork $Spoke1 -EnableInternetSecurityFlag $True
$Spoke2Connection = New-AzVirtualHubVnetConnection -ResourceGroupName $RG -ParentResourceName  $HubName -Name "spoke2" -RemoteVirtualNetwork $Spoke2 -EnableInternetSecurityFlag $True

此時,您已具備功能完整的虛擬 WAN,可提供任意連線性。 若要以安全性增強,您必須將 Azure 防火牆部署到每個虛擬中樞。 您可以使用防火牆原則有效率地管理虛擬 WAN 的 Azure 防火牆執行個體。 因此,這個範例中也會建立防火牆原則:

# New Firewall Policy
$FWPolicy = New-AzFirewallPolicy -Name "VwanFwPolicy" -ResourceGroupName $RG -Location $Location
# New Firewall Public IP
$AzFWPIPs = New-AzFirewallHubPublicIpAddress -Count 1
$AzFWHubIPs = New-AzFirewallHubIpAddress -PublicIP $AzFWPIPs
# New Firewall
$AzFW = New-AzFirewall -Name "azfw1" -ResourceGroupName $RG -Location $Location `
            -VirtualHubId $Hub.Id -FirewallPolicyId $FWPolicy.Id `
            -SkuName "AZFW_Hub" -HubIPAddress $AzFWHubIPs `
            -SkuTier $FirewallTier

注意

下列防火牆建立命令不會使用可用性區域。 如果您想要使用此功能,則需要額外的參數 -Zone。 本文結尾的升級一節會提供一個範例。

您可以選擇啟用從 Azure 防火牆到 Azure 監視器的記錄,但在此範例中,您會使用防火牆記錄來證明流量有通過防火牆:

# Optionally, enable looging of Azure Firewall to Azure Monitor
$LogWSName = "vwan-" + (Get-Random -Maximum 99999) + "-" + $RG
$LogWS = New-AzOperationalInsightsWorkspace -Location $Location -Name $LogWSName -Sku Standard -ResourceGroupName $RG
Set-AzDiagnosticSetting -ResourceId $AzFW.Id -Enabled $True -Category AzureFirewallApplicationRule, AzureFirewallNetworkRule -WorkspaceId $LogWS.ResourceId

部署 Azure 防火牆和設定自訂路由

注意

這是當「中樞間」設定設定為 [停用] 時,使用 Azure 防火牆管理員保護來自 Azure 入口網站的連線時所部署的設定。 如需如何在「中樞間」設定為 [啟用] 時,使用 powershell 設定路由的指示,請參閱啟用路由意圖

您現在已在中樞內擁有 Azure 防火牆,但仍需要修改路由,讓虛擬 WAN 透過防火牆傳送來自虛擬網路和來自分支的流量。 您可以分兩個步驟執行此作業:

  1. 設定所有虛擬網路連線 (以及分支連線 (如果有的話)) 以傳播至 None 路由表。 此設定的作用是其他虛擬網路和分支不會知道其前置詞,因此不會以其作為路由目的地。
  2. 現在您可以在 Default 路由表 (預設會將與有虛擬網路和分支相關聯) 中插入靜態路由,以便將所有流量傳送至 Azure 防火牆。

從第一個步驟開始,將您的虛擬網路連線設定為傳播至 None 路由表:

# Configure Virtual Network connections in hub to propagate to None
$VnetRoutingConfig = $Spoke1Connection.RoutingConfiguration    # We take $Spoke1Connection as baseline for the future vnet config, all vnets will have an identical config
$NoneRT = Get-AzVhubRouteTable -ResourceGroupName $RG -HubName $HubName -Name "noneRouteTable"
$NewPropRT = @{}
$NewPropRT.Add('Id', $NoneRT.Id)
$PropRTList = @()
$PropRTList += $NewPropRT
$VnetRoutingConfig.PropagatedRouteTables.Ids = $PropRTList
$VnetRoutingConfig.PropagatedRouteTables.Labels = @()
$Spoke1Connection = Update-AzVirtualHubVnetConnection -ResourceGroupName $RG -ParentResourceName  $HubName -Name "spoke1" -RoutingConfiguration $VnetRoutingConfig
$Spoke2Connection = Update-AzVirtualHubVnetConnection -ResourceGroupName $RG -ParentResourceName  $HubName -Name "spoke2" -RoutingConfiguration $VnetRoutingConfig

現在您可以繼續進行第二個步驟,將靜態路由新增至 Default 路由表。 在此範例中,您會套用 Azure 防火牆管理員在虛擬 WAN 中保護連線時所產生的預設設定,但您可以變更靜態路由中的前置詞清單,以符合您的特定需求:

# Create static routes in default Route table
$AzFWId = $(Get-AzVirtualHub -ResourceGroupName $RG -name  $HubName).AzureFirewall.Id
$AzFWRoute = New-AzVHubRoute -Name "all_traffic" -Destination @("0.0.0.0/0", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16") -DestinationType "CIDR" -NextHop $AzFWId -NextHopType "ResourceId"
$DefaultRT = Update-AzVHubRouteTable -Name "defaultRouteTable" -ResourceGroupName $RG -VirtualHubName  $HubName -Route @($AzFWRoute)

注意

上述 New-AzVHubRoute 命令中,字串「all_traffic」作為參數「-Name」的值且具有特殊意義:如果您使用此確切字串,本文中套用的設定將會正確地反映在 Azure 入口網站 (防火牆管理員 --> 虛擬中樞 --> [您的中樞] --> 安全性設定) 中。 如果使用不同的名稱,將會套用所需的設定,但不會反映在 Azure 入口網站中。

啟用路由意圖

如果您想要透過部署在虛擬 WAN 中樞的 Azure 防火牆傳送中樞間和區域間流量,您可以改為啟用路由意圖功能。 如需關於路由意圖的詳細資訊,請參閱路由意圖文件

注意

這是當「中樞間」設定設定為 [啟用] 時,使用 Azure 防火牆管理員保護來自 Azure 入口網站的連線時所部署的設定。

# Get the Azure Firewall resource ID
$AzFWId = $(Get-AzVirtualHub -ResourceGroupName <thname> -name  $HubName).AzureFirewall.Id

# Create routing policy and routing intent
$policy1 = New-AzRoutingPolicy -Name "PrivateTraffic" -Destination @("PrivateTraffic") -NextHop $firewall.Id
$policy2 = New-AzRoutingPolicy -Name "PublicTraffic" -Destination @("Internet") -NextHop $firewall.Id
New-AzRoutingIntent -ResourceGroupName "<rgname>" -VirtualHubName "<hubname>" -Name "hubRoutingIntent" -RoutingPolicy @($policy1, $policy2)

如果您在虛擬 WAN 中使用非 RFC1918 前置詞,例如虛擬網路或內部部署中的 40.0.0.0/24,請在路由意圖設定完成之後,在 defaultRouteTable 中新增其他路由。 請務必將此路由命名為 private_traffic。 如果路由命名為其他名稱,則會套用所需的組態,但不會反映在 Azure 入口網站中。

# Get the defaultRouteTable
$defaultRouteTable = Get-AzVHubRouteTable -ResourceGroupName routingIntent-Demo -HubName wus_hub1 -Name defaultRouteTable

# Get the routes automatically created by routing intent. If private routing policy is enabled, this is the route named _policy_PrivateTraffic. If internet routing policy is enabled, this is the route named _policy_InternetTraffic. 
$privatepolicyroute = $defaultRouteTable.Routes[1]


# Create new route named private_traffic for non-RFC1918 prefixes
$private_traffic = New-AzVHubRoute -Name "private-traffic" -Destination @("30.0.0.0/24") -DestinationType "CIDR" -NextHop $AzFWId -NextHopType ResourceId

# Create new routes for route table
$newroutes = @($privatepolicyroute, $private_traffic)

# Update route table
Update-AzVHubRouteTable -ResourceGroupName <rgname> -ParentResourceName <hubname> -Name defaultRouteTable -Route $newroutes

測試連線能力

現在您已擁有可完全正常運作的安全中樞。 若要測試連線,您需要在連線到中樞的每個輪輻虛擬網路中有一部虛擬機器:

# Create VMs in spokes for testing
$VMLocalAdminUser = "lab-user"
$VMLocalAdminSecurePassword = ConvertTo-SecureString -AsPlainText -Force
$VMCredential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword);
$VMSize = "Standard_B2ms"
# Spoke1
$Spoke1 = Get-AzVirtualNetwork -ResourceGroupName $RG -Name "spoke1"
Add-AzVirtualNetworkSubnetConfig -Name "vm" -VirtualNetwork $Spoke1 -AddressPrefix "10.1.1.0/26"
$Spoke1 | Set-AzVirtualNetwork
$VM1 = New-AzVM -Name "spoke1-vm" -ResourceGroupName $RG -Location $Location `
            -Image "UbuntuLTS" -credential $VMCredential `
            -VirtualNetworkName "spoke1" -SubnetName "vm" -PublicIpAddressName "spoke1-pip"
$NIC1 = Get-AzNetworkInterface -ResourceId $($VM1.NetworkProfile.NetworkInterfaces[0].Id)
$Spoke1VMPrivateIP = $NIC1.IpConfigurations[0].PrivateIpAddress
$Spoke1VMPIP = $(Get-AzPublicIpAddress -ResourceGroupName $RG -Name "spoke1-pip")
# Spoke2
$Spoke2 = Get-AzVirtualNetwork -ResourceGroupName $RG -Name "spoke2"
Add-AzVirtualNetworkSubnetConfig -Name "vm" -VirtualNetwork $Spoke2 -AddressPrefix "10.1.2.0/26"
$Spoke2 | Set-AzVirtualNetwork
$VM2 = New-AzVM -Name "spoke2-vm" -ResourceGroupName $RG -Location $Location `
            -Image "UbuntuLTS" -credential $VMCredential `
            -VirtualNetworkName "spoke2" -SubnetName "vm" -PublicIpAddressName "spoke2-pip"
$NIC2 = Get-AzNetworkInterface -ResourceId $($VM2.NetworkProfile.NetworkInterfaces[0].Id)
$Spoke2VMPrivateIP = $NIC2.IpConfigurations[0].PrivateIpAddress
$Spoke2VMPIP = $(Get-AzPublicIpAddress -ResourceGroupName $RG -Name "spoke2-pip")

防火牆原則中的預設設定是捨棄所有項目。 因此,您必須設定一些規則。 從 DNAT 規則開始,讓測試虛擬機器可透過防火牆的公用 IP 位址進行存取:

# Adding DNAT rules for virtual machines in the spokes
$AzFWPublicAddress = $AzFW.HubIPAddresses.PublicIPs.Addresses[0].Address
$NATRuleSpoke1 = New-AzFirewallPolicyNatRule -Name "Spoke1SSH" -Protocol "TCP" `
        -SourceAddress "*" -DestinationAddress $AzFWPublicAddress -DestinationPort 10001 `
        -TranslatedAddress $Spoke1VMPrivateIP -TranslatedPort 22
$NATRuleSpoke2 = New-AzFirewallPolicyNatRule -Name "Spoke2SSH" -Protocol "TCP" `
        -SourceAddress "*" -DestinationAddress $AzFWPublicAddress -DestinationPort 10002 `
        -TranslatedAddress $Spoke2VMPrivateIP -TranslatedPort 22
$NATCollection = New-AzFirewallPolicyNatRuleCollection -Name "SSH" -Priority 100 `
        -Rule @($NATRuleSpoke1, $NATRuleSpoke2) -ActionType "Dnat"
$NATGroup = New-AzFirewallPolicyRuleCollectionGroup -Name "NAT" -Priority 100 -RuleCollection $NATCollection -FirewallPolicyObject $FWPolicy

現在您可以設定一些範例規則。 定義允許 SSH 流量的網路規則,以及允許網際網路存取完整網域名稱 ifconfig.co 的應用程式規則。 此 URL 會傳回其在 HTTP 要求中看到的來源 IP 位址:

# Add Network Rule
$SSHRule = New-AzFirewallPolicyNetworkRule -Name PermitSSH -Protocol TCP `
        -SourceAddress "10.0.0.0/8" -DestinationAddress "10.0.0.0/8" -DestinationPort 22
$NetCollection = New-AzFirewallPolicyFilterRuleCollection -Name "Management" -Priority 100 -ActionType Allow -Rule $SSHRule
$NetGroup = New-AzFirewallPolicyRuleCollectionGroup -Name "Management" -Priority 200 -RuleCollection $NetCollection -FirewallPolicyObject $FWPolicy
# Add Application Rule
$ifconfigRule = New-AzFirewallPolicyApplicationRule -Name PermitIfconfig -SourceAddress "10.0.0.0/8" -TargetFqdn "ifconfig.co" -Protocol "http:80","https:443"
$AppCollection = New-AzFirewallPolicyFilterRuleCollection -Name "TargetURLs" -Priority 300 -ActionType Allow -Rule $ifconfigRule
$NetGroup = New-AzFirewallPolicyRuleCollectionGroup -Name "TargetURLs" -Priority 300 -RuleCollection $AppCollection -FirewallPolicyObject $FWPolicy

在實際傳送任何流量之前,您可以先檢查虛擬機器的有效路由。 其應該包含從虛擬 WAN (0.0.0.0/0 加上 RFC1918) 得知的前置詞,而不是其他輪輻的前置詞:

# Check effective routes in the VM NIC in spoke 1
# Note that 10.1.2.0/24 (the prefix for spoke2) should not appear
Get-AzEffectiveRouteTable -ResourceGroupName $RG -NetworkInterfaceName $NIC1.Name | ft
# Check effective routes in the VM NIC in spoke 2
# Note that 10.1.1.0/24 (the prefix for spoke1) should not appear
Get-AzEffectiveRouteTable -ResourceGroupName $RG -NetworkInterfaceName $NIC2.Name | ft

現在產生從一部虛擬機器到另一部虛擬機器的流量,並確認其已在 Azure 防火牆中遭到捨棄。 在下列 SSH 命令中,您必須接受虛擬機器指紋,並提供您在建立虛擬機器時所定義的密碼。 在此範例中,您將會從 spoke1 中的虛擬機器將五個 ICMP 回應要求封包傳送至 spoke2,再加上使用 Linux 公用程式 nc 在連接埠 22 上的 TCP 連線嘗試 (使用 -vz 旗標時,其只會傳送連線要求並顯示結果)。 您應該會看到 ping 失敗,以及連接埠 22 上的 TCP 連線嘗試成功,因為您先前設定的網路規則允許此動作:

# Connect to one VM and ping the other. It should not work, because the firewall should drop the traffic, since no rule for ICMP is configured
ssh $AzFWPublicAddress -p 10001 -l $VMLocalAdminUser "ping $Spoke2VMPrivateIP -c 5"
# Connect to one VM and send a TCP request on port 22 to the other. It should work, because the firewall is configured to allow SSH traffic (port 22)
ssh $AzFWPublicAddress -p 10001 -l $VMLocalAdminUser "nc -vz $Spoke2VMPrivateIP 22"

您也可以確認網際網路流量。 讓 HTTP 要求透過公用程式 curl 進入您在防火牆原則 (ifconfig.co) 中允許的 FQDN 應該可行,但是要進入任何其他目的地的 HTTP 要求則應該會失敗 (在此範例中,您使用 bing.com 進行測試):

# This HTTP request should succeed, since it is allowed in an app rule in the AzFW, and return the public IP of the FW
ssh $AzFWPublicAddress -p 10001 -l $VMLocalAdminUser "curl -s4 ifconfig.co"
# This HTTP request should fail, since the FQDN bing.com is not in any app rule in the firewall policy
ssh $AzFWPublicAddress -p 10001 -l $VMLocalAdminUser "curl -s4 bing.com"

若要確認防火牆會捨棄封包,最簡單的方式是檢查記錄。 由於您已設定 Azure 防火牆將記錄傳送至 Azure 監視器,因此您可以使用 Kusto 查詢語言來擷取 Azure 監視器中的相關記錄:

注意

記錄可能需要 1 分鐘左右的時間,才會傳送到 Azure 監視器

# Getting Azure Firewall network rule Logs
$LogWS = Get-AzOperationalInsightsWorkspace -ResourceGroupName $RG
$LogQuery = 'AzureDiagnostics
| where Category == "AzureFirewallNetworkRule"
| where TimeGenerated >= ago(5m)
| parse msg_s with Protocol " request from " SourceIP ":" SourcePortInt:int " to " TargetIP ":" TargetPortInt:int *
| parse msg_s with * ". Action: " Action1a
| parse msg_s with * " was " Action1b " to " NatDestination
| parse msg_s with Protocol2 " request from " SourceIP2 " to " TargetIP2 ". Action: " Action2
| extend SourcePort = tostring(SourcePortInt),TargetPort = tostring(TargetPortInt)
| extend Action = case(Action1a == "", case(Action1b == "",Action2,Action1b), Action1a),Protocol = case(Protocol == "", Protocol2, Protocol),SourceIP = case(SourceIP == "", SourceIP2, SourceIP),TargetIP = case(TargetIP == "", TargetIP2, TargetIP),SourcePort = case(SourcePort == "", "N/A", SourcePort),TargetPort = case(TargetPort == "", "N/A", TargetPort),NatDestination = case(NatDestination == "", "N/A", NatDestination)
| project TimeGenerated, Protocol, SourceIP,SourcePort,TargetIP,TargetPort,Action, NatDestination, Resource
| take 25 '
$(Invoke-AzOperationalInsightsQuery -Workspace $LogWS -Query $LogQuery).Results | ft

在先前的命令中,您應該會看到不同的項目:

  • 進行了 DNAT 的 SSH 連線
  • 輪輻中的 VM 之間已捨棄 ICMP 封包 (10.1.1.4 和 10.1.2.4)
  • 輪輻中的 VM 之間已允許 SSH 連線

以下是上述命令所產生的範例輸出:

TimeGenerated            Protocol    SourceIP       SourcePort TargetIP      TargetPort Action  NatDestination Resource
-------------            --------    --------       ---------- --------      ---------- ------  -------------- --------
2020-10-04T20:53:02.41Z  TCP         109.125.122.99 62281      51.105.224.44 10001      DNAT'ed 10.1.1.4:22    AZFW1
2020-10-04T20:53:07.045Z TCP         10.1.1.4       35932      10.1.2.4      22         Allow   N/A            AZFW1
2020-10-04T20:53:50.119Z TCP         109.125.122.99 62293      51.105.224.44 10001      DNAT'ed 10.1.2.4:22    AZFW1
2020-10-04T20:52:47.475Z TCP         109.125.122.99 62273      51.105.224.44 10001      DNAT'ed 10.1.2.4:22    AZFW1
2020-10-04T20:51:04.682Z TCP         109.125.122.99 62200      51.105.224.44 10001      DNAT'ed 10.1.2.4:22    AZFW1
2020-10-04T20:51:17.031Z ICMP Type=8 10.1.1.4       N/A        10.1.2.4      N/A        Deny    N/A            AZFW1
2020-10-04T20:51:18.049Z ICMP Type=8 10.1.1.4       N/A        10.1.2.4      N/A        Deny    N/A            AZFW1
2020-10-04T20:51:19.075Z ICMP Type=8 10.1.1.4       N/A        10.1.2.4      N/A        Deny    N/A            AZFW1
2020-10-04T20:51:20.097Z ICMP Type=8 10.1.1.4       N/A        10.1.2.4      N/A        Deny    N/A            AZFW1
2020-10-04T20:51:21.121Z ICMP Type=8 10.1.1.4       N/A        10.1.2.4      N/A        Deny    N/A            AZFW1
2020-10-04T20:52:52.356Z TCP         10.1.1.4       53748      10.1.2.4      22         Allow   N/A            AZFW1

如果您想要查看應用程式規則的記錄 (描述已允許和已拒絕的 HTTP 連線) 或變更記錄的顯示方式,則可以嘗試使用其他 KQL 查詢。 您可以在 Azure 防火牆的 Azure 監視器記錄中找到一些範例。

清除資源

若要刪除測試環境,您可以移除資源群組以及所有內含物件:

# Delete resource group and all contained resources
Remove-AzResourceGroup -Name $RG

將具有可用性區域的新 Azure 防火牆部署至現有的中樞

先前的程序會使用 Azure PowerShell 來建立新的 Azure Virtual WAN 中樞,然後使用 Azure 防火牆立即將其轉換為安全中樞。 類似的方法可以套用至現有的 Azure Virtual WAN 中樞。 防火牆管理員也可用於轉換,但無法在不使用指令碼方法的情況下跨可用性區域部署Azure 防火牆。 您可以使用下列程式碼片段,將現有的 Azure Virtual WAN 中樞轉換為安全中樞,並使用部署在三個可用性區域之間的 Azure 防火牆。

注意

此程序會部署新的 Azure 防火牆。 您無法在沒有可用性區域的情況下,將現有的 Azure 防火牆升級為可用性區域。 您必須先刪除中樞的現有 Azure 防火牆,然後使用此程序再次加以建立。

# Variable definition
$RG = "vwan-rg"
$Location = "westeurope"
$VwanName = "vwan"
$HubName =  "hub1"
$FirewallName = "azfw1"
$FirewallTier = "Standard" # or "Premium"
$FirewallPolicyName = "VwanFwPolicy"

# Get references to vWAN and vWAN Hub to convert #
$Vwan = Get-AzVirtualWan -ResourceGroupName $RG -Name $VwanName
$Hub = Get-AzVirtualHub -ResourceGroupName  $RG -Name $HubName

# Create a new Firewall Policy #
$FWPolicy = New-AzFirewallPolicy -Name $FirewallPolicyName -ResourceGroupName $RG -Location $Location

# Create a new Firewall Public IP #
$AzFWPIPs = New-AzFirewallHubPublicIpAddress -Count 1
$AzFWHubIPs = New-AzFirewallHubIpAddress -PublicIP $AzFWPIPs

# Create Firewall instance #
$AzFW = New-AzFirewall -Name $FirewallName -ResourceGroupName $RG -Location $Location `
            -VirtualHubId $Hub.Id -FirewallPolicyId $FWPolicy.Id `
            -SkuName "AZFW_Hub" -HubIPAddress $AzFWHubIPs `
            -SkuTier $FirewallTier `
            -Zone 1,2,3

執行此指令碼之後,可用性區域應該會出現在安全中樞屬性內,如下列螢幕擷取畫面所示:

Screenshot of Secured virtual hub availability zones.

部署 Azure 防火牆之後,必須完成設定程序,如先前的部署 Azure 防火牆和設定自訂路由一節中所述。

下一步