Czy istnieje szybki sposób na znalezienie wszystkich kolumn w SQL Server 2008 R2, które są zaszyfrowane / mają zaszyfrowane dane?
Muszę zerować dane we wszystkich zaszyfrowanych kolumnach na serwerze programistycznym (zgodnie z naszymi regułami biznesowymi). Znam większość kolumn, ponieważ używamy ich regularnie, ale chcę być dokładny, a także chcę być w stanie udowodnić, że wszystkie je znalazłem.
Przeszukałem Internet, zajrzałem do INFORMACJE_SCHEMA i sprawdziłem DMV, które moim zdaniem będą przydatne, a także sys.columns i sys.objects - ale jak dotąd bez powodzenia.
Odpowiedzi:
Zakładając, że mówisz o danych zaszyfrowanych kluczami SQL Server, istnieje sposób na znalezienie tych kolumn.
Key_name()
Funkcja zwróci nazwę klucza użytego do szyfrowania dla tej konkretnej wartości i zwróci NULL jeśli nie ma nic szyfrowane za pomocą klucza „znany” (3rd party lub zwykłego nie zaszyfrowanej).Dzięki tej wiedzy możemy przetestować każdą kolumnę, aby zobaczyć, czy zawiera ona co najmniej jeden wiersz, który ma wartość varbinary, która zwraca nazwę klucza
funkcjonalność key_name ()
wyniki:
wyniki:
Jak to zaimplementować, aby znaleźć zaszyfrowane kolumny
wyniki:
źródło
Problem z szyfrowaniem na poziomie komórki polega na tym, że sama kolumna nie jest tak naprawdę zaszyfrowana, to dane zawarte w tej kolumnie. Same kolumny są tylko kolumnami varbinary (ponieważ to jest wymagane) i mogą zawierać całkowicie czytelne dane. To użycie
ENCRYPTBY*
iDECRYPTBY*
funkcji, które naprawdę szyfrują dane.Możesz zacząć od wysłania zapytania do widoku sys.columns dla wszystkich kolumn, które są varbinary:
W przeciwnym razie musisz przejrzeć kod, aby określić, gdzie używane są funkcje szyfrowania / deszyfrowania:
źródło
Uruchom poniższe zapytanie na konkretnej bazie danych
Nieznacznie zmieniony z
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/ca9d8360-5d7e-4de1-abe6-ce1afda595a9/how-to-find-which-table-columns-are-encrypted?forum=sqlsecurity
źródło
Kolumny zaszyfrowane kluczami \ certyfikatami można znaleźć, wyszukując wszystkie kolumny varbinary i sprawdzając klucz szyfrowania za pomocą funkcji KEY_NAME.
Ten proces jest jednak nieco drogi i czasochłonny. Jeśli chcesz regularnie znajdować te kolumny, sugeruję „otagowanie” kolumn o rozszerzonych właściwościach. Możemy budować na rozwiązaniu Edwarda Dortlanda i „tagować” znalezione kolumny o rozszerzonych właściwościach, takich jak szyfrowane, szyfrowane i szyfrowane.
Następnie możemy łatwo znaleźć zaszyfrowane kolumny, przeszukując rozszerzone właściwości.
źródło