Utilizzare Azure Key Vault con gli ARM template per il deployment sicuro delle risorse Azure
Uno dei vantaggi dei template di Azure è quello di poter creare tutte le risorse necessarie alla creazione di una soluzione, anche complessa, semplicemente utilizzando un clic! Ne avevo già parlato tempo fa nella guida Azure Resource Manager templates – Deployment con un clic! – ICT Power.
In questa guida voglio mostrarvi come utilizzare Azure Key Vault per poter conservare informazioni sensibili (come, ad esempio, la password di amministratore di una VM) da poter poi riutilizzare in un ARM template per distribuire e creare le risorse previste.
La gestione sicura delle chiavi di cifratura è un aspetto fondamentale della protezione dei dati nel cloud. Con Azure Key Vault è possibile crittografare chiavi e password e successivamente gestirne la distribuzione, in modo tale che non vengano accidentalmente perse o siano disponibili “in chiaro” nel nostro codice.
Nell’esempio che voglio proporvi distribuirò una macchina virtuale utilizzando un Azure ARM template e conserverò la password di amministratore in Azure Key Vault invece che scriverla in chiaro nel template ARM utilizzato per il deployment. Nella figura sotto è mostrato lo schema:
Figura 1: Distribuzione di una macchina virtuale utilizzando un ARM template ed Azure Key Vault
Come prima operazione creiamo un Azure Key Vault. Dal portale di Azure cercate la voce Azure Key Vault e seguite la procedura per la sua creazione. Nelle figure sotto sono mostrati tutti i passaggi:
Figura 2: Creazione di un Azure Key Vault
Per poter utilizzare Azure Key Vault con gli ARM template è necessario selezionare l’apposita casella nella scheda Access Policy del wizard.
Figura 3: Abilitazione in Azure Key Vault all’utilizzo da parte del servizio di deployment di Azure Resource Manager for template
Figura 4: Schermata finale del wizard di creazione dell’Azure Key Vault
Terminata la creazione dell’Azure Key Vault potete procedere alla creazione del nuovo Secret, che conterrà la password che utilizzeremo per l’account amministrativo della macchina virtuale da distribuire tramite ARM template.
Figura 5: Creazione di un nuovo Secret in Azure Key Vault
Figura 6: Configurazione del Secret In Azure Key Vault
Figura 7: Secret salvato in Azure Key Vault
Utilizzo del Secret di Azure Key Vault in un ARM Template
Adesso che abbiamo creato il Secret vediamo come utilizzarlo in un template ARM. Supponiamo che abbiate un template ARM che distribuisce una Azure VM. Uno dei parametri da passare è AdminPassword. Il nostro obiettivo è utilizzare Azure Key Vault per passare il valore del parametro.
Assicuratevi che il parametro sia dichiarato come securestring nel template, come mostrato nella figura sotto:
Figura 8: Il parametro adminPassword è dichiarato come securestring nell’ARM template che distribuisce la Azure VM
Procuratevi il Resource ID del vostro Azure Key Vault perché lo utilizzeremo nel file .JSON dei parametri da passare all’Azure ARM template
Figura 9: Resource ID dell’Azure Key Vault
A questo punto create (se già non lo avete) il vostro file .JSON con i parametri da passare al template ARM. Referenziate il Secret creato nel vostro Azure Key Vault come valore del parametro adminPassword. La sintassi è del tipo:
1 2 3 4 5 6 7 8 |
"adminPassword": { "reference": { "keyVault": { "id": "Inserire il Key Vault Id" }, "secretName": "Nome del secret creato in Azure Key Vault" } } |
Il valore id va compilato con il Resource ID del vostro Azure Key Vault ed il valore secretName va compilato con il nome del Secret creato in Azure Key Vault.
Figura 10: Configurazione del file dei parametri JSON con il riferimento al Secret creato in Azure Key Vault
Distribuzione del template ARM
La distribuzione del template può essere fatta via PowerShell oppure tramite CLI. Io ho deciso di utilizzare PowerShell ed ho usato il comando:
1 |
New-AzResourceGroupDeployment -ResourceGroupName Laboratorio -TemplateFile .\Lab-VM.json -TemplateParameterFile .\LAB-VM-parameters.json |
Figura 11: Distribuzione di un ARM template utilizzando PowerShell
Figura 12: Creazione delle risorse completata
Adesso che sapete come utilizzare i valori contenuti in Azure Key Vault potete effettuare dei deployment automatizzati utilizzando gli Azure ARM Templates in maniera molto più sicura e confidenziale.