Existe-t-il un moyen rapide de trouver toutes les colonnes dans SQL Server 2008 R2 qui sont cryptées / ont des données cryptées?
J'ai besoin d'annuler les données dans toutes les colonnes chiffrées d'un serveur de développement (conformément à nos règles métier). Je connais la plupart des colonnes parce que nous les utilisons régulièrement, mais je veux être rigoureux et aussi je veux pouvoir prouver que je les ai toutes trouvées.
J'ai cherché sur le Web, regardé dans INFORMATION_SCHEMA et vérifié les DMV que je pensais être utiles ainsi que sys.columns et sys.objects - mais jusqu'à présent, pas de chance.
Réponses:
En supposant que vous parlez de données chiffrées avec des clés SQL Server, il existe un moyen de trouver ces colonnes.
La
Key_name()
fonction renverra le nom de la clé utilisée pour le chiffrement pour cette valeur particulière et renverra NULL s'il n'y a rien chiffré avec une clé "connue" (tierce partie ou simple non chiffrée).Avec ce knowlegde, nous pouvons tester chaque colonne pour voir si elle contient au moins une ligne qui a une valeur varbinaire qui renvoie un nom de clé
fonctionnalité de nom_clé ()
résultats:
résultats:
Comment l'implémenter pour trouver des colonnes chiffrées
résultats:
la source
Le problème avec le chiffrement au niveau des cellules est que la colonne elle-même n'est pas vraiment chiffrée, ce sont les données contenues dans cette colonne. Les colonnes elles-mêmes ne sont que des colonnes varbinaires (car c'est ce qui est requis) et peuvent contenir des données complètement lisibles. C'est l'utilisation des fonctions
ENCRYPTBY*
etDECRYPTBY*
qui rend vraiment les données cryptées.Vous pouvez commencer par simplement interroger la vue sys.columns pour toutes les colonnes qui sont varbinary:
Sinon, vous devrez revoir votre code pour identifier où les fonctions de chiffrement / déchiffrement sont utilisées:
la source
Exécutez la requête ci-dessous sur une base de données spécifique
Légèrement modifié de
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/ca9d8360-5d7e-4de1-abe6-ce1afda595a9/how-to-find-which-table-columns-are-encrypted?forum=sqlsecurity
la source
Vous pouvez trouver les colonnes chiffrées avec des clés \ certificats en recherchant toutes les colonnes varbinaires et en recherchant une clé de chiffrement avec la fonction KEY_NAME.
Cependant, ce processus est quelque peu coûteux et prend du temps. Si vous avez besoin de trouver ces colonnes régulièrement, je vous suggère de "baliser" les colonnes avec des propriétés étendues. Nous pouvons nous appuyer sur la solution d'Edward Dortland et "étiqueter" les colonnes trouvées avec des propriétés étendues telles que cryptées, cryptées et cryptées.
Ensuite, nous pouvons facilement trouver les colonnes chiffrées en recherchant les propriétés étendues.
la source