Condividi tramite


Proteggere l'accesso ai moduli di protezione hardware gestiti

Questa esercitazione fornisce un esempio pratico di implementazione del controllo di accesso per il modulo di protezione hardware gestito di Azure Key Vault. Imparerai come implementare la separazione dei compiti utilizzando l'RBAC di Azure e l'RBAC locale del Modulo di Sicurezza Hardware gestito, attraverso uno scenario realistico.

Importante

Prima di procedere con questa esercitazione, assicurati di comprendere il modello di controllo degli accessi dell'HSM gestito, comprese le differenze tra il piano di controllo e il piano dati. Per questa base concettuale, vedere il controllo di accesso di HSM gestito.

Prerequisiti

Azure Cloud Shell

Azure ospita Azure Cloud Shell, un ambiente shell interattivo che è possibile usare tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.

Per avviare Azure Cloud Shell:

Opzione Esempio/collegamento
Selezionare Prova nell'angolo superiore destro di un codice o di un blocco di comandi. Selezionando Prova non viene copiato automaticamente il codice o il comando in Cloud Shell. Screenshot che mostra un esempio della funzione
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. Pulsante per avviare Azure Cloud Shell.
Selezionare il pulsante Cloud Shell nella barra dei menu in alto a destra nel portale di Azure. Screenshot che mostra il pulsante Cloud Shell nel portale di Azure

Per usare Azure Cloud Shell:

  1. Avviare Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice (o blocco di comandi) per copiare il codice o il comando.

  3. Incollare il codice o il comando nella sessione di Cloud Shell selezionando Ctrl+Shift+V in Windows e Linux oppure selezionando Cmd+Shift+V in macOS.

  4. Selezionare INVIO per eseguire il codice o il comando.

Accedere ad Azure

Per accedere ad Azure usando l'interfaccia della riga di comando è possibile digitare:

az login

Per altre informazioni sulle opzioni di accesso tramite l'interfaccia della riga di comando, vedere Accedere con l'interfaccia della riga di comando di Azure

Comprendere lo scenario di esempio

In questo esempio si sta sviluppando un'applicazione che usa una chiave RSA a 2.048 bit per le operazioni di firma. L'applicazione viene eseguita in una macchina virtuale di Azure con un'identità gestita. La chiave RSA usata per la firma viene archiviata nel modulo di protezione hardware gestito.

Definire ruoli e responsabilità

Sono stati identificati i ruoli seguenti che gestiscono, distribuiscono e controllano l'applicazione:

  • Team di sicurezza: personale IT dall'ufficio del CSO (Chief Security Officer) o collaboratori simili. Il team di sicurezza è responsabile della corretta conservazione delle chiavi. Le chiavi includono chiavi RSA o EC per la firma e chiavi RSA o AES per la crittografia dei dati.
  • Sviluppatori e operatori: il personale che sviluppa l'applicazione e lo distribuisce in Azure. I membri di questo team non fanno parte del personale addetto alla sicurezza. Non devono avere accesso a dati sensibili come le chiavi RSA. Solo l'applicazione distribuita deve avere accesso a questi dati sensibili.
  • Revisori: questo ruolo è destinato ai collaboratori che non sono membri del personale IT generale o dello sviluppo. Esaminano l'uso e la manutenzione di certificati, chiavi e segreti per garantire la conformità agli standard di sicurezza.

Esiste un altro ruolo che non rientra nell'ambito dell'applicazione: l'amministratore della sottoscrizione (o del gruppo di risorse). L'amministratore della sottoscrizione configura le autorizzazioni di accesso iniziali per il team di sicurezza. Concedono l'accesso al team di sicurezza usando un gruppo di risorse con le risorse richieste dall'applicazione.

Definire le operazioni necessarie per ogni ruolo

È necessario autorizzare le operazioni seguenti per i ruoli:

Team di sicurezza

  • Creare il HSM gestito
  • Scaricare il dominio di sicurezza dell'HSM gestito (per il recupero di emergenza)
  • Abilitare la registrazione
  • Generare o importare chiavi
  • Creare i backup di HSM gestito per il ripristino di emergenza
  • Impostare il Controllo degli accessi in base al ruolo locale di HSM gestito per concedere a utenti e applicazioni le autorizzazioni per eseguire operazioni specifiche
  • Aggiornare periodicamente le chiavi

Sviluppatori e operatori

  • Ottenere un riferimento (URI chiave) dal team di sicurezza per la chiave RSA usata per la firma
  • Sviluppare e distribuire l'applicazione che accede alla chiave a livello di codice

Revisori

  • Esaminare le date di scadenza delle chiavi per assicurarsi che le chiavi siano up-to-date
  • Monitorare le assegnazioni di ruolo per garantire che le chiavi siano accessibili solo da utenti/applicazioni autorizzati
  • Esaminare i log del modulo di protezione hardware gestito per confermare l'uso corretto delle chiavi in conformità agli standard di sicurezza dei dati

Assegnare ruoli appropriati

La tabella seguente riepiloga le assegnazioni di ruolo ai team e alle risorse per accedere al modulo di protezione hardware gestito.

