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:

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:

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.