Configurare le chiavi gestite dal cliente per SAN di Elastic in Azure
Tutti i dati scritti in un volume SAN di Elastic vengono crittografati automaticamente quando sono inattivi con una chiave di crittografia dei dati (chiave DEK). Azure usa la crittografia envelope per crittografare la chiave DEK usando una chiave di crittografia della chiave (Key Encryption Key, KEK). Per impostazione predefinita, la chiave KEK è gestita dalla piattaforma (da Microsoft), ma è possibile creare e gestire la propria chiave KEK.
Questo articolo illustra come configurare la crittografia di un gruppo di volumi SAN di Elastic con chiavi gestite dal cliente archiviate in Azure Key Vault.
Limiti
L'elenco seguente contiene le aree in cui SAN di Elastic è attualmente disponibile e le aree che supportano sia l'archiviazione con ridondanza della zona (ZRS) che l'archiviazione con ridondanza locale (LRS) o solo LRS:
- Australia orientale - LRS
- Brasile meridionale - LRS
- Canada centrale - LRS
- Stati Uniti centrali - Archiviazione con ridondanza locale
- Asia orientale - LRS
- Stati Uniti orientali - LRS
- Stati Uniti orientali 2 - LRS
- Francia centrale - LRS e ZRS
- Germania centro-occidentale - LRS
- India centrale - Archiviazione con ridondanza locale
- Giappone orientale - LRS
- Corea centrale - LRS
- Europa settentrionale - LRS e ZRS
- Norvegia orientale - Archiviazione con ridondanza locale
- Sudafrica settentrionale - LRS
- Stati Uniti centro-meridionali - LRS
- Asia sud-orientale -LRS
- Svezia centrale - LRS
- Svizzera settentrionale - LRS
- Emirati Arabi Uniti settentrionali - Archiviazione con ridondanza locale
- Regno Unito meridionale - LRS
- Europa occidentale - LRS e ZRS
- Stati Uniti occidentali 2 - LRS e ZRS
- Stati Uniti occidentali 3 - LRS
SAN di Elastic è disponibile anche nelle aree seguenti, ma senza il supporto della zona di disponibilità:
- Canada orientale - Archiviazione con ridondanza locale
- Giappone occidentale - Archiviazione con ridondanza locale
- Stati Uniti centro-settentrionali - Archiviazione con ridondanza locale
Per abilitare queste aree, eseguire il comando seguente per registrare il flag di funzionalità necessario:
Register-AzProviderFeature -FeatureName "EnableElasticSANRegionalDeployment" -ProviderNamespace "Microsoft.ElasticSan"
Prerequisiti
Per eseguire le operazioni descritte in questo articolo, è necessario preparare l'account di Azure e gli strumenti di gestione da usare. La preparazione include l'installazione dei moduli necessari, l'accesso all'account e l'impostazione delle variabili per PowerShell e per l'interfaccia della riga di comando di Azure. Lo stesso set di variabili viene usato in questo articolo, quindi impostandolo ora è possibile usare le stesse variabili in tutti gli esempi.
Per eseguire le operazioni descritte in questo articolo tramite PowerShell:
Installare la versione più recente di Azure PowerShell, se non è già installata.
Dopo aver installato Azure PowerShell, installare la versione 0.1.2 o una versione successiva dell'estensione SAN di Elastic con
Install-Module -Name Az.ElasticSan -Repository PSGallery
.Accedere ad Azure.
Connect-AzAccount
Creare le variabili da usare negli esempi di PowerShell in questo articolo
Copiare il codice di esempio e sostituire tutto il testo del segnaposto con i propri valori. Usare le stesse variabili in tutti gli esempi di questo articolo:
# Define some variables
# The name of the resource group where the resources will be deployed.
$RgName = "ResourceGroupName"
# The name of the Elastic SAN that contains the volume group to be configured.
$EsanName = "ElasticSanName"
# The name of the Elastic SAN volume group to be configured.
$EsanVgName = "ElasticSanVolumeGroupName"
# The region where the new resources will be created.
$Location = "Location"
# The name of the Azure Key Vault that will contain the KEK.
$KvName = "KeyVaultName"
# The name of the Azure Key Vault key that is the KEK.
$KeyName = "KeyName"
# The name of the user-assigned managed identity, if applicable.
$ManagedUserName = "ManagedUserName"
Configurare l'insieme di credenziali delle chiavi
È possibile usare un insieme di credenziali delle chiavi nuovo o esistente per archiviare le chiavi gestite dal cliente. La risorsa crittografata e l'insieme di credenziali delle chiavi possono trovarsi in aree o sottoscrizioni diverse nello stesso tenant di Microsoft Entra ID. Per altre informazioni su Azure Key Vault, vedere Panoramica di Azure Key Vault e Che cos'è Azure Key Vault?.
L'uso di chiavi gestite dal cliente con la crittografia richiede che sia l'eliminazione temporanea che la protezione dalla rimozione definitiva siano abilitate per l'insieme di credenziali delle chiavi. L'eliminazione temporanea è abilitata per impostazione predefinita quando si crea un nuovo insieme di credenziali delle chiavi e non è possibile disabilitarla. È possibile abilitare la protezione dalla rimozione definitiva quando si crea l'insieme di credenziali delle chiavi o dopo averlo creato. La crittografia di SAN di Elastic in Azure supporta le chiavi RSA di dimensioni 2048, 3072 e 4096.
Azure Key Vault supporta l'autorizzazione con il controllo degli accessi in base al ruolo di Azure tramite un modello di autorizzazione del controllo degli accessi in base al ruolo di Azure. Microsoft consiglia di usare il modello di autorizzazione del controllo degli accessi in base al ruolo di Azure sui criteri di accesso dell'insieme di credenziali delle chiavi. Per altre informazioni, vedere Concedere alle applicazioni l'autorizzazione per accedere a un insieme di credenziali delle chiavi di Azure usando il controllo degli accessi in base al ruolo di Azure.
La preparazione di un insieme di credenziali delle chiavi come archivio per le chiavi KEK del gruppo di volumi prevede due passaggi:
- Creare un nuovo insieme di credenziali delle chiavi con eliminazione temporanea e protezione dalla rimozione definitiva abilitate oppure abilitare la protezione dalla rimozione definitiva per un insieme di credenziali delle chiavi esistente.
- Creare o assegnare un ruolo Controllo degli accessi in base al ruolo di Azure che abbia le autorizzazioni backup create delete get import get list update restore.
L'esempio seguente:
- Crea un nuovo insieme di credenziali delle chiavi con eliminazione temporanea e protezione dalla rimozione definitiva abilitate.
- Ottiene l'UPN dell'account utente.
- Assegna il ruolo di Responsabile della crittografia di Key Vault per il nuovo insieme di credenziali delle chiavi all'account.
Usare le stesse variabili definite in precedenza in questo articolo.
# Setup the parameters to create the key vault.
$NewKvArguments = @{
Name = $KvName
ResourceGroupName = $RgName
Location = $Location
EnablePurgeProtection = $true
EnableRbacAuthorization = $true
}
# Create the key vault.
$KeyVault = New-AzKeyVault @NewKvArguments
# Get the UPN of the currently loggged in user.
$MyAccountUpn = (Get-AzADUser -SignedIn).UserPrincipalName
# Setup the parameters to create the role assignment.
$CrptoOfficerRoleArguments = @{
SignInName = $MyAccountUpn
RoleDefinitionName = "Key Vault Crypto Officer"
Scope = $KeyVault.ResourceId
}
# Assign the Cypto Officer role to your account for the key vault.
New-AzRoleAssignment @CrptoOfficerRoleArguments
Per informazioni su come abilitare la protezione dalla rimozione definitiva in un insieme di credenziali delle chiavi esistente con PowerShell, vedere Panoramica del ripristino di Azure Key Vault.
Per altre informazioni su come assegnare un ruolo Controllo degli accessi in base al ruolo con PowerShell, vedere Assegnare ruoli di Azure usando Azure PowerShell.
Aggiungere una chiave
Aggiungere quindi una chiave all'insieme di credenziali delle chiavi. Prima di aggiungere la chiave, assicurarsi di aver assegnato a se stessi il ruolo di Responsabile della crittografia di Key Vault.
Archiviazione di Azure e la crittografia di SAN di Elastic supportano le chiavi RSA di dimensioni 2048, 3072 e 4096. Per altre informazioni sui tipi di chiave supportati, vedere Informazioni sulle chiavi.
Usare questi comandi di esempio per aggiungere una chiave all'insieme di credenziali delle chiavi con PowerShell. Usare le stesse variabili definite in precedenza in questo articolo.
# Get the key vault where the key is to be added.
$KeyVault = Get-AzKeyVault -ResourceGroupName $RgName -VaultName $KvName
# Setup the parameters to add the key to the vault.
$NewKeyArguments = @{
Name = $KeyName
VaultName = $KeyVault.VaultName
Destination = "Software"
}
# Add the key to the vault.
$Key = Add-AzKeyVaultKey @NewKeyArguments
Scegliere una strategia di rotazione delle chiavi
Seguire le procedure consigliate per la crittografia significa ruotare la chiave che protegge il gruppo di volumi SAN di Elastic in base a una pianificazione regolare, in genere almeno ogni due anni. SAN di Elastic in Azure non modifica mai la chiave nell'insieme di credenziali delle chiavi, ma è possibile configurare un criterio di rotazione delle chiavi per ruotare la chiave in base ai requisiti di conformità. Per altre informazioni, vedere Configurare la rotazione automatica delle chiavi crittografiche in Azure Key Vault.
Al termine della rotazione delle chiavi nell'insieme di credenziali delle chiavi, la configurazione della crittografia per il gruppo di volumi SAN di Elastic deve essere aggiornata per usare la nuova versione della chiave. Le chiavi gestite dal cliente supportano sia l'aggiornamento automatico che manuale della versione della chiave KEK. Decidere quale approccio si vuole usare prima di configurare le chiavi gestite dal cliente per un gruppo di volumi nuovo o esistente.
Per altre informazioni sulla rotazione delle chiavi, vedere Aggiornare la versione della chiave.
Importante
Quando si modifica la chiave o la versione della chiave, la protezione della chiave di crittografia dei dati radice cambia, ma i dati nel gruppo di volumi SAN di Elastic di Azure rimangono sempre crittografati. Non è richiesta alcuna azione aggiuntiva da parte tua per garantire che i tuoi dati siano protetti. La rotazione della versione delle chiavi non influisce sulle prestazioni e non implica tempi di inattività.
Rotazione automatica della versione delle chiavi
SAN di Elastic di Azure può aggiornare automaticamente la chiave gestita dal cliente usata per la crittografia per usare la versione più recente della chiave dall'insieme di credenziali delle chiavi. SAN di Elastic controlla ogni giorno se esiste una nuova versione della chiave dell'insieme di credenziali delle chiavi. Quando è disponibile una nuova versione, inizia automaticamente a usare la versione più recente della chiave per la crittografia. Quando si ruota una chiave, assicurarsi di attendere 24 ore prima di disabilitare la versione precedente.
Importante
Se il gruppo di volumi SAN di Elastic è stato configurato per l'aggiornamento manuale della versione delle chiavi e si vuole modificarlo in modo che venga aggiornato automaticamente, modificare la versione delle chiavi in una stringa vuota. Per altre informazioni sulla modifica manuale della versione delle chiavi, vedere Aggiornare automaticamente la versione della chiave.
Rotazione manuale della versione delle chiavi
Se si preferisce aggiornare manualmente la versione delle chiavi, specificare l'URI per una versione specifica al momento della configurazione della crittografia con le chiavi gestite dal cliente. Quando si specifica l'URI, SAN di Elastic non aggiorna automaticamente la versione delle chiavi quando viene creata una nuova versione nell'insieme di credenziali delle chiavi. Affinché SAN di Elastic usi una nuova versione delle chiavi, è necessario aggiornarla manualmente.
Per individuare l'URI di una versione specifica di una chiave nel portale di Azure:
- Passare all'insieme di credenziali delle chiavi.
- In Oggetti selezionare Chiavi.
- Selezionare la chiave desiderata per visualizzarne le versioni.
- Selezionare una versione della chiave per visualizzare le relative impostazioni.
- Copiare il valore del campo Identificatore chiave, che fornisce l'URI.
- Salvare il testo copiato da usare in un secondo momento durante la configurazione della crittografia per il gruppo di volumi.
Scegliere un'identità gestita per autorizzare l'accesso all'insieme di credenziali delle chiavi
Quando si abilitano le chiavi di crittografia gestite dal cliente per un gruppo di volumi SAN di Elastic, è necessario specificare un'identità gestita usata per autorizzare l'accesso all'insieme di credenziali delle chiavi contenente la chiave. L'identità gestita deve avere le autorizzazioni seguenti:
- get
- wrapkey
- unwrapkey
L'identità gestita autorizzata ad accedere all'insieme di credenziali delle chiavi può essere un'identità gestita assegnata dall'utente o assegnata dal sistema. Per altre informazioni sulle identità gestite assegnate dal sistema e quelle assegnate dall'utente, vedere Tipi di identità gestita.
Quando viene creato un gruppo di volumi, viene creata automaticamente una relativa identità assegnata dal sistema. Se si vuole usare un'identità assegnata dall'utente, crearla prima di configurare le chiavi di crittografia gestite dal cliente per il gruppo di volumi. Per informazioni su come creare e gestire un'identità gestita assegnata dall'utente, vedere Gestire le identità gestite assegnate dall'utente.
Usare un'identità gestita assegnata dall'utente per autorizzare l'accesso
Quando si abilitano le chiavi gestite dal cliente per un nuovo gruppo di volumi, è necessario specificare un'identità gestita assegnata dall'utente. Un gruppo di volumi esistente supporta l'uso di un'identità gestita assegnata dall'utente o di un'identità gestita assegnata dal sistema per configurare le chiavi gestite dal cliente.
Quando si configurano le chiavi gestite dal cliente con un'identità gestita assegnata dall'utente, l'identità gestita assegnata dall'utente viene usata per autorizzare l'accesso all'insieme di credenziali delle chiavi che contiene la chiave. È necessario creare l'identità assegnata dall'utente prima di configurare le chiavi gestite dal cliente.
Un'identità gestita assegnata dall'utente è una risorsa di Azure autonoma. Per altre informazioni sulle identità gestite assegnate dall'utente, vedere Tipi di identità gestita. Per informazioni su come creare e gestire un'identità gestita assegnata dall'utente, vedere Gestire le identità gestite assegnate dall'utente.
L'identità gestita assegnata dall'utente deve avere le autorizzazioni per accedere alla chiave nell'insieme di credenziali delle chiavi. È possibile concedere manualmente le autorizzazioni all'identità o assegnare un ruolo predefinito con ambito insieme di credenziali delle chiavi per concedere queste autorizzazioni.
L'esempio seguente illustra come:
- Creare una nuova identità gestita assegnata dall'utente.
- Attendere il completamento della creazione dell'identità assegnata dall'utente.
- Ottenere
PrincipalId
dalla nuova identità. - Assegnare un ruolo Controllo degli accessi in base al ruolo alla nuova identità, con insieme di credenziali delle chiavi come ambito.
Usare le stesse variabili definite in precedenza in questo articolo.
# Create a new user-assigned managed identity.
$UserIdentity = New-AzUserAssignedIdentity -ResourceGroupName $RgName -Name $ManagedUserName -Location $Location
Suggerimento
Attendere circa 1 minuto il completamento della creazione dell'identità assegnata dall'utente prima di procedere.
# Get the `PrincipalId` for the new identity.
$PrincipalId = $UserIdentity.PrincipalId
# Setup the parameters to assign the Crypto Service Encryption User role.
$CryptoUserRoleArguments = @{
ObjectId = $PrincipalId
RoleDefinitionName = "Key Vault Crypto Service Encryption User"
Scope = $KeyVault.ResourceId
}
# Assign the Crypto Service Encryption User role to the managed identity so it can access the key in the vault.
New-AzRoleAssignment @CryptoUserRoleArguments
Usare un'identità gestita assegnata dal sistema per autorizzare l'accesso
Un'identità gestita assegnata dal sistema è associata a un'istanza di un servizio di Azure, ad esempio un gruppo di volumi SAN di Elastic di Azure.
L'identità gestita assegnata dal sistema deve avere le autorizzazioni per accedere alla chiave nell'insieme di credenziali delle chiavi. Questo articolo usa il ruolo Utente di crittografia del servizio di crittografia di Key Vault per l'identità gestita assegnata dal sistema con ambito insieme di credenziali delle chiavi per concedere queste autorizzazioni.
Quando viene creato un gruppo di volumi, viene creata automaticamente una relativa identità assegnata dal sistema se il parametro -IdentityType "SystemAssigned"
viene specificato con il comando New-AzElasticSanVolumeGroup
. L'identità assegnata dal sistema non è disponibile fino a quando la creazione del gruppo di volumi non è completa. È anche necessario assegnare un ruolo appropriato, ad esempio il ruolo Utente di crittografia del servizio di crittografia di Key Vault all'identità prima che questa possa accedere alla chiave di crittografia nell'insieme di credenziali delle chiavi. Non è quindi possibile configurare le chiavi gestite dal cliente per l'uso di un'identità assegnata dal sistema durante la creazione di un gruppo di volumi. Quando si crea un nuovo gruppo di volumi con chiavi gestite dal cliente, è necessario usare un'identità assegnata dall'utente quando si crea il gruppo di volumi. Dopo averlo creato, è possibile configurare un'identità assegnata dal sistema.
Usare questo codice di esempio per assegnare il ruolo Controllo degli accessi in base al ruolo richiesto all'identità gestita assegnata dal sistema,con insieme di credenziali delle chiavi come ambito. Usare le stesse variabili definite in precedenza in questo articolo.
# Get the Elastic SAN volume group.
$ElasticSanVolumeGroup = Get-AzElasticSanVolumeGroup -Name $EsanVgName -ElasticSanName $EsanName -ResourceGroupName $RgName
# Generate a system-assigned identity if one does not already exist.
If ($ElasticSanVolumeGroup.IdentityPrincipalId -eq $null) {
Update-AzElasticSanVolumeGroup -ResourceGroupName $RgName -ElasticSanName $EsanName -Name $EsanVgName -IdentityType "SystemAssigned"}
# Get the `PrincipalId` (system-assigned identity) of the volume group.
$PrincipalId = $ElasticSanVolumeGroup.IdentityPrincipalId
# Setup the parameters to assign the Crypto Service Encryption User role.
$CryptoUserRoleArguments = @{
ObjectId = $PrincipalId
RoleDefinitionName = "Key Vault Crypto Service Encryption User"
Scope = $KeyVault.ResourceId
}
# Assign the Crypto Service Encryption User role.
New-AzRoleAssignment @CryptoUserRoleArguments
Configurare le chiavi gestite dal cliente per un gruppo di volumi
Selezionare il modulo di Azure PowerShell o la scheda Interfaccia della riga di comando di Azure per istruzioni su come configurare le chiavi di crittografia gestite dal cliente usando lo strumento di gestione preferito.
Dopo aver selezionato PowerShell, selezionare la scheda corrispondente alla scelta di configurare le impostazioni durante la creazione di un nuovo gruppo di volumi o aggiornare le impostazioni per un gruppo esistente.
Usare questo esempio per configurare le chiavi gestite dal cliente con aggiornamento automatico della versione delle chiavi durante la creazione di un nuovo gruppo di volumi tramite PowerShell:
# Setup the parameters to create the volume group.
$NewVgArguments = @{
Name = $EsanVgName
ElasticSanName = $EsanName
ResourceGroupName = $RgName
ProtocolType = "Iscsi"
Encryption = "EncryptionAtRestWithCustomerManagedKey"
KeyName = $KeyName
KeyVaultUri = $KeyVault.VaultUri
IdentityType = "UserAssigned"
IdentityUserAssignedIdentity = @{$UserIdentity.Id=$UserIdentity}
EncryptionIdentityEncryptionUserAssignedIdentity = $UserIdentity.Id
}
# Create the volume group.
New-AzElasticSanVolumeGroup @NewVgArguments
Per configurare le chiavi gestite dal cliente con aggiornamento manuale della versione delle chiavi durante la creazione di un nuovo gruppo di volumi tramite PowerShell, aggiungere il parametro KeyVersion
come illustrato in questo esempio:
# Setup the parameters to create the volume group.
$NewVgArguments = @{
Name = $EsanVgName
ElasticSanName = $EsanName
ResourceGroupName = $RgName
ProtocolType = "Iscsi"
Encryption = "EncryptionAtRestWithCustomerManagedKey"
KeyName = $KeyName
KeyVaultUri = $KeyVault.VaultUri
KeyVersion = $Key.Version
IdentityType = "UserAssigned"
IdentityUserAssignedIdentity = @{$UserIdentity.Id=$UserIdentity}
EncryptionIdentityEncryptionUserAssignedIdentity = $UserIdentity.Id
}
# Create the volume group.
New-AzElasticSanVolumeGroup @NewVgArguments