PowerShell et Azure CLI : Activer Transparent Data Encryption avec une clé gérée par le client provenant d’Azure Key Vault
S’applique à : Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Cet article explique comment utiliser une clé Azure Key Vault pour Transparent Data Encryption (TDE) sur Azure SQL Database ou Azure Synapse Analytics. Pour en savoir plus sur TDE avec intégration Azure Key Vault - Prise en charge de BYOK (Bring Your Own Key), consultez TDE avec clés managées dans Azure Key Vault. Si vous recherchez des instructions du portail Azure sur l’activation du TDE avec une clé gérée par le client à partir d’Azure Key Vault, consultez Créer un serveur configuré avec l’identité managée affectée par l’utilisateur et le TDE géré par le client.
Cet article s’applique à Azure SQL Database, Azure SQL Managed Instance et Azure Synapse Analytics (pools SQL dédiés (anciennement SQL DW)). Pour la documentation sur le chiffrement transparent des données pour les pools SQL dédiés à l’intérieur d’espaces de travail Synapse, consultez Chiffrement Azure Synapse Analytics.
Remarque
Azure SQL prend désormais en charge l’utilisation d’une clé RSA stockée dans un HSM géré en tant que protecteur TDE. Azure Key Vault HSM géré est un service cloud entièrement géré, à haut niveau de disponibilité et à un seul locataire, qui vous permet de protéger les clés de chiffrement de vos applications cloud à l’aide de modules de sécurité matériels certifiés FIPS 140-2 de niveau 3. En savoir plus sur les HSM managés.
Remarque
Microsoft Entra ID était précédemment connu sous le nom d’Azure Active Directory (Azure AD).
Prérequis pour PowerShell
- Vous devez avoir un abonnement Azure et être un administrateur de cet abonnement.
- [Recommandé mais facultatif] Avoir un module de sécurité matériel (HSM) ou un magasin de clés local pour créer une copie locale de l’élément de clé du protecteur TDE.
- Azure PowerShell doit être installé et en cours d’exécution.
- Créez un coffre Azure Key Vault et une clé pour utiliser TDE.
- Instructions pour utiliser un module de sécurité matériel (HSM) et Key Vault
- Le coffre de clés doit avoir la propriété suivante à utiliser pour TDE :
- soft-delete et protection contre le vidage
- Instructions pour utiliser un module de sécurité matériel (HSM) et Key Vault
- La clé doit avoir les attributs suivants à utiliser pour TDE :
- La date d’activation (si définie) doit être antérieure à la date et à l’heure actuelles
- La date d’expiration (si définie) doit correspondre à une date et une heure ultérieures
- La clé doit être dans l’état Activé
- En mesure d’effectuer des opérations get, wrap key, unwrap key
- Pour utiliser une clé de HSM managé, suivez les instructions pour créer et activer un HSM managé à l’aide d’Azure CLI
Pour des instructions d’installation du module Az, consultez Installer Azure PowerShell. Pour des applets de commande spécifiques, consultez AzureRM.Sql.
Pour obtenir des informations spécifiques sur Key Vault, consultez Instructions pour utiliser PowerShell à partir de Key Vault et Guide pratique pour utiliser la suppression réversible Key Vault avec l’interface PowerShell.
Important
Le module PowerShell Azure Resource Manager (RM) est toujours pris en charge, mais tous les développements à venir sont destinés au module Az.Sql. Le module AzureRM continue à recevoir des résolutions de bogues jusqu’à au moins décembre 2020. Les arguments des commandes dans le module Az sont sensiblement identiques à ceux des modules AzureRm. Pour en savoir plus sur leur compatibilité, consultez Présentation du nouveau module Az Azure PowerShell.
Attribuer une identité Microsoft Entra à votre serveur
Si vous utilisez un serveur existant, ajoutez une identité Microsoft Entra à ce serveur de la manière suivante :
$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity
Si vous créez un serveur, utilisez la cmdlet New-AzSqlServer avec la balise-Identity pour ajouter une identité Microsoft Entra lors de la création du serveur :
$server = New-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -Location <RegionName> `
-ServerName <LogicalServerName> -ServerVersion "12.0" -SqlAdministratorCredentials <PSCredential> -AssignIdentity
Accorder des autorisations Key Vault à votre serveur
Utilisez la cmdlet Set-AzKeyVaultAccessPolicy pour accorder à votre serveur l’accès au coffre de clés avant d’utiliser une clé à partir de celui-ci pour TDE.
Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
-ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey
Pour ajouter des autorisations à votre serveur sur un HSM managé, ajoutez le rôle RBAC local « Utilisateur de chiffrement du service du HSM managé » au serveur. Cela permet au serveur d’effectuer des opérations get, wrap key et unwrap key sur les clés du HSM managé. Instructions pour la configuration de l’accès serveur sur un HSM managé
Ajouter la clé Key Vault au serveur et définir le protecteur TDE
- Utilisez le cmdlet Get-AzKeyVaultKey pour récupérer l’ID de la clé à partir du coffre de clé
- Utilisez la cmdlet Add-AzSqlServerKeyVaultKey pour ajouter la clé de Key Vault au serveur.
- Utilisez la cmdlet Set-AzSqlServerTransparentDataEncryptionProtector pour définir la clé en tant que protecteur TDE pour toutes les ressources de serveur.
- Utilisez la cmdlet Get-AzSqlServerTransparentDataEncryptionProtector pour confirmer que le protecteur TDE a été configuré comme prévu.
Notes
Pour les clés de HSM managé, utilisez la version Az.Sql 2.11.1 de PowerShell.
Notes
La longueur combinée du nom du coffre de clés et du nom de la clé ne peut pas dépasser 94 caractères.
Conseil
Voici un exemple de KeyId de Key Vault : https://contosokeyvault.vault.azure.net/keys/Key1/1a1a2b2b3c3c4d4d5e5e6f6f7g7g8h8h
Exemple de KeyId de HSM managé :
https://contosoMHSM.managedhsm.azure.net/keys/myrsakey
# add the key from Key Vault to the server
Add-AzSqlServerKeyVaultKey -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -KeyId <KeyVaultKeyId>
# set the key as the TDE protector for all resources under the server
Set-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> `
-Type AzureKeyVault -KeyId <KeyVaultKeyId>
# confirm the TDE protector was configured as intended
Get-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName>
Activer TDE
Utilisez la cmdlet Set-AzSqlDatabaseTransparentDataEncryption pour activer TDE.
Set-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
-ServerName <LogicalServerName> -DatabaseName <DatabaseName> -State "Enabled"
TDE est maintenant activé pour l’entrepôt de données ou la base de données, avec une clé de chiffrement dans Key Vault.
Vérifier l’état de chiffrement et l’activité de chiffrement
Utilisez la commande Get-AzSqlDatabaseTransparentDataEncryption pour obtenir l’état de chiffrement d’une base de données ou d’un entrepôt de données.
# get the encryption state of the database
Get-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
-ServerName <LogicalServerName> -DatabaseName <DatabaseName> `
Applets de commande PowerShell utiles
Utilisez la cmdlet Set-AzSqlDatabaseTransparentDataEncryption pour désactiver TDE.
Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> ` -DatabaseName <DatabaseName> -State "Disabled"
Utilisez la cmdlet Get-AzSqlServerKeyVaultKey pour renvoyer la liste de clés Key Vault ajoutées au serveur.
# KeyId is an optional parameter, to return a specific key version Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
Utilisez la cmdlet Remove-AzSqlServerKeyVaultKey pour supprimer une clé Key Vault du serveur.
# the key set as the TDE Protector cannot be removed Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
Dépannage
Vérifiez les points suivants en cas de problème :
Si le coffre de clés est introuvable, vérifiez que vous êtes dans le bon abonnement.
Get-AzSubscription -SubscriptionId <SubscriptionId>
- Si la nouvelle clé ne peut pas être ajoutée au serveur ou si elle ne peut pas être mise à jour en tant que protecteur TDE, vérifiez les points suivants :
- La clé ne doit pas avoir de date d’expiration
- La clé doit avoir les opérations get, wrap key et unwrap key activées.
Étapes suivantes
- Découvrez comment faire pivoter le protecteur TDE d’un serveur pour se conformer à des exigences de sécurité : Faites pivoter le protecteur Transparent Data Encryption à l’aide de PowerShell.
- En cas de risque pour la sécurité, découvrez comment supprimer un protecteur TDE potentiellement compromis : Supprimez une clé potentiellement compromise.