|
| 1 | +--- |
| 2 | +title: Relocation guidance for Azure Firewall |
| 3 | +description: Learn how to relocate Azure Firewall to a new region |
| 4 | +author: anaharris-ms |
| 5 | +ms.author: anaharris |
| 6 | +ms.reviewer: anaharris |
| 7 | +ms.date: 07/23/2024 |
| 8 | +ms.service: firewall |
| 9 | +ms.topic: how-to |
| 10 | +ms.custom: |
| 11 | + - subject-relocation |
| 12 | +--- |
| 13 | + |
| 14 | + |
| 15 | +# Relocate Azure Firewall to another region |
| 16 | + |
| 17 | +This article shows you how to relocate an Azure Firewall that protects an Azure Virtual Network. |
| 18 | + |
| 19 | + |
| 20 | +## Prerequisites |
| 21 | + |
| 22 | +- We highly recommend that you use Premium SKU. If you are on Standard SKU, consider [migrating from an existing Standard SKU Azure Firewall to Premium SKU](/azure/firewall-manager/migrate-to-policy) before you being relocation. |
| 23 | + |
| 24 | +- The following information must be collected in order to properly plan and execute an Azure Firewall relocation: |
| 25 | + |
| 26 | + - **Deployment model.** *Classic Firewall Rules* or *Firewall policy*. |
| 27 | + - **Firewall policy name.** (If *Firewall policy* deployment model is used). |
| 28 | + - **Diagnostic setting at the firewall instance level.** (If Log Analytics workspace is used). |
| 29 | + - **TLS (Transport Layer Security) Inspection configuration.**: (If Azure Key Vault, Certificate and Managed Identity is used.) |
| 30 | + - **Public IP control.** Assess that any external identity relying on Azure Firewall public IP remains fixed and trusted. |
| 31 | + |
| 32 | + |
| 33 | +- Azure Firewall Standard and Premium tiers have the following dependencies that you may need to be deploy in the target region: |
| 34 | + |
| 35 | + - [Azure Virtual Network](./relocation-virtual-network.md) |
| 36 | + - (If used) [Log Analytics Workspace](./relocation-log-analytics.md) |
| 37 | + |
| 38 | + |
| 39 | +- If you're using the TLS Inspection feature of Azure Firewall Premium tier, the following dependencies also need to be deployed in the target region: |
| 40 | + |
| 41 | + - [Azure Key Vault](./relocation-key-vault.md) |
| 42 | + - [Azure Managed Identity](./relocation-managed-identity.md) |
| 43 | + |
| 44 | + |
| 45 | +## Downtime |
| 46 | + |
| 47 | +To understand the possible downtimes involved, see [Cloud Adoption Framework for Azure: Select a relocation method](/azure/cloud-adoption-framework/relocate/select#select-a-relocation-method). |
| 48 | + |
| 49 | + |
| 50 | +## Prepare |
| 51 | + |
| 52 | +To prepare for relocation, you need to first export and modify the template from the source region. To view a sample ARM template for Azure Firewall, see [review the template](../firewall-manager/quick-firewall-policy.md#review-the-template). |
| 53 | + |
| 54 | +### Export template |
| 55 | + |
| 56 | + |
| 57 | +# [portal](#tab/azure-portal) |
| 58 | + |
| 59 | +1. Sign in to the [Azure portal](https://portal.azure.com). |
| 60 | +2. Select **All resources** and then select your Azure Firewall resource. |
| 61 | +3. On the **Azure Firewall** page, select **Export template** under **Automation** in the left menu. |
| 62 | +4. Choose **Download** in the **Export template** page. |
| 63 | + |
| 64 | +5. Locate the .zip file that you downloaded from the portal, and unzip that file to a folder of your choice. |
| 65 | + |
| 66 | + This zip file contains the .json files that include the template and scripts to deploy the template. |
| 67 | + |
| 68 | + |
| 69 | +# [PowerShell](#tab/azure-powershell) |
| 70 | + |
| 71 | +1. Sign in to your Azure subscription with the `Connect-AzAccount` command and follow the on-screen directions: |
| 72 | + |
| 73 | +```azurecli |
| 74 | +
|
| 75 | +Connect-AzAccount |
| 76 | +``` |
| 77 | + |
| 78 | +2. If your identity is associated with more than one subscription, then set your active subscription to subscription of the Azure Firewall resource that you want to move. |
| 79 | + |
| 80 | +```azurepowershell |
| 81 | +
|
| 82 | +$context = Get-AzSubscription -SubscriptionId <subscription-id> |
| 83 | +Set-AzContext $context |
| 84 | +
|
| 85 | +``` |
| 86 | + |
| 87 | +3. Export the template of your source Azure Firewall resource by running the following commands: |
| 88 | + |
| 89 | +```azurepowershell |
| 90 | +
|
| 91 | +$resource = Get-AzResource ` |
| 92 | + -ResourceGroupName <resource-group-name> ` |
| 93 | + -ResourceName <resource-name> ` |
| 94 | + -ResourceType <resource-type> |
| 95 | +
|
| 96 | +Export-AzResourceGroup ` |
| 97 | + -ResourceGroupName <resource-group-name> ` |
| 98 | + -Resource $resource.ResourceId |
| 99 | +
|
| 100 | +``` |
| 101 | + |
| 102 | +4. Locate the `template.json` in your current directory. |
| 103 | + |
| 104 | + |
| 105 | +--- |
| 106 | + |
| 107 | +### Modify template |
| 108 | + |
| 109 | +In this section, you learn how to modify the template that you generated in the previous section. |
| 110 | + |
| 111 | +If you're running classic firewall rules without Firewall policy, migrate to Firewall policy before preceding with the steps in this section. To learn how to migrate from classic firewall rules to Firewall policy, see [Migrate Azure Firewall configuration to Azure Firewall policy using PowerShell](/azure/firewall-manager/migrate-to-policy). |
| 112 | + |
| 113 | + |
| 114 | +# [Azure portal](#tab/azure-portal) |
| 115 | + |
| 116 | +1. Sign in to the [Azure portal](https://portal.azure.com). |
| 117 | + |
| 118 | +1. If you're using Premium SKU with TLS Inspection enabled, |
| 119 | + 1. [Relocate the key vault](./relocation-key-vault.md) that's used for TLS inspection into the new target region. Then, follow [the procedures](../application-gateway/key-vault-certs.md) to move certificates or generate new certificates for TLS inspection into the new key vault in the target region. |
| 120 | + 1. [Relocate managed identity](./relocation-managed-identity.md) into the new target region. Reassign the corresponding roles for the key vault in the target region and subscription. |
| 121 | + |
| 122 | +1. In the Azure portal, select **Create a resource**. |
| 123 | + |
| 124 | +1. In **Search the Marketplace**, type `template deployment`, and then press **Enter**. |
| 125 | + |
| 126 | +1. Select **Template deployment** and the select **Create**. |
| 127 | + |
| 128 | +1. Select **Build your own template in the editor**. |
| 129 | + |
| 130 | +1. Select **Load file**, and then follow the instructions to load the `template.json` file that you downloaded in the previous section |
| 131 | + |
| 132 | +1. In the `template.json` file, replace: |
| 133 | + - `firewallName` with the default value of your Azure Firewall name. |
| 134 | + - `azureFirewallPublicIpId` with the ID of your public IP address in the target region. |
| 135 | + - `virtualNetworkName` with the name of the virtual network in the target region. |
| 136 | + - `firewallPolicy.id` with your policy ID. |
| 137 | + |
| 138 | +1. [Create a new firewall policy](/azure/firewall-manager/create-policy-powershell) using the configuration of the source region and reflect changes introduced by the new target region (IP Address Ranges, Public IP, Rule Collections). |
| 139 | + |
| 140 | +1. If you're using Premium SKU and you want to enable TLS Inspection, update the newly created firewall policy and enable TLS inspection by following [the instructions here](https://techcommunity.microsoft.com/t5/azure-network-security-blog/building-a-poc-for-tls-inspection-in-azure-firewall/ba-p/3676723). |
| 141 | + |
| 142 | +1. Review and update the configuration for the topics below to reflect the changes required for the target region. |
| 143 | + - **IP Groups.** To include IP addresses from the target region, if different from the source, *IP Groups* should be reviewed. The IP addresses included in the groups must be modified. |
| 144 | + - **Zones.** Configure the [availability Zones (AZ)](../reliability/availability-zones-overview.md) in the target region. |
| 145 | + - **Forced Tunneling.** [Ensure that you've relcoated the virtual network](./relocation-virtual-network.md) and that the firewall *Management Subnet* is present before the Azure Firewall is relocated. Update the IP Address in the target region of the Network Virtual Appliance (NVA) to which the Azure Firewall should redirect the traffic, in the User Defined Route (UDR). |
| 146 | + - **DNS.** Review IP Addresses for your custom custom *DNS Servers* to reflect your target region. If the *DNS Proxy* feature is enabled, be sure to configure your virtual network DNS server settings and set the Azure Firewall’s private IP address as a *Custom DNS server*. |
| 147 | + - **Private IP ranges (SNAT).** - If custom ranges are defined for SNAT, it's recommended that you review and eventually adjust to include the target region address space. |
| 148 | + - **Tags.** - Verify and eventually update any tag that may reflect or refer to the new firewall location. |
| 149 | + - **Diagnostic Settings.** When recreating the Azure Firewall in the target region, be sure to review the *Diagnostic Setting* adn configure it to reflect the target region (Log Analytics workspace, storage account, Event Hub, or 3rd-party partner solution). |
| 150 | + |
| 151 | +1. Edit the `location` property in the `template.json` file to the target region (The following example sets the target region to `centralus`.): |
| 152 | + |
| 153 | +```json |
| 154 | + "resources": [ |
| 155 | + { |
| 156 | + "type": "Microsoft.Network/azureFirewalls", |
| 157 | + "apiVersion": "2023-09-01", |
| 158 | + "name": "[parameters('azureFirewalls_fw_name')]", |
| 159 | + "location": "centralus",}] |
| 160 | +``` |
| 161 | + |
| 162 | +To find the location code for your target region, see [Data residency in Azure](https://azure.microsoft.com/explore/global-infrastructure/data-residency/#overview). |
| 163 | + |
| 164 | +1. Save the `template.json` file. |
| 165 | + |
| 166 | +# [PowerShell](#tab/azure-powershell) |
| 167 | + |
| 168 | + |
| 169 | + |
| 170 | +1. Sign in to the [Azure portal](https://portal.azure.com). |
| 171 | + |
| 172 | +1. If you're using Premium SKU with TLS Inspection enabled, |
| 173 | + 1. [Relocate the key vault](./relocation-key-vault.md) used for TLS inspection into the new target region and follow the procedures to move certificates or generate new certificates for TLS inspection in the new key vault in the target region. |
| 174 | + 1. [Relocate managed identity](./relocation-managed-identity.md) into the new target region and reassign the corresponding roles for the key vault in the target region and subscription. |
| 175 | + |
| 176 | + |
| 177 | +1. In the `template.json` file, replace: |
| 178 | + - `firewallName` with the default value of your Azure Firewall name. |
| 179 | + - `azureFirewallPublicIpId` with the ID of your public IP address in the target region. |
| 180 | + - `virtualNetworkName` with the name of the virtual network in the target region. |
| 181 | + - `firewallPolicy.id` with your policy ID. |
| 182 | + |
| 183 | +1. [Create a new firewall policy](/azure/firewall-manager/create-policy-powershell) using the configuration of the source region and reflect changes introduced by the new target region (IP Address Ranges, Public IP, Rule Collections). |
| 184 | + |
| 185 | +1. Review and update the configuration for the topics below to reflect the changes required for the target region. |
| 186 | + - **IP Groups.** To include IP addresses from the target region, if different from the source, *IP Groups* should be reviewed. The IP addresses included in the groups must be modified. |
| 187 | + - **Zones.** Configure the [availability Zones (AZ)](../reliability/availability-zones-overview.md) in the target region. |
| 188 | + - **Forced Tunneling.** [Ensure that you've relcoated the virtual network](./relocation-virtual-network.md) and that the firewall *Management Subnet* is present before the Azure Firewall is relocated. Update the IP Address in the target region of the Network Virtual Appliance (NVA) to which the Azure Firewall should redirect the traffic, in the User Defined Route (UDR). |
| 189 | + - **DNS.** Review IP Addresses for your custom custom *DNS Servers* to reflect your target region. If the *DNS Proxy* feature is enabled, be sure to configure your virtual network DNS server settings and set the Azure Firewall’s private IP address as a *Custom DNS server*. |
| 190 | + - **Private IP ranges (SNAT).** - If custom ranges are defined for SNAT, it's recommended that you review and eventually adjust to include the target region address space. |
| 191 | + - **Tags.** - Verify and eventually update any tag that may reflect or refer to the new firewall location. |
| 192 | + - **Diagnostic Settings.** When recreating the Azure Firewall in the target region, be sure to review the *Diagnostic Setting* adn configure it to reflect the target region (Log Analytics workspace, storage account, Event Hub, or 3rd-party partner solution). |
| 193 | + |
| 194 | +1. Edit the `location` property in the `template.json` file to the target region (The following example sets the target region to `centralus`.): |
| 195 | + |
| 196 | +```json |
| 197 | + "resources": [ |
| 198 | + { |
| 199 | + "type": "Microsoft.Network/azureFirewalls", |
| 200 | + "apiVersion": "2023-09-01", |
| 201 | + "name": "[parameters('azureFirewalls_fw_name')]", |
| 202 | + "location": "centralus",}] |
| 203 | +``` |
| 204 | + |
| 205 | +To find the location code for your target region, see [Data residency in Azure](https://azure.microsoft.com/explore/global-infrastructure/data-residency/#overview). |
| 206 | + |
| 207 | +--- |
| 208 | + |
| 209 | + |
| 210 | +## Redeploy |
| 211 | + |
| 212 | +Deploy the template to create a new Azure Firewall in the target region. |
| 213 | + |
| 214 | + |
| 215 | +# [Azure portal](#tab/azure-portal) |
| 216 | + |
| 217 | +1. Enter or select the property values: |
| 218 | + |
| 219 | + - Subscription: Select an Azure subscription. |
| 220 | + |
| 221 | + - Resource group: Select Create new and give the resource group a name. |
| 222 | + |
| 223 | + - Location: Select an Azure location. |
| 224 | + |
| 225 | +1. The Azure Firewall is now deployed with the adopted configuration to reflect the needed changes in the target region. |
| 226 | +1. Verify configuration and functionality. |
| 227 | + |
| 228 | + |
| 229 | +# [PowerShell](#tab/azure-powershell) |
| 230 | + |
| 231 | +1. Obtain the subscription ID where you want to deploy the target public IP by running the following command: |
| 232 | + |
| 233 | +```azurepowershell |
| 234 | +
|
| 235 | +Get-AzSubscription |
| 236 | +
|
| 237 | +``` |
| 238 | + |
| 239 | +2. Run the following commands to deploy your template: |
| 240 | + |
| 241 | +```azurepowershell |
| 242 | +
|
| 243 | +$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name" |
| 244 | +$location = Read-Host -Prompt "Enter the location (i.e. eastus)" |
| 245 | +
|
| 246 | +New-AzResourceGroup -Name $resourceGroupName -Location "$location" |
| 247 | +New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri "<name of your local template file>" |
| 248 | +
|
| 249 | +1. The Azure Firewall is now deployed with the adopted configuration to reflect the needed changes in the target region. |
| 250 | +1. Verify configuration and functionality. |
| 251 | +
|
| 252 | +
|
| 253 | +``` |
| 254 | + |
| 255 | +## Related content |
| 256 | + |
| 257 | +- [Move resources to a new resource group or subscription](../azure-resource-manager/management/move-resource-group-and-subscription.md) |
| 258 | +- [Move Azure VMs to another region](../site-recovery/azure-to-azure-tutorial-migrate.md) |
0 commit comments