Partager via


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 aux pools SQL dédiés Azure SQL Database, Azure SQL Managed Instance et Azure Synapse Analytics. 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.

Note

Azure SQL prend également en charge l’utilisation d’une clé RSA stockée dans un HSM managé en tant que protecteur TDE. Azure Managed HSM est un service cloud entièrement managé, hautement disponible, à locataire unique et conforme aux normes qui vous permet de protéger les clés de chiffrement pour vos applications cloud, à l’aide de HSM validés FIPS 140-2 de niveau 3. En savoir plus sur les HSM managés.

Note

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 être postérieure à la date et à l’heure actuelles
    • 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 PowerShell, consultez Installer Azure PowerShell.

Pour plus d’informations sur Azure Key Vault, consultez les instructions PowerShell d’Azure Key Vault et comment utiliser la suppression réversible Azure Key Vault avec PowerShell.

Attribuer une identité Microsoft Entra à votre serveur

Si vous avez un serveur existant, procédez comme suit pour ajouter une identité Microsoft Entra à votre serveur :

$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity

Si vous créez un serveur, utilisez l'applet de commande 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 Azure 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 ainsi au serveur d’effectuer des opérations get, wrap key et unwrap key sur les clés du HSM managé. Pour plus d’informations, voir Gestion de rôle HSM managé.

Ajoutez la clé Azure Key Vault au serveur et définissez le protecteur TDE

Note

Pour les clés HSM managées, utilisez la version Az.Sql 2.11.1 de PowerShell ou ultérieure.

Note

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

Exemple KeyId d’Azure Key Vault : https://contosokeyvault.vault.azure.net/keys/Key1/<key-id>

Exemple de KeyId de HSM managé :
https://contosoMHSM.managedhsm.azure.net/keys/myrsakey

# add the key from Azure 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"

À présent, la base de données ou l’entrepôt de données a TDE activé avec une clé de chiffrement dans Azure 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 l’applet de commande Get-AzSqlServerKeyVaultKey pour renvoyer la liste des clés Azure Key Vault ajoutées au serveur.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Utilisez Remove-AzSqlServerKeyVaultKey pour supprimer une clé Azure Key Vault du serveur.

    # the key set as the TDE Protector cannot be removed
    Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    

Résolution des problèmes

  • 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.