Gibt es eine schnelle Möglichkeit, alle Spalten in SQL Server 2008 R2 zu finden, die verschlüsselt sind / Daten verschlüsselt haben?
Ich muss die Daten in allen verschlüsselten Spalten eines Entwicklungsservers ungültig machen (gemäß unseren Geschäftsregeln). Ich kenne die meisten Spalten, weil wir sie regelmäßig verwenden, aber ich möchte gründlich sein und auch beweisen können, dass ich sie alle gefunden habe.
Ich habe im Web gesucht, in INFORMATION_SCHEMA gesucht und die DMVs überprüft, die ich für nützlich hielt, sowie sys.columns und sys.objects - aber bisher kein Glück.
Antworten:
Angenommen, Sie sprechen von Daten, die mit SQL Server-Schlüsseln verschlüsselt sind, gibt es eine Möglichkeit, diese Spalten zu finden.
Die
Key_name()
Funktion gibt den Namen des Schlüssels zurück, der für die Verschlüsselung für diesen bestimmten Wert verwendet wird, und gibt NULL zurück, wenn nichts mit einem "bekannten" Schlüssel verschlüsselt ist (von Drittanbietern oder einfach nicht verschlüsselt).Mit diesem Wissen können wir jede Spalte testen, um festzustellen, ob sie mindestens eine Zeile enthält, die einen varbinären Wert hat, der einen Schlüsselnamen zurückgibt
Funktionalität von Schlüsselname ()
Ergebnisse:
Ergebnisse:
So implementieren Sie es, um verschlüsselte Spalten zu finden
Ergebnisse:
quelle
Das Problem bei der Verschlüsselung auf Zellebene besteht darin, dass die Spalte selbst nicht wirklich verschlüsselt ist, sondern die in dieser Spalte enthaltenen Daten. Die Spalten selbst sind nur varbinäre Spalten (da dies erforderlich ist) und können vollständig lesbare Daten enthalten. Es ist die Verwendung der
ENCRYPTBY*
undDECRYPTBY*
-Funktionen, die die Daten wirklich verschlüsseln.Sie können beginnen, indem Sie einfach die Ansicht sys.columns für alle varbinären Spalten abfragen:
Andernfalls müssen Sie Ihren Code überprüfen, um festzustellen, wo die Verschlüsselungs- / Entschlüsselungsfunktionen verwendet werden:
quelle
Führen Sie die folgende Abfrage für eine bestimmte Datenbank aus
Leicht verändert von
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/ca9d8360-5d7e-4de1-abe6-ce1afda595a9/how-to-find-which-table-columns-are-encrypted?forum=sqlsecurity
quelle
Sie können die Spalten finden, die mit Schlüsseln \ Zertifikaten verschlüsselt sind, indem Sie nach allen varbinären Spalten suchen und mit der Funktion KEY_NAME nach einem Verschlüsselungsschlüssel suchen.
Dieser Vorgang ist jedoch etwas teuer und zeitaufwändig. Wenn Sie diese Spalten regelmäßig suchen müssen, empfehle ich, die Spalten mit erweiterten Eigenschaften zu "markieren". Wir können auf der Lösung von Edward Dortland aufbauen und die gefundenen Spalten mit erweiterten Eigenschaften wie verschlüsselt, verschlüsselt und verschlüsselt "markieren".
Dann können wir die verschlüsselten Spalten leicht finden, indem wir die erweiterten Eigenschaften durchsuchen.
quelle