Rychlý start: Vytvoření služby Azure Firewall s několika veřejnými IP adresami – šablona ARM
Článek 13. 06. 2024
Přispěvatelé: 9
Váš názor
V tomto článku
Požadavky
Kontrola šablony
Nasazení šablony
Ověření nasazení
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 s několika veřejnými IP adresami z předpony veřejné IP adresy. Nasazená brána firewall obsahuje pravidla shromažďování pravidel NAT, která umožňují připojení RDP ke dvěma virtuálním počítačům s Windows Serverem 2019.
Š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í.
Další informace o službě Azure Firewall s několika veřejnými IP adresami najdete v tématu Nasazení služby Azure Firewall s několika veřejnými IP adresami pomocí Azure PowerShellu .
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 se dvěma veřejnými IP adresami 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.26.54.24096" ,
"templateHash" : "8395247770070350203"
}
},
"parameters" : {
"adminUsername" : {
"type" : "string" ,
"metadata" : {
"description" : "Admin username for the backend servers"
}
},
"adminPassword" : {
"type" : "securestring" ,
"metadata" : {
"description" : "Password for the admin account on the backend servers"
}
},
"location" : {
"type" : "string" ,
"defaultValue" : "[resourceGroup().location]" ,
"metadata" : {
"description" : "Location for all resources."
}
},
"vmSize" : {
"type" : "string" ,
"defaultValue" : "Standard_B2ms" ,
"metadata" : {
"description" : "Size of the virtual machine."
}
}
},
"variables" : {
"copy" : [
{
"name" : "azureFirewallIpConfigurations" ,
"count" : "[length(range(0, 2))]" ,
"input" : {
"name" : "[format('IpConf{0}', add(range(0, 2)[copyIndex('azureFirewallIpConfigurations')], 1))]" ,
"properties" : {
"subnet" : "[if(equals(range(0, 2)[copyIndex('azureFirewallIpConfigurations')], 0), json(format('{{\"id\": \"{0}\"}}', variables('azureFirewallSubnetId'))), null())]" ,
"publicIPAddress" : {
"id" : "[resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}', variables('publicIpAddressName'), add(range(0, 2)[range(0, 2)[copyIndex('azureFirewallIpConfigurations')]], 1)))]"
}
}
}
}
],
"virtualMachineName" : "myVM" ,
"virtualNetworkName" : "myVNet" ,
"networkInterfaceName" : "net-int" ,
"ipConfigName" : "ipconfig" ,
"ipPrefixName" : "public_ip_prefix" ,
"ipPrefixSize" : 31 ,
"publicIpAddressName" : "public_ip" ,
"nsgName" : "vm-nsg" ,
"firewallName" : "FW-01" ,
"vnetPrefix" : "10.0.0.0/16" ,
"fwSubnetPrefix" : "10.0.0.0/24" ,
"backendSubnetPrefix" : "10.0.1.0/24" ,
"azureFirewallSubnetId" : "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), 'AzureFirewallSubnet')]"
},
"resources" : [
{
"copy" : {
"name" : "nsg" ,
"count" : "[length(range(0, 2))]"
},
"type" : "Microsoft.Network/networkSecurityGroups" ,
"apiVersion" : "2023-09-01" ,
"name" : "[format('{0}{1}', variables('nsgName'), add(range(0, 2)[copyIndex()], 1))]" ,
"location" : "[parameters('location')]" ,
"properties" : {
"securityRules" : [
{
"name" : "RDP" ,
"properties" : {
"protocol" : "Tcp" ,
"sourcePortRange" : "*" ,
"destinationPortRange" : "3389" ,
"sourceAddressPrefix" : "*" ,
"destinationAddressPrefix" : "*" ,
"access" : "Allow" ,
"priority" : 300 ,
"direction" : "Inbound"
}
}
]
}
},
{
"type" : "Microsoft.Network/publicIPPrefixes" ,
"apiVersion" : "2023-09-01" ,
"name" : "[variables('ipPrefixName')]" ,
"location" : "[parameters('location')]" ,
"properties" : {
"prefixLength" : "[variables('ipPrefixSize')]" ,
"publicIPAddressVersion" : "IPv4"
},
"sku" : {
"name" : "Standard"
}
},
{
"copy" : {
"name" : "publicIPAddress" ,
"count" : "[length(range(0, 2))]"
},
"type" : "Microsoft.Network/publicIPAddresses" ,
"apiVersion" : "2023-09-01" ,
"name" : "[format('{0}{1}', variables('publicIpAddressName'), add(range(0, 2)[copyIndex()], 1))]" ,
"location" : "[parameters('location')]" ,
"sku" : {
"name" : "Standard"
},
"properties" : {
"publicIPAddressVersion" : "IPv4" ,
"publicIPAllocationMethod" : "Static" ,
"publicIPPrefix" : {
"id" : "[resourceId('Microsoft.Network/publicIPPrefixes', variables('ipPrefixName'))]"
},
"idleTimeoutInMinutes" : 4
},
"dependsOn" : [
"[resourceId('Microsoft.Network/publicIPPrefixes', variables('ipPrefixName'))]"
]
},
{
"type" : "Microsoft.Network/virtualNetworks" ,
"apiVersion" : "2023-09-01" ,
"name" : "[variables('virtualNetworkName')]" ,
"location" : "[parameters('location')]" ,
"properties" : {
"addressSpace" : {
"addressPrefixes" : [
"[variables('vnetPrefix')]"
]
},
"subnets" : [
{
"name" : "myBackendSubnet" ,
"properties" : {
"addressPrefix" : "[variables('backendSubnetPrefix')]" ,
"routeTable" : {
"id" : "[resourceId('Microsoft.Network/routeTables', 'rt-01')]"
},
"privateEndpointNetworkPolicies" : "Enabled" ,
"privateLinkServiceNetworkPolicies" : "Enabled"
}
}
],
"enableDdosProtection" : false ,
"enableVmProtection" : false
},
"dependsOn" : [
"[resourceId('Microsoft.Network/routeTables', 'rt-01')]"
]
},
{
"type" : "Microsoft.Network/virtualNetworks/subnets" ,
"apiVersion" : "2023-09-01" ,
"name" : "[format('{0}/{1}', variables('virtualNetworkName'), 'AzureFirewallSubnet')]" ,
"properties" : {
"addressPrefix" : "[variables('fwSubnetPrefix')]" ,
"privateEndpointNetworkPolicies" : "Enabled" ,
"privateLinkServiceNetworkPolicies" : "Enabled"
},
"dependsOn" : [
"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]"
]
},
{
"copy" : {
"name" : "virtualMachine" ,
"count" : "[length(range(0, 2))]"
},
"type" : "Microsoft.Compute/virtualMachines" ,
"apiVersion" : "2023-09-01" ,
"name" : "[format('{0}{1}', variables('virtualMachineName'), add(range(0, 2)[copyIndex()], 1))]" ,
"location" : "[parameters('location')]" ,
"properties" : {
"hardwareProfile" : {
"vmSize" : "[parameters('vmSize')]"
},
"storageProfile" : {
"imageReference" : {
"publisher" : "MicrosoftWindowsServer" ,
"offer" : "WindowsServer" ,
"sku" : "2019-Datacenter" ,
"version" : "latest"
},
"osDisk" : {
"osType" : "Windows" ,
"createOption" : "FromImage" ,
"caching" : "ReadWrite" ,
"managedDisk" : {
"storageAccountType" : "StandardSSD_LRS"
},
"diskSizeGB" : 127
}
},
"osProfile" : {
"computerName" : "[format('{0}{1}', variables('virtualMachineName'), add(range(0, 2)[copyIndex()], 1))]" ,
"adminUsername" : "[parameters('adminUsername')]" ,
"adminPassword" : "[parameters('adminPassword')]" ,
"windowsConfiguration" : {
"provisionVMAgent" : true ,
"enableAutomaticUpdates" : true
},
"allowExtensionOperations" : true
},
"networkProfile" : {
"networkInterfaces" : [
{
"id" : "[resourceId('Microsoft.Network/networkInterfaces', format('{0}{1}', variables('networkInterfaceName'), add(range(0, 2)[range(0, 2)[copyIndex()]], 1)))]"
}
]
}
},
"dependsOn" : [
"[resourceId('Microsoft.Network/networkInterfaces', format('{0}{1}', variables('networkInterfaceName'), add(range(0, 2)[range(0, 2)[copyIndex()]], 1)))]"
]
},
{
"copy" : {
"name" : "netInterface" ,
"count" : "[length(range(0, 2))]"
},
"type" : "Microsoft.Network/networkInterfaces" ,
"apiVersion" : "2023-09-01" ,
"name" : "[format('{0}{1}', variables('networkInterfaceName'), add(range(0, 2)[copyIndex()], 1))]" ,
"location" : "[parameters('location')]" ,
"properties" : {
"ipConfigurations" : [
{
"name" : "[format('{0}{1}', variables('ipConfigName'), add(range(0, 2)[copyIndex()], 1))]" ,
"properties" : {
"subnet" : {
"id" : "[reference(resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName')), '2023-09-01').subnets[0].id]"
},
"primary" : true
}
}
],
"enableAcceleratedNetworking" : false ,
"enableIPForwarding" : false ,
"networkSecurityGroup" : {
"id" : "[resourceId('Microsoft.Network/networkSecurityGroups', format('{0}{1}', variables('nsgName'), add(range(0, 2)[range(0, 2)[copyIndex()]], 1)))]"
}
},
"dependsOn" : [
"[resourceId('Microsoft.Network/networkSecurityGroups', format('{0}{1}', variables('nsgName'), add(range(0, 2)[range(0, 2)[copyIndex()]], 1)))]" ,
"[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]"
]
},
{
"type" : "Microsoft.Network/azureFirewalls" ,
"apiVersion" : "2023-09-01" ,
"name" : "[variables('firewallName')]" ,
"location" : "[parameters('location')]" ,
"properties" : {
"sku" : {
"name" : "AZFW_VNet" ,
"tier" : "Standard"
},
"threatIntelMode" : "Deny" ,
"ipConfigurations" : "[variables('azureFirewallIpConfigurations')]" ,
"applicationRuleCollections" : [
{
"name" : "web" ,
"properties" : {
"priority" : 100 ,
"action" : {
"type" : "Allow"
},
"rules" : [
{
"name" : "wan-address" ,
"protocols" : [
{
"protocolType" : "Http" ,
"port" : 80
},
{
"protocolType" : "Https" ,
"port" : 443
}
],
"targetFqdns" : [
"getmywanip.com"
],
"sourceAddresses" : [
"*"
]
},
{
"name" : "google" ,
"protocols" : [
{
"protocolType" : "Http" ,
"port" : 80
},
{
"protocolType" : "Https" ,
"port" : 443
}
],
"targetFqdns" : [
"www.google.com"
],
"sourceAddresses" : [
"10.0.1.0/24"
]
},
{
"name" : "wupdate" ,
"protocols" : [
{
"protocolType" : "Http" ,
"port" : 80
},
{
"protocolType" : "Https" ,
"port" : 443
}
],
"fqdnTags" : [
"WindowsUpdate"
],
"sourceAddresses" : [
"*"
]
}
]
}
}
],
"natRuleCollections" : [
{
"name" : "Coll-01" ,
"properties" : {
"priority" : 100 ,
"action" : {
"type" : "Dnat"
},
"rules" : [
{
"name" : "rdp-01" ,
"protocols" : [
"TCP"
],
"translatedAddress" : "10.0.1.4" ,
"translatedPort" : "3389" ,
"sourceAddresses" : [
"*"
],
"destinationAddresses" : [
"[reference(resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}', variables('publicIpAddressName'), add(range(0, 2)[0], 1))), '2023-09-01').ipAddress]"
],
"destinationPorts" : [
"3389"
]
},
{
"name" : "rdp-02" ,
"protocols" : [
"TCP"
],
"translatedAddress" : "10.0.1.5" ,
"translatedPort" : "3389" ,
"sourceAddresses" : [
"*"
],
"destinationAddresses" : [
"[reference(resourceId('Microsoft.Network/publicIPAddresses', format('{0}{1}', variables('publicIpAddressName'), add(range(0, 2)[1], 1))), '2023-09-01').ipAddress]"
],
"destinationPorts" : [
"3389"
]
}
]
}
}
]
},
"dependsOn" : [
"publicIPAddress" ,
"[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), 'AzureFirewallSubnet')]"
]
},
{
"type" : "Microsoft.Network/routeTables" ,
"apiVersion" : "2023-09-01" ,
"name" : "rt-01" ,
"location" : "[parameters('location')]" ,
"properties" : {
"disableBgpRoutePropagation" : false ,
"routes" : [
{
"name" : "fw" ,
"properties" : {
"addressPrefix" : "0.0.0.0/0" ,
"nextHopType" : "VirtualAppliance" ,
"nextHopIpAddress" : "10.0.0.4"
}
}
]
}
}
],
"outputs" : {
"name" : {
"type" : "string" ,
"value" : "[variables('firewallName')]"
},
"resourceId" : {
"type" : "string" ,
"value" : "[resourceId('Microsoft.Network/azureFirewalls', variables('firewallName'))]"
},
"location" : {
"type" : "string" ,
"value" : "[parameters('location')]"
},
"resourceGroupName" : {
"type" : "string" ,
"value" : "[resourceGroup().name]"
}
}
}
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 bránu Azure Firewall s několika veřejnými IP adresami zadejte nebo vyberte následující hodnoty:
Předplatné: Výběr z existujících předplatných
Skupina prostředků: Vyberte z existujících skupin prostředků nebo vyberte Vytvořit nový a vyberte OK .
Umístění: Vyberte umístění
Uživatelské jméno správce: Zadejte uživatelské jméno pro uživatelský účet správce.
Heslo správce: Zadejte heslo správce nebo klíč.
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.
Na webu Azure Portal zkontrolujte nasazené prostředky. Poznamenejte si veřejné IP adresy brány firewall.
Pomocí připojení ke vzdálené ploše se připojte k veřejným IP adresům brány firewall. Úspěšná připojení ukazují pravidla překladu adres (NAT) brány firewall, která umožňují připojení k back-endovým serverům.
Pokud už nepotřebujete prostředky, které jste vytvořili pomocí brány firewall, odstraňte skupinu prostředků. Odstraněním skupiny prostředků odeberete bránu firewall a všechny související prostředky.
Pokud chcete odstranit skupinu prostředků, zavolejte rutinu Remove-AzResourceGroup
:
Remove-AzResourceGroup -Name "<your resource group name>"