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 DatabaseAzure SQL Managed InstanceAzure 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.
  • 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

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