Rychlý start: Nasazení služby Azure Firewall s využitím Zóny dostupnosti – šablona ARM
Článek 13. 06. 2024
Přispěvatelé: 8
Váš názor
V tomto článku
Požadavky
Kontrola šablony
Nasazení šablony
Kontrola nasazených prostředků
Vyčištění prostředků
Další kroky
Zobrazit ještě 2
V tomto rychlém startu použijete šablonu Azure Resource Manageru (šablonu ARM) k nasazení brány Azure Firewall ve třech Zóny dostupnosti.
Šablona Azure Resource Manageru je soubor JSON (JavaScript Object Notation), který definuje infrastrukturu a konfiguraci projektu. Tato šablona používá deklarativní syntaxi. Popíšete zamýšlené nasazení, aniž byste museli psát posloupnost programovacích příkazů pro vytvoření nasazení.
Šablona vytvoří testovací síťové prostředí s bránou firewall. Síť má jednu virtuální síť se třemi podsítěmi: AzureFirewallSubnet , ServersSubnet a JumpboxSubnet . Podsíť ServersSubnet a JumpboxSubnet mají jeden dvoujádrový virtuální počítač s Windows Serverem.
Brána firewall je v podsíti AzureFirewallSubnet a má kolekci pravidel aplikace s jedním pravidlem, které umožňuje přístup k www.microsoft.com
.
Trasa definovaná uživatelem směruje síťový provoz z podsítě ServersSubnet přes bránu firewall, kde se použijí pravidla brány firewall.
Další informace o službě Azure Firewall najdete v tématu Nasazení a konfigurace služby Azure Firewall pomocí webu Azure Portal .
Pokud vaše prostředí splňuje požadavky a jste obeznámeni s používáním šablon ARM, vyberte tlačítko Nasazení do Azure . Šablona se otevře v prostředí Azure Portal.
Tato šablona vytvoří bránu Azure Firewall s Zóny dostupnosti spolu s potřebnými prostředky pro podporu služby Azure Firewall.
Šablona použitá v tomto rychlém startu je jednou z šablon pro rychlý start Azure .
{
"$schema" : "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" ,
"contentVersion" : "1.0.0.0" ,
"metadata" : {
"_generator" : {
"name" : "bicep" ,
"version" : "0.28.1.47646" ,
"templateHash" : "1943314503988412451"
}
},
"parameters" : {
"virtualNetworkName" : {
"type" : "string" ,
"defaultValue" : "test-vnet" ,
"metadata" : {
"description" : "virtual network name"
}
},
"location" : {
"type" : "string" ,
"defaultValue" : "[resourceGroup().location]" ,
"metadata" : {
"description" : "Location for all resources."
}
},
"adminUsername" : {
"type" : "string" ,
"metadata" : {
"description" : "Username for the Virtual Machine."
}
},
"adminPassword" : {
"type" : "securestring" ,
"metadata" : {
"description" : "Password for the Virtual Machine."
}
},
"availabilityZones" : {
"type" : "array" ,
"defaultValue" : [
"1" ,
"2" ,
"3"
],
"metadata" : {
"description" : "Availability zone numbers e.g. 1,2,3."
}
},
"numberOfFirewallPublicIPAddresses" : {
"type" : "int" ,
"defaultValue" : 1 ,
"minValue" : 1 ,
"maxValue" : 100 ,
"metadata" : {
"description" : "Number of public IP addresses for the Azure Firewall"
}
},
"jumpBoxSize" : {
"type" : "string" ,
"defaultValue" : "Standard_D2s_v3" ,
"metadata" : {
"description" : "Size of the virtual machine."
}
},
"serverSize" : {
"type" : "string" ,
"defaultValue" : "Standard_D2s_v3" ,
"metadata" : {
"description" : "Size of the virtual machine."
}
}
},
"variables" : {
"copy" : [
{
"name" : "azureFirewallIpConfigurations" ,
"count" : "[length(range(0, parameters('numberOfFirewallPublicIPAddresses')))]" ,
"input" : {
"name" : "[format('IpConf{0}', range(0, parameters('numberOfFirewallPublicIPAddresses'))[copyIndex('azureFirewallIpConfigurations')])]" ,
"properties" : {
"subnet" : "[if(equals(range(0, parameters('numberOfFirewallPublicIPAddresses'))[copyIndex('azureFirewallIpConfigurations')], 0), variables('azureFirewallSubnetJSON'), json('null'))]" ,
"publicIPAddress" : {
"id" : "[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}', variables('publicIPNamePrefix'), add(range(0, parameters('numberOfFirewallPublicIPAddresses'))[range(0, parameters('numberOfFirewallPublicIPAddresses'))[copyIndex('azureFirewallIpConfigurations')]], 1)))]"
}
}
}
}
],
"vnetAddressPrefix" : "10.0.0.0/16" ,
"serversSubnetPrefix" : "10.0.2.0/24" ,
"azureFirewallSubnetPrefix" : "10.0.1.0/24" ,
"jumpboxSubnetPrefix" : "10.0.0.0/24" ,
"nextHopIP" : "10.0.1.4" ,
"azureFirewallSubnetName" : "AzureFirewallSubnet" ,
"jumpBoxSubnetName" : "JumpboxSubnet" ,
"serversSubnetName" : "ServersSubnet" ,
"jumpBoxPublicIPAddressName" : "JumpHostPublicIP" ,
"jumpBoxNsgName" : "JumpHostNSG" ,
"jumpBoxNicName" : "JumpHostNic" ,
"jumpBoxSubnetId" : "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), variables('jumpBoxSubnetName'))]" ,
"serverNicName" : "ServerNic" ,
"serverSubnetId" : "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), variables('serversSubnetName'))]" ,
"storageAccountName" : "[format('{0}sajumpbox', uniqueString(resourceGroup().id))]" ,
"azfwRouteTableName" : "AzfwRouteTable" ,
"firewallName" : "firewall1" ,
"publicIPNamePrefix" : "publicIP" ,
"azureFirewallSubnetId" : "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), variables('azureFirewallSubnetName'))]" ,
"azureFirewallSubnetJSON" : "[json(format('{{\"id\": \"{0}\"}}', variables('azureFirewallSubnetId')))]" ,
"networkSecurityGroupName" : "[format('{0}-nsg', variables('serversSubnetName'))]"
},
"resources" : [
{
"type" : "Microsoft.Storage/storageAccounts" ,
"apiVersion" : "2021-08-01" ,
"name" : "[variables('storageAccountName')]" ,
"location" : "[parameters('location')]" ,
"sku" : {
"name" : "Standard_LRS"
},
"kind" : "Storage" ,
"properties" : {}
},
{
"type" : "Microsoft.Network/routeTables" ,
"apiVersion" : "2021-03-01" ,
"name" : "[variables('azfwRouteTableName')]" ,
"location" : "[parameters('location')]" ,
"properties" : {
"disableBgpRoutePropagation" : false ,
"routes" : [
{
"name" : "AzfwDefaultRoute" ,
"properties" : {
"addressPrefix" : "0.0.0.0/0" ,
"nextHopType" : "VirtualAppliance" ,
"nextHopIpAddress" : "[variables('nextHopIP')]"
}
}
]
}
},
{
"type" : "Microsoft.Network/networkSecurityGroups" ,
"apiVersion" : "2021-03-01" ,
"name" : "[variables('networkSecurityGroupName')]" ,
"location" : "[parameters('location')]" ,
"properties" : {}
},
{
"type" : "Microsoft.Network/virtualNetworks" ,
"apiVersion" : "2021-05-01" ,
"name" : "[parameters('virtualNetworkName')]" ,
"location" : "[parameters('location')]" ,
"tags" : {
"displayName" : "[parameters('virtualNetworkName')]"
},
"properties" : {
"addressSpace" : {
"addressPrefixes" : [
"[variables('vnetAddressPrefix')]"
]
},
"subnets" : [
{
"name" : "[variables('jumpBoxSubnetName')]" ,
"properties" : {
"addressPrefix" : "[variables('jumpboxSubnetPrefix')]"
}
},
{
"name" : "[variables('azureFirewallSubnetName')]" ,
"properties" : {
"addressPrefix" : "[variables('azureFirewallSubnetPrefix')]"
}
},
{
"name" : "[variables('serversSubnetName')]" ,
"properties" : {
"addressPrefix" : "[variables('serversSubnetPrefix')]" ,
"routeTable" : {
"id" : "[resourceId('Microsoft.Network/routeTables', variables('azfwRouteTableName'))]"
},
"networkSecurityGroup" : {
"id" : "[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]"
}
}
}
]
},
"dependsOn" : [
"[resourceId('Microsoft.Network/routeTables', variables('azfwRouteTableName'))]" ,
"[resourceId('Microsoft.Network/networkSecurityGroups', variables('networkSecurityGroupName'))]"
]
},
{
"copy" : {
"name" : "publicIPAddress" ,
"count" : "[length(range(0, parameters('numberOfFirewallPublicIPAddresses')))]"
},
"type" : "Microsoft.Network/publicIPAddresses" ,
"apiVersion" : "2021-03-01" ,
"name" : "[format('{0}{1}', variables('publicIPNamePrefix'), add(range(0, parameters('numberOfFirewallPublicIPAddresses'))[copyIndex()], 1))]" ,
"location" : "[parameters('location')]" ,
"sku" : {
"name" : "Standard"
},
"properties" : {
"publicIPAllocationMethod" : "Static" ,
"publicIPAddressVersion" : "IPv4"
},
"zones" : "[parameters('availabilityZones')]"
},
{
"type" : "Microsoft.Network/publicIPAddresses" ,
"apiVersion" : "2021-03-01" ,
"name" : "[variables('jumpBoxPublicIPAddressName')]" ,
"location" : "[parameters('location')]" ,
"properties" : {
"publicIPAllocationMethod" : "Dynamic"
}
},
{
"type" : "Microsoft.Network/networkSecurityGroups" ,
"apiVersion" : "2021-05-01" ,
"name" : "[variables('jumpBoxNsgName')]" ,
"location" : "[parameters('location')]" ,
"properties" : {
"securityRules" : [
{
"name" : "myNetworkSecurityGroupRuleRDP" ,
"properties" : {
"protocol" : "Tcp" ,
"sourcePortRange" : "*" ,
"destinationPortRange" : "3389" ,
"sourceAddressPrefix" : "*" ,
"destinationAddressPrefix" : "*" ,
"access" : "Allow" ,
"priority" : 1000 ,
"direction" : "Inbound"
}
}
]
}
},
{
"type" : "Microsoft.Network/networkInterfaces" ,
"apiVersion" : "2021-05-01" ,
"name" : "[variables('jumpBoxNicName')]" ,
"location" : "[parameters('location')]" ,
"properties" : {
"ipConfigurations" : [
{
"name" : "ipconfig1" ,
"properties" : {
"privateIPAllocationMethod" : "Dynamic" ,
"publicIPAddress" : {
"id" : "[resourceId('Microsoft.Network/publicIPAddresses', variables('jumpBoxPublicIPAddressName'))]"
},
"subnet" : {
"id" : "[variables('jumpBoxSubnetId')]"
}
}
}
],
"networkSecurityGroup" : {
"id" : "[resourceId('Microsoft.Network/networkSecurityGroups', variables('jumpBoxNsgName'))]"
}
},
"dependsOn" : [
"[resourceId('Microsoft.Network/networkSecurityGroups', variables('jumpBoxNsgName'))]" ,
"[resourceId('Microsoft.Network/publicIPAddresses', variables('jumpBoxPublicIPAddressName'))]" ,
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]"
]
},
{
"type" : "Microsoft.Network/networkInterfaces" ,
"apiVersion" : "2021-05-01" ,
"name" : "[variables('serverNicName')]" ,
"location" : "[parameters('location')]" ,
"properties" : {
"ipConfigurations" : [
{
"name" : "ipconfig1" ,
"properties" : {
"privateIPAllocationMethod" : "Dynamic" ,
"subnet" : {
"id" : "[variables('serverSubnetId')]"
}
}
}
]
},
"dependsOn" : [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]"
]
},
{
"type" : "Microsoft.Compute/virtualMachines" ,
"apiVersion" : "2021-11-01" ,
"name" : "JumpBox" ,
"location" : "[parameters('location')]" ,
"tags" : {
"AzSecPackAutoConfigReady" : true
},
"properties" : {
"hardwareProfile" : {
"vmSize" : "[parameters('jumpBoxSize')]"
},
"storageProfile" : {
"imageReference" : {
"publisher" : "MicrosoftCBLMariner" ,
"offer" : "cbl-mariner" ,
"sku" : "cbl-mariner-2-gen2" ,
"version" : "latest"
},
"osDisk" : {
"osType" : "Linux" ,
"createOption" : "FromImage" ,
"diskSizeGB" : 127
}
},
"osProfile" : {
"computerName" : "JumpBox" ,
"adminUsername" : "[parameters('adminUsername')]" ,
"adminPassword" : "[parameters('adminPassword')]" ,
"linuxConfiguration" : {
"patchSettings" : {
"patchMode" : "AutomaticByPlatform"
}
}
},
"networkProfile" : {
"networkInterfaces" : [
{
"id" : "[resourceId('Microsoft.Network/networkInterfaces', variables('jumpBoxNicName'))]"
}
]
},
"diagnosticsProfile" : {
"bootDiagnostics" : {
"enabled" : true ,
"storageUri" : "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-08-01').primaryEndpoints.blob]"
}
}
},
"dependsOn" : [
"[resourceId('Microsoft.Network/networkInterfaces', variables('jumpBoxNicName'))]" ,
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
]
},
{
"type" : "Microsoft.Compute/virtualMachines" ,
"apiVersion" : "2021-11-01" ,
"name" : "Server" ,
"location" : "[parameters('location')]" ,
"tags" : {
"AzSecPackAutoConfigReady" : true
},
"properties" : {
"hardwareProfile" : {
"vmSize" : "[parameters('serverSize')]"
},
"storageProfile" : {
"imageReference" : {
"publisher" : "MicrosoftCBLMariner" ,
"offer" : "cbl-mariner" ,
"sku" : "cbl-mariner-2-gen2" ,
"version" : "latest"
},
"osDisk" : {
"osType" : "Linux" ,
"createOption" : "FromImage" ,
"diskSizeGB" : 127
}
},
"osProfile" : {
"computerName" : "Server" ,
"adminUsername" : "[parameters('adminUsername')]" ,
"adminPassword" : "[parameters('adminPassword')]" ,
"linuxConfiguration" : {
"patchSettings" : {
"patchMode" : "AutomaticByPlatform"
}
}
},
"networkProfile" : {
"networkInterfaces" : [
{
"id" : "[resourceId('Microsoft.Network/networkInterfaces', variables('serverNicName'))]"
}
]
},
"diagnosticsProfile" : {
"bootDiagnostics" : {
"enabled" : true ,
"storageUri" : "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-08-01').primaryEndpoints.blob]"
}
}
},
"dependsOn" : [
"[resourceId('Microsoft.Network/networkInterfaces', variables('serverNicName'))]" ,
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
]
},
{
"type" : "Microsoft.Network/azureFirewalls" ,
"apiVersion" : "2021-05-01" ,
"name" : "[variables('firewallName')]" ,
"location" : "[parameters('location')]" ,
"zones" : "[if(equals(length(parameters('availabilityZones')), 0), json('null'), parameters('availabilityZones'))]" ,
"properties" : {
"ipConfigurations" : "[variables('azureFirewallIpConfigurations')]" ,
"applicationRuleCollections" : [
{
"name" : "appRc1" ,
"properties" : {
"priority" : 101 ,
"action" : {
"type" : "Allow"
},
"rules" : [
{
"name" : "appRule1" ,
"protocols" : [
{
"port" : 80 ,
"protocolType" : "Http"
},
{
"port" : 443 ,
"protocolType" : "Https"
}
],
"targetFqdns" : [
"www.microsoft.com"
],
"sourceAddresses" : [
"10.0.2.0/24"
]
}
]
}
}
],
"networkRuleCollections" : [
{
"name" : "netRc1" ,
"properties" : {
"priority" : 200 ,
"action" : {
"type" : "Allow"
},
"rules" : [
{
"name" : "netRule1" ,
"protocols" : [
"TCP"
],
"sourceAddresses" : [
"10.0.2.0/24"
],
"destinationAddresses" : [
"*"
],
"destinationPorts" : [
"8000-8999"
]
}
]
}
}
]
},
"dependsOn" : [
"publicIPAddress" ,
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]"
]
}
]
}
V šabloně je definováno více prostředků Azure:
Nasazení šablony ARM do Azure:
Výběrem možnosti Nasadit do Azure se přihlaste k Azure a otevřete šablonu. Šablona vytvoří bránu Azure Firewall, síťovou infrastrukturu a dva virtuální počítače.
Na portálu na stránce Vytvořit nastavení sandboxu služby Azure Firewall se zónami zadejte nebo vyberte následující hodnoty:
Skupina prostředků: Vyberte Vytvořit nový , zadejte název skupiny prostředků a vyberte OK .
Název virtuální sítě: Zadejte název nové virtuální sítě.
Uživatelské jméno správce: Zadejte uživatelské jméno pro uživatelský účet správce.
Heslo správce: Zadejte heslo správce.
Přečtěte si podmínky a ujednání a pak vyberte Souhlasím s podmínkami a ujednáními uvedenými výše a pak vyberte Koupit . Dokončení nasazení může trvat 10 minut nebo déle.
Kontrola nasazených prostředků
Prozkoumejte prostředky vytvořené pomocí brány firewall.
Další informace o syntaxi a vlastnostech JSON pro bránu firewall v šabloně najdete v tématu Microsoft.Network/azureFirewalls .
Pokud je už nepotřebujete, můžete odebrat skupinu prostředků, bránu firewall a všechny související prostředky spuštěním příkazu PowerShellu Remove-AzResourceGroup
. Pokud chcete odebrat skupinu prostředků s názvem MyResourceGroup , spusťte:
Remove-AzResourceGroup -Name MyResourceGroup
Pokud chcete pokračovat v kurzu monitorování brány firewall, neodebíjejte skupinu prostředků a bránu firewall.
Dál můžete pokračovat monitorováním protokolů brány Azure Firewall.