Ruolo Ruolo del piano di controllo Ruolo del piano dati
Team responsabile della sicurezza Managed HSM Contributor Managed HSM Administrator
Sviluppatori e operatori None None
Revisori None Managed HSM Crypto Auditor
Identità gestita della macchina virtuale usata dall'applicazione None Utente di HSM gestito per la crittografia
Identità gestita dell'account di archiviazione usato dall'applicazione None Servizio di crittografia gestito HSM

I tre ruoli del team devono accedere ad altre risorse oltre alle autorizzazioni del modulo HSM gestito. Per distribuire macchine virtuali (o la funzionalità App Web del servizio app di Azure), gli sviluppatori e gli operatori devono Contributor accedere a tali tipi di risorse. I revisori necessitano dell'accesso in lettura all'account di archiviazione in cui sono archiviati i log del modulo di protezione hardware gestito.

Implementare con l'interfaccia della riga di comando di Azure

Per assegnare i ruoli del piano di controllo (Azure RBAC) si può usare Azure portal o qualsiasi altra interfaccia di gestione, come Azure CLI o Azure PowerShell. Per assegnare ruoli del piano dati dell'HSM gestito, è necessario usare Azure CLI o l'API REST di Azure.

Per altre informazioni sui ruoli del piano di controllo, vedere Ruoli predefiniti di Azure. Per ulteriori informazioni sui ruoli del piano dati di HSM gestito, vedere Ruoli predefiniti Controllo degli accessi in base al ruolo locale per HSM gestito.

I frammenti di interfaccia della riga di comando di Azure seguenti illustrano come implementare le assegnazioni di ruolo descritte in precedenza:

Presupposti

  • L'amministratore di Microsoft Entra ha creato gruppi di sicurezza per rappresentare i tre ruoli: Contoso Security Team, Contoso App DevOps e Contoso App Auditors. L'amministratore ha aggiunto gli utenti ai rispettivi gruppi.
  • Tutte le risorse si trovano nel gruppo di risorse ContosoAppRG .
  • I log dell'HSM gestito vengono archiviati nell'account di archiviazione contosologstorage.
  • Il HSM gestito ContosoMHSM e l'account di archiviazione contosologstorage si trovano nella stessa posizione di Azure.

Assegnare ruoli del piano di controllo

L'amministratore della sottoscrizione assegna il ruolo Managed HSM Contributor al team responsabile della sicurezza. Questo ruolo consente al team di sicurezza di gestire moduli di protezione hardware gestiti esistenti e crearne di nuovi.

# This role assignment allows Contoso Security Team to create new Managed HSMs
az role assignment create --assignee-object-id $(az ad group show -g 'Contoso Security Team' --query 'id' -o tsv) --assignee-principal-type Group --role "Managed HSM Contributor"

Assegnare ruoli del piano dati

Per i moduli di protezione hardware gestiti esistenti, è necessario assegnare al team di sicurezza il ruolo "Amministratore HSM gestito" per gestirli:

# This role assignment allows Contoso Security Team to become administrator of existing managed HSM
az keyvault role assignment create --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso Security Team' --query 'id' -o tsv) --scope / --role "Managed HSM Administrator"

Configurare la registrazione e assegnare ruoli aggiuntivi

Il team di sicurezza configura la registrazione e assegna i ruoli ai revisori e all'applicazione vm:

# Enable logging
hsmresource=$(az keyvault show --hsm-name ContosoMHSM --query id -o tsv)
storageresource=$(az storage account show --name contosologstorage --query id -o tsv)
az monitor diagnostic-settings create --name MHSM-Diagnostics --resource $hsmresource --logs '[{"category": "AuditEvent","enabled": true}]' --storage-account $storageresource

# Assign the "Crypto Auditor" role to Contoso App Auditors group. It only allows them to read.
az keyvault role assignment create --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso App Auditors' --query 'id' -o tsv) --scope / --role "Managed HSM Crypto Auditor"

# Grant the "Crypto User" role to the VM's managed identity. It allows to use keys.
az keyvault role assignment create --hsm-name ContosoMHSM --assignee $(az vm identity show --name "vmname" --resource-group "ContosoAppRG" --query principalId -o tsv) --scope / --role "Managed HSM Crypto User"

# Assign "Managed HSM Crypto Service Encryption User" role to the Storage account identity
storage_account_principal=$(az storage account show --id $storageresource --query identity.principalId -o tsv)
# (if no identity exists), then assign a new one
[ "$storage_account_principal" ] || storage_account_principal=$(az storage account update --assign-identity --id $storageresource --query identity.principalId -o tsv)

az keyvault role assignment create --hsm-name ContosoMHSM --role "Managed HSM Crypto Service Encryption User" --assignee $storage_account_principal

Considerazioni per gli ambienti di produzione

Questa esercitazione illustra uno scenario semplificato per illustrare l'implementazione del controllo di accesso.

Modifica le autorizzazioni per il tuo HSM gestito in base alle tue esigenze specifiche. In questo esempio si presuppone che il team di sicurezza fornisca riferimenti chiave e segreti (URI e identificazioni personali) al personale DevOps da usare nelle applicazioni. Gli sviluppatori e gli operatori non richiedono l'accesso diretto al piano dati. Anche se questa esercitazione è incentrata sulla protezione del modulo di protezione hardware gestito, è consigliabile applicare misure di sicurezza simili ad altre risorse di Azure, come ad esempio le macchine virtuali, gli account di archiviazione e altri.

Passaggi successivi