¿Hay una manera rápida de encontrar todas las columnas en SQL Server 2008 R2 que están cifradas / tienen datos cifrados?
Necesito anular los datos en todas las columnas encriptadas en un servidor de desarrollo (de acuerdo con nuestras reglas comerciales). Conozco la mayoría de las columnas porque las usamos regularmente, pero quiero ser minucioso y también quiero poder demostrar que las he encontrado todas.
Busqué en la web, busqué en INFORMATION_SCHEMA y verifiqué los DMV que pensé que serían útiles y también sys.columns y sys.objects , pero hasta ahora no tuve suerte.
Respuestas:
Suponiendo que está hablando de datos cifrados con claves de SQL Server, hay forma de encontrar estas columnas.
La
Key_name()
función devolverá el nombre de la clave utilizada para el cifrado de ese valor en particular y devolverá NULL si no hay nada cifrado con una clave "conocida" (de terceros, o simplemente no cifrado).Con ese conocimiento, podemos probar cada columna para ver si contiene al menos una fila que tiene un valor varbinary que devuelve un nombre clave
funcionalidad de key_name ()
resultados:
resultados:
Cómo implementarlo para encontrar columnas cifradas
resultados:
fuente
El problema con el cifrado a nivel de celda es que la columna en sí no está realmente cifrada, son los datos contenidos en esa columna. Las columnas en sí mismas son solo columnas varbinarias (porque eso es lo que se requiere) y podrían contener datos completamente legibles. Es el uso de las funciones
ENCRYPTBY*
y loDECRYPTBY*
que realmente hace que los datos se cifren.Puede comenzar simplemente consultando la vista sys.columns para todas las columnas que son varbinary:
De lo contrario, deberá revisar su código para identificar dónde se utilizan las funciones de cifrado / descifrado:
fuente
Ejecute la consulta a continuación en una base de datos específica
Ligeramente alterado 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
fuente
Puede encontrar las columnas que están encriptadas con claves \ certificados buscando todas las columnas varbinary y buscando una clave de encriptación con la función KEY_NAME.
Sin embargo, este proceso es algo costoso y requiere mucho tiempo. Si necesita encontrar estas columnas de forma regular, sugiero "etiquetar" las columnas con propiedades extendidas. Podemos construir sobre la solución de Edward Dortland y "etiquetar" las columnas encontradas con propiedades extendidas como encriptado, encriptado y encriptado.
Entonces podemos encontrar fácilmente las columnas encriptadas buscando las propiedades extendidas.
fuente