Clouds

Backup configurazione Azure Firewall

>>> Download: Scarica lo script da GitHub

Chi lavora con Azure Firewall di Microsoft sa che ancora non c’è un tool nativo che ci permette con un clic di backuppare la configurazione del nostro firewall e soprattutto la policy con tutte le sue regole dentro, che possono essere anche decine.

Ho creato un piccolo script in PowerShell che ci permette di salvare in un file JSON sulla macchina da cui viene eseguito la configurazione del firewall, della policy e di tutte le regole, permettendo poi un facile restore usando sempre la PowerShell o la Azure CLI.

Come prima cosa dobbiamo registrare un’applicazione nella nostra Azure AD che ci consenta di autenticare ed autorizzare il nostro script. Potete seguire le istruzioni che trovate in questa guida di Microsoft, sezione App Registration.

Secondo step è generare il secret richiesto per autenticare l’app: di nuovo potete usare la stessa guida al passaggio sucessivo. Annotate il valore quindi del client secret (anche perchè non potrà essere più visualizzato dopo), il Subscription ID, l’Application ID (o Client ID) e il Tenant ID. Questi valori dovranno tutti essere passati allo script.

Una volta fatto questo, va assegnato il giusto livello di permessi alla applicazione per poter accedere alla config del firewall: è richiesto di avere il ruolo di Contributor sul resource group che contiene il firewall e la firewall policy.

Va selezionato quindi il ruolo di Contributor, clicchiamo Next e a seguire va scelta l’identità dell’applicazione che avete registrato: quindi, se l’applicazione si chiama ad esempio Get-AzfwConfig, basta digitare le prime lettere del nome e il portale di Azure vi suggerirà di scegliere l’applicazione al posto di uno degli utenti della vostra Azure AD. Selezionatela, cliccate su Select ed a quel punto completate l’assegnazione del ruolo.

Ora siete pronti per lanciare lo script. Apritelo e modificate la sezione iniziale con i valori che vi siete annotati prima:

#region Azure Info
#Fill these variables - all of these are mandatory!
$SubscriptionId = "mySubId"
$TenantId = "myTenantId"
$ClientId = "myAppClientId"
$ClientSecret = "myAppSecretId"
$resGroupName = "rg-containing-fw"
$fwName = "myFwName"
$fwPolicyName ="myFwPolicyName"
#endregion

Oltre ai valori che abbiamo già ottenuto, servono solo il nome del Resource Group che contiene firewall e firewall policy, il nome del firewall e della policy. Sono tutti dati che possiamo facilmente ottenere dalla Overview dei rispettivi oggetti nel portale di Azure.

Eseguite lo script e vi troverete un file JSON nella directory dello script con tutta la config del vostro firewall. Potete utilizzare il backup per ripristinare il firewall nello stesso ambiente o anche per fare il deploy di un’altra istanza in un altro ambiente. Ovviamente è possibile anche modificare il file JSON per modificare setting del firewall prima del deploy, ma questo richiede un minimo di conoscenze legate alla config di Azure Firewall ed alla sintassi di un file JSON.

Per eseguire il restore, potete usare la cmdlet seguente dalla Cloud Shell del portale Azure:

New-AzResourceGroupDeployment -name <firewallname> -ResourceGroupName <resourcegroupnameoffirewall> -TemplateFile <backupfilepath>

Dovete passare il nome del firewall che volete ripristinare, il nome del Resource Group che volete usare per il restore (e che deve quindi già esistere) e il path completo al file JSON che abbiamo ottenuto con il nostro script di backup.

La cmdlet di PowerShell ci chiederà quindi due altri elementi, ossia l’ip pubblico che dovrà usare il firewall (e che deve già esistere) e la Vnet in cui ripristinarlo, anche questa già esistente e con la AzureFirewallSubnet configurata. Il formato in cui passare queste informazioni è il seguente (ottenibile dalla pagina Settings > Properties della risorsa, voce Resource ID) :

/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.Network/publicIPAddresses/<FirewallPublicIP>

/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.Network/virtualNetworks/<FirewallVNet>

ATTENZIONE: lo script va protetto e non lasciato a disposizione di nessuno, contenendo dati di autenticazione che permettono l’accesso anche in scrittura sul vostro Azure Firewall!

Credits: grazie alla Logic App di Lara Goldstein di Microsoft, che permette di backuppare il firewall usando l’automazione di Azure e che ha ispirato lo script.

Altra risorsa fondamentale è la guida di Microsoft per la gestione della API REST di Azure usando la PowerShell.

>>> Download: Scarica lo script da GitHub