Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Pour charger des données chiffrées sans effectuer de vérifications de métadonnées sur le serveur pendant les opérations de copie en bloc, créez l’utilisateur avec l’option ALLOW_ENCRYPTED_VALUE_MODIFICATIONS . Cette option est destinée à être utilisée par les outils hérités ou les flux de travail Extract-Transform-Load tiers (ETL) qui ne peuvent pas utiliser Always Encrypted. Cela permet à un utilisateur de déplacer des données en toute sécurité d’un ensemble de tables contenant des colonnes chiffrées vers un autre ensemble de tables avec des colonnes chiffrées (dans la même base de données ou dans une autre).
Option ALLOW_ENCRYPTED_VALUE_MODIFICATIONS
CREATE USER et ALTER USER ont une ALLOW_ENCRYPTED_VALUE_MODIFICATIONS option. Lorsqu’elle est définie sur ON (la valeur par défaut est OFF), cette option supprime les vérifications des métadonnées de chiffrement sur le serveur dans les opérations de copie en bloc, ce qui permet à l’utilisateur de copier en bloc des données chiffrées entre des tables ou des bases de données, sans déchiffrer les données.
Scénarios de migration des données
Le tableau suivant présente les paramètres appropriés recommandés pour plusieurs scénarios de migration.
Charger en bloc des données chiffrées
Procédez comme suit pour charger des données chiffrées.
Définissez l’option de l’utilisateur cible de l’opération de copie en bloc dans la base de données sur
ON. Par exemple :ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON;Exécutez votre application de copie en bloc ou l’outil de connexion avec l’identité de cet utilisateur. (Si votre application utilise un pilote client activé Always Encrypted, assurez-vous que la chaîne de connexion de la source de données ne contient
column encryption setting=enabledpas pour garantir que les données récupérées à partir de colonnes chiffrées restent chiffrées. Pour plus d’informations, consultez Développer des applications à l’aide d’Always Encrypted.)Définissez l’option
ALLOW_ENCRYPTED_VALUE_MODIFICATIONSsurOFF. Par exemple :ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = OFF;
Risque d’altération des données
Une utilisation incorrecte de cette option peut entraîner une altération des données. L’option ALLOW_ENCRYPTED_VALUE_MODIFICATIONS permet à l’utilisateur d’insérer des données dans des colonnes chiffrées dans la base de données, y compris les données chiffrées avec différentes clés, chiffrées incorrectement ou non chiffrées du tout. Si l’utilisateur copie accidentellement les données qui ne sont pas correctement chiffrées à l’aide du schéma de chiffrement (clé de chiffrement de colonne, algorithme, type de chiffrement) configurée pour la colonne cible, vous ne pouvez pas déchiffrer les données (les données sont endommagées). Cette option doit être utilisée avec précaution, car il risque d’endommager les données dans la base de données.
Le scénario suivant indique comment une importation de données incorrecte peut entraîner un endommagement des données :
L’option est définie
ONpour un utilisateur.L’utilisateur exécute l’application qui se connecte à la base de données. L’application utilise des API en bloc pour insérer des valeurs en texte brut dans des colonnes chiffrées. L’application attend un pilote client compatible avec Always Encrypted pour chiffrer les données lors de l’insertion. Toutefois, l’application est mal configurée, de sorte qu’elle finit par utiliser un pilote qui ne prend pas en charge Always Encrypted ou que la chaîne de connexion ne contient
column encryption setting=enabledpas .L’application envoie des valeurs en texte en clair au serveur. Les contrôles des métadonnées de chiffrement étant désactivés dans le serveur pour l’utilisateur, le serveur permet l’insertion de données incorrectes (texte brut au lieu de texte correctement chiffré) dans une colonne chiffrée.
La même ou une autre application se connecte à la base de données à l’aide d’un pilote activé par Always Encrypted et avec
column encryption setting=enabledla chaîne de connexion, et récupère les données. L’application s’attend à ce que les données soient déchiffrées en toute transparence. Toutefois, le pilote n’est pas en mesure de déchiffrer les données, car il s’agit de textes chiffrés incorrects.
Bonnes pratiques
Utilisez les comptes d’utilisateur désignés pour les charges de travail de longue durée utilisant cette option.
Pour les applications ou outils de copie en bloc de courte durée qui doivent déplacer des données chiffrées sans les déchiffrer, définissez l'option sur ON immédiatement avant d'exécuter l'application et revenez à off immédiatement après l'exécution de la tâche.
N’utilisez pas cette option pour développer de nouvelles applications. Au lieu de cela, utilisez un pilote client qui offre une API pour supprimer les vérifications de métadonnées de chiffrement pour une seule session, comme l’option AllowEncryptedValueModifications dans le fournisseur de données .NET Framework pour SQL Server - consultez Copie de données chiffrées à l’aide de SqlBulkCopy.
Contenu connexe
- Always Encrypted
- Migrer des données à partir ou à destination de colonnes à l’aide d’Always Encrypted avec l’Assistant Importation et exportation SQL Server
- CRÉER UN UTILISATEUR (Transact-SQL)
- ALTER USER (Transact-SQL)
- Interroger des colonnes en utilisant Always Encrypted avec SQL Server Management Studio
- Développer des applications avec Always Encrypted