Configurer des clés gérées par le client pour une instance Azure Elastic SAN
Toutes les données écrites dans un volume Elastic SAN sont automatiquement chiffrées au repos avec une clé de chiffrement de données (DEK). Azure utilise le chiffrement d’enveloppe pour chiffrer la clé DEK à l’aide d’une clé de chiffrement de clé (KEK). Par défaut, la clé KEK est gérée par la plateforme (gérée par Microsoft), mais vous pouvez créer et gérer votre propre clé.
Cet article explique comment configurer le chiffrement d’un groupe de volumes Elastic SAN avec des clés gérées par le client stockées dans Azure Key Vault.
Limites
La liste suivante contient les régions dans lesquelles Elastic SAN est actuellement disponible, et les régions qui prennent en charge à la fois le stockage redondant interzone (ZRS) et le stockage localement redondant (LRS), ou uniquement LRS :
- Australie Est - LRS
- Brésil Sud – LRS
- Canada Centre – LRS
- USA Centre – LRS
- Asie Est – LRS
- USA Est - LRS
- USA Est 2 - LRS
- France Centre – LRS et ZRS
- Allemagne Centre-Ouest – LRS
- Inde Centre, LRS
- Japon Est – LRS
- Corée Centre – LRS
- Europe Nord – LRS et ZRS
- Norvège Est, LRS
- Afrique du Sud Nord – LRS
- USA Centre Sud - LRS
- Asie Sud-Est - LRS
- Suède Centre - LRS
- Suisse Nord – LRS
- Émirats arabes unis Nord, LRS
- Royaume-Uni Sud - LRS
- Europe Ouest – LRS et ZRS
- USA Ouest 2 - LRS &ZRS
- USA Ouest 3 - LRS
Elastic SAN est également disponible dans les régions suivantes, mais sans prise en charge de la zone de disponibilité :
- Canada Est - LRS
- Japon Ouest - LRS
- USA Centre Nord - LRS
Pour activer ces régions, exécutez la commande suivante pour inscrire l’indicateur de fonctionnalité nécessaire :
Register-AzProviderFeature -FeatureName "EnableElasticSANRegionalDeployment" -ProviderNamespace "Microsoft.ElasticSan"
Prérequis
Pour effectuer les opérations décrites dans cet article, vous devez préparer votre compte Azure et les outils de gestion que vous prévoyez d’utiliser. La préparation inclut l’installation des modules nécessaires, la connexion à votre compte et la définition de variables pour PowerShell et Azure CLI. Le même ensemble de variables est utilisé tout au long de cet article. Par conséquent, leur définition vous permet désormais d’utiliser les mêmes variables dans tous les exemples.
Pour effectuer les opérations décrites dans cet article à l’aide de PowerShell :
Installez la dernière version d’Azure PowerShell si ce n’est déjà fait.
Une fois Azure PowerShell installé, installez la version 0.1.2 ou ultérieure de l’extension Elastic SAN avec
Install-Module -Name Az.ElasticSan -Repository PSGallery
.Connectez-vous à Azure.
Connect-AzAccount
Créez des variables à utiliser dans les exemples PowerShell de cet article
Copiez l’exemple de code et remplacez tous les textes de l’espace réservé par vos propres valeurs. Utilisez les mêmes variables dans tous les exemples de cet article :
# 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"
Configurer le coffre de clés
Vous pouvez utiliser un coffre de clés nouveau ou existant pour stocker les clés gérées par le client. La ressource chiffrée et le coffre de clés peuvent se trouver dans différentes régions ou abonnements dans le même locataire Microsoft Entra ID. Pour en savoir plus sur Azure Key Vault, consultez Vue d’ensemble d’Azure Key Vault et Qu’est-ce qu’Azure Key Vault ?.
L’utilisation de clés gérées par le client avec chiffrement nécessite l’activation de la suppression réversible et de la protection contre la suppression définitive pour le coffre de clés. Lorsque vous créez un coffre de clés, la suppression réversible est activée par défaut et vous ne pouvez pas la désactiver. Vous pouvez activer la protection contre le vidage lorsque vous créez le coffre de clés ou une fois qu’il est créé. Le chiffrement Azure Elastic SAN prend en charge les clés RSA de tailles 2048, 3072 et 4096.
Azure Key Vault prend en charge l’autorisation avec le contrôle d’accès en fonction du rôle (RBAC) Azure via un modèle d’autorisation Azure RBAC. Microsoft recommande d’utiliser le modèle d’autorisation Azure RBAC sur les stratégies d’accès au coffre de clés. Pour plus d’informations, consultez Accorder à des applications l’autorisation d’accéder à un coffre de clés Azure en utilisant le RBAC Azure.
Il y a deux étapes dans la préparation d’un coffre de clés comme magasin pour les clés KEK de votre groupe de volumes :
- Créez un coffre de clés avec suppression réversible et protection contre le vidage activées, ou activez la protection contre le vidage d’un coffre existant.
- Créez ou attribuez un rôle RBAC Azure doté des autorisations backup create delete get import get list update restore.
L’exemple suivant :
- Crée un coffre de clés pour lequel la suppression réversible et la protection contre le vidage sont activées.
- Obtient l’UPN d’un compte d’utilisateur.
- Attribue le rôle Agent de chiffrement Key Vault pour le nouveau coffre de clés à votre compte.
Utilisez les mêmes variables que vous avez définies précédemment dans cet article.
# 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
Pour savoir comment activer la protection contre le vidage sur un coffre de clés existant avec PowerShell, consultez Présentation de la récupération avec Azure Key Vault.
Pour plus d’informations sur l’attribution d’un rôle RBAC avec PowerShell, consultez Attribuer des rôles Azure à l’aide d’Azure PowerShell.
Ajouter une clé
Ensuite, ajoutez une clé au coffre de clés. Avant d’ajouter la clé, assurez-vous que vous vous êtes attribué le rôle Agent de chiffrement Key Vault.
Les chiffrements Azure Storage et Azure Elastic SAN prennent en charge les clés RSA de tailles 2048, 3072 et 4096. Pour plus d’informations sur les types de clés pris en charge, consultez À propos des clés.
Utilisez ces exemples de commandes pour ajouter une clé au coffre de clés avec PowerShell. Utilisez les mêmes variables que vous avez définies précédemment dans cet article.
# 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
Choisir une stratégie de rotation de clé
Les bonnes pratiques de chiffrement suivantes impliquent la rotation de la clé qui protège votre groupe de volumes Elastic SAN selon une planification régulière, généralement tous les deux ans. Azure Elastic SAN ne modifie jamais la clé dans le coffre de clés, mais vous pouvez configurer une stratégie de rotation de clé en fonction de vos exigences de conformité. Pour plus d’informations, voir Configurer la rotation automatique des clés de chiffrement dans Azure Key Vault.
Après avoir effectué la rotation de la clé dans le coffre de clés, la configuration de chiffrement pour votre groupe de volumes Elastic SAN doit être mise à jour pour qu’elle utilise la nouvelle version de la clé. Les clés gérées par le client prennent en charge la mise à jour automatique et manuelle de la version de la clé KEK. Déterminez l’approche que vous souhaitez utiliser avant de configurer des clés gérées par le client pour un groupe de volumes nouveau ou existant.
Pour plus d’informations sur la rotation de clés, consultez Mettre à jour la version de la clé.
Important
Quand vous modifiez la clé ou la version de clé, la protection de la clé de chiffrement de données racine change, mais les données de votre groupe de volumes Azure Elastic SAN restent chiffrées tout le temps. Aucune action supplémentaire n’est requise de votre part pour garantir que vos données sont protégées. La rotation de la version de clé n’a pas d’impact sur les performances et aucun temps d’arrêt n’y est associé.
Rotation automatique de la version de la clé
Azure Elastic SAN peut automatiquement mettre à jour la clé gérée par le client qui est utilisée pour le chiffrement afin d’utiliser la dernière version de la clé dans le coffre de clés. Azure Elastic SAN vérifie quotidiennement dans le coffre de clés s’il y a une nouvelle version de la clé. Lorsqu’une nouvelle version est disponible, il commence automatiquement à utiliser la dernière version de la clé pour le chiffrement. Lorsque vous changez de clé, veillez à patienter 24 heures avant de désactiver l’ancienne version.
Important
Si le groupe de volumes Elastic SAN a été configuré avec mise à jour manuelle de la version de la clé et que vous souhaitez qu’elle soit mise à jour automatiquement, remplacez la version de la clé par une chaîne vide. Pour plus d’informations sur la modification manuelle de la version de la clé, consultez Mettre à jour automatiquement la version de la clé.
Rotation manuelle de la version de la clé
Si vous préférez mettre à jour manuellement la version de la clé, indiquez l’URI d’une version spécifique au moment où vous configurez le chiffrement avec les clés gérées par le client. Lorsque vous spécifiez l’URI, votre SAN élastique ne met pas automatiquement à jour la version de la clé lors de la création d’une version dans le coffre de clés. Pour que votre SAN élastique utilise une nouvelle version de la clé, vous devez la mettre à jour manuellement.
Pour localiser l’URI d’une version spécifique d’une clé dans le portail Azure :
- Accédez à votre coffre de clés.
- Sous Objets, sélectionnez Clés.
- Sélectionnez la clé souhaitée pour afficher ses versions.
- Sélectionnez une version de clé pour afficher les paramètres de cette version.
- Copiez la valeur du champ Identificateur de clé, qui fournit l’URI.
- Enregistrez le texte copié à utiliser ultérieurement lors de la configuration du chiffrement pour votre groupe de volumes.
Choisir une identité managée pour autoriser l’accès au coffre de clés
Lorsque vous activez les clés de chiffrement gérées par le client pour un groupe de volumes Elastic SAN, vous devez spécifier une identité managée utilisée pour autoriser l’accès au coffre de clés qui contient la clé. L’identité managée doit disposer des autorisations suivantes :
- get
- wrapKey
- unwrapKey
L’identité managée dont l’accès au coffre de clés est autorisé peut être une identité managée affectée par l’utilisateur ou par le système. Pour en savoir plus sur les types d’identités managées affectées par le système et par l’utilisateur, consultez Types d’identités managées.
Lorsqu’un groupe de volumes est créé, une identité affectée par le système est automatiquement créée pour celui-ci. Si vous souhaitez utiliser une identité affectée par l’utilisateur, créez-la avant de configurer des clés de chiffrement gérées par le client pour votre groupe de volumes. Pour plus d’informations sur la création et la gestion d’une identité managée affectée par l’utilisateur, consulter Gérer les identités managées affectées par l’utilisateur.
Utiliser une identité managée affectée par l’utilisateur pour autoriser l’accès
Lorsque vous activez des clés gérées par le client pour le groupe de volumes, vous devez spécifier une identité managée affectée par l’utilisateur. Un groupe de volumes existant prend en charge l’utilisation d’une identité managée affectée par l’utilisateur ou d’une identité managée affectée par le système pour la configuration de clés gérées par le client.
Lorsque vous configurez des clés gérées par le client avec une identité managée affectée par l’utilisateur, celle-ci est utilisée pour autoriser l’accès au coffre de clés contenant la clé. Vous devez créer l’identité affectée par l’utilisateur avant de configurer les clés gérées par le client.
Une identité managée affectée par l’utilisateur est créée en tant que ressource Azure autonome. Pour en savoir plus sur les identités managées affectées par l’utilisateur, consultez Types d’identités managées. Pour plus d’informations sur la création et la gestion d’une identité managée affectée par l’utilisateur, consulter Gérer les identités managées affectées par l’utilisateur.
L’identité managée affectée par l’utilisateur doit avoir les autorisations d’accès à la clé stockée dans le coffre de clés. Vous pouvez accorder manuellement des autorisations à l’identité ou attribuer un rôle intégré ayant comme étendue le coffre de clés pour accorder ces autorisations.
L’exemple suivant montre comment vous :
- Créer une nouvelle identité managée affectée par l’utilisateur.
- Attendez la fin de la création de l’identité affectée par l’utilisateur.
- Obtenez le
PrincipalId
à partir de la nouvelle identité. - Attribuez un rôle RBAC à la nouvelle identité, avec pour étendue le coffre de clés.
Utilisez les mêmes variables que vous avez définies précédemment dans cet article.
# Create a new user-assigned managed identity.
$UserIdentity = New-AzUserAssignedIdentity -ResourceGroupName $RgName -Name $ManagedUserName -Location $Location
Conseil
Attendez environ 1 minute pour que la création de l’identité affectée par l’utilisateur se termine avant de continuer.
# 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
Utiliser une identité managée affectée par le système pour autoriser l’accès
Une identité managée affectée par le système est associée à une instance d’un service Azure, tel qu’un groupe de volumes Azure Elastic SAN.
L’identité managée affectée par le système doit avoir les autorisations d’accès à la clé stockée dans le coffre de clés. Cet article utilise le rôle Utilisateur du service de chiffrement de Key Vault attribué à l’identité managée affectée par le système avec pour étendue le coffre de clés pour accorder ces autorisations.
Lorsqu’un groupe de volumes est créé, une identité affectée par le système lui est automatiquement créée si la commande New-AzElasticSanVolumeGroup
est spécifiée dans le paramètre -IdentityType "SystemAssigned"
. L’identité affectée par le système n’est pas disponible tant que le groupe de volumes n’a pas été créé. Vous devez également attribuer un rôle approprié à l’identité, tel que le rôle Utilisateur du service de chiffrement Key Vault, avant de pouvoir accéder à la clé de chiffrement dans le coffre de clés. Vous ne pouvez donc pas configurer de clés gérées par le client pour qu’elles utilisent une identité affectée par le système lors de la création d’un groupe de volumes. Lorsque vous créez un groupe de volumes avec des clés gérées par le client, vous devez utiliser une identité affectée par l’utilisateur. Une fois le groupe de volumes créé, vous pouvez configurer une identité affectée par le système.
Utilisez cet exemple de code pour affecter le rôle RBAC requis à l’identité managée affectée par le système, limité au coffre de clés. Utilisez les mêmes variables que vous avez définies précédemment dans cet article.
# 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
Configurer des clés gérées par le client pour un groupe de volumes
Sélectionnez l’onglet correspondant au module Azure PowerShell ou à Azure CLI pour obtenir des instructions sur la configuration de clés de chiffrement gérées par le client à l’aide de votre outil de gestion préféré.
Vous avez choisi PowerShell. Sélectionnez à présent l’onglet approprié selon que vous souhaitez configurer les paramètres lors de la création d’un groupe de volumes ou mettre à jour les paramètres d’un groupe existant.
Utilisez cet exemple pour configurer des clés gérées par le client avec mise à jour automatique de la version de clé lors de la création d’un groupe de volumes à l’aide de 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
Pour configurer des clés gérées par le client avec mise à jour manuelle de la version de clé lors de la création d’un groupe de volumes à l’aide de PowerShell, ajoutez le paramètre KeyVersion
comme illustré dans cet exemple :
# 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