Существует ли быстрый способ найти все столбцы в SQL Server 2008 R2, которые зашифрованы / имеют зашифрованные данные?
Мне нужно аннулировать данные во всех зашифрованных столбцах на сервере разработки (в соответствии с нашими бизнес-правилами). Я знаю большинство столбцов, потому что мы регулярно их используем, но я хочу быть внимательным, а также хочу доказать, что нашел их все.
Я искал в Интернете, посмотрел в INFORMATION_SCHEMA и проверил DMV, которые я считаю полезными, а также sys.columns и sys.objects - но пока не повезло.
Ответы:
Предполагая, что вы говорите о данных, зашифрованных ключами SQL Server, есть способ найти эти столбцы.
Key_name()
Функция возвращает имя ключа , используемый для шифрования для этого конкретного значения и вернет NULL , если нет ничего шифруется с «известным» ключом (3 участником, или просто не зашифрованный).С помощью этой базы знаний мы можем проверить каждый столбец, чтобы увидеть, содержит ли он хотя бы одну строку, которая имеет значение varbinary, которое возвращает имя ключа
функциональность key_name ()
Результаты:
Результаты:
Как реализовать это, чтобы найти зашифрованные столбцы
Результаты:
источник
Проблема с шифрованием на уровне ячеек заключается в том, что сам столбец на самом деле не зашифрован, это данные, содержащиеся в этом столбце. Сами столбцы являются просто столбцами varbinary (потому что это то, что требуется) и могут содержать полностью разборчивые данные. Это использование
ENCRYPTBY*
иDECRYPTBY*
функций, которые действительно делают данные зашифрованными.Вы можете начать, просто запросив представление sys.columns для всех столбцов, которые являются varbinary:
В противном случае вам нужно будет просмотреть свой код, чтобы определить, где используются функции шифрования / дешифрования:
источник
Запустите приведенный ниже запрос для конкретной БД
Слегка изменены от
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/ca9d8360-5d7e-4de1-abe6-ce1afda595a9/how-to-find-which-table-columns-are-encrypted?forum=sqlsecurity
источник
Вы можете найти столбцы, которые зашифрованы ключами \ сертификатами, выполнив поиск по всем столбцам varbinary и проверив ключ шифрования с помощью функции KEY_NAME.
Однако этот процесс несколько дорог и требует много времени. Если вам нужно регулярно находить эти столбцы, я предлагаю «пометить» столбцы расширенными свойствами. Мы можем опираться на решение Эдварда Дортланда и «помечать» столбцы с расширенными свойствами, такими как encrypted, encryptkey и encryptcert.
Затем мы можем легко найти зашифрованные столбцы, выполнив поиск по расширенным свойствам.
источник