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 Synapse Analytics pools SQL dédiés (anciennement SQL DW)

Tip

Microsoft Fabric Data Warehouse est un entrepôt relationnel à l’échelle de l’entreprise sur une base de lac de données, avec une architecture future, une IA intégrée et de nouvelles fonctionnalités. Si vous débutez avec l'entreposage de données, commencez par Fabric Data Warehouse. Les charges de travail de pool SQL existantes dédicées peuvent être mises à niveau vers Fabric pour accéder à de nouvelles fonctionnalités dans la science des données, l’analytique en temps réel et la création de rapports.

Cet article explique comment utiliser une clé d’Azure Key Vault pour un chiffrement transparent des données (TDE) sur 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.

Note

Cet article traite des pools SQL dédiés autonomes (anciennement SQL DW).

  • Pour les pools SQL dédiés Azure Synapse Analytics (anciennement SQL DW), mettez le protecteur TDE au niveau du serveur. Toutes les bases de données chiffrées associées à ce serveur héritent du protecteur TDE.
  • Chiffrez les données dans des pools SQL dédiés et des pools SQL serverless dans un espace de travail Synapse en utilisant la clé gérée par le client configurée au niveau de l’espace de travail. Pour plus d’informations sur le chiffrement transparent des données pour les pools SQL dédiés dans les espaces de travail Synapse, consultez chiffrement Azure Synapse Analytics.

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é Azure Key Vault HSM managée, suivez les instructions pour créer et activer un HSM managé à l’aide de 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 déjà un serveur, utilisez les instructions suivantes pour ajouter une identité Microsoft Entra à votre serveur :

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

Si vous créez un serveur, utilisez le cmdlet New-AzSqlServer avec le -Identity tag 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 Managed HSM, ajoutez le rôle RBAC local Managed HSM Crypto Service Encryption User au serveur. Ce rôle permet au serveur d’effectuer les opérations get, wrap key et unwrap key sur les clés dans le HSM géré. 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.

Tip

Utilisation de clés versionnées Azure Key Vault pour TDE

Lorsque vous définissez le protecteur TDE, faites référence à une clé Azure Key Vault en utilisant une version spécifique de la clé.

Example:

  • Identificateur de clé qui inclut une version spécifique

    https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>

# 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>
    

Troubleshooting


  • Si vous ne pouvez pas ajouter la nouvelle clé au serveur, ou si vous ne pouvez pas mettre à jour la nouvelle clé en tant que protecteur TDE, vérifiez les conditions suivantes :

    • La clé ne devrait pas avoir de date d’expiration.
    • La clé doit avoir les opérations get, wrap key et unwrap key activées.