sql-server - crear plan de mantenimiento sql server 2017
¿Cómo puedo destruir de forma segura algunos datos usando el servidor sql 2008?(usando la limpieza segura de DoD o un equivalente) (7)
Uno de mis clientes quiere que realice una destrucción periódica "real" de algunos de sus datos antiguos, y estoy evaluando la mejor manera de hacerlo.
Los datos están en una tabla, y quiero destruir algunas de las filas que contiene.
Podría hacerlo manualmente borrando / exportando la base de datos en otra computadora / desmagnetizando el disco duro / reimportando los datos guardados, pero necesito una solución automática.
¿Hay un equivalente al comando delete (como en delete * from foo) que realizaría una destrucción segura de los datos (usando el borrado seguro de DoD, o algo así?)
¿Ves otras formas de realizar esta eliminación automática?
Por cierto, sé que las probabilidades de que alguien recupere algunos de los datos que destruí utilizando el comando sql delete son muy pequeños, pero algunos de mis clientes lo requieren. ¡Por favor, no conviertan esta pregunta en un debate global sobre el tema de los procedimientos de eliminación de datos!
Editar : el problema que quiero abordar no es "¿Cómo debo destruir los datos para que no se pueda recuperar?", Sino "¿Cómo puedo convencer a mis clientes de que sus datos no se pueden recuperar?".
Básicamente, no. La operación estándar no lo hará, y si lo hiciera, los datos podrían reconstruirse a partir de los registros de transacciones, etc. Probablemente lo más cercano que se pueda hacer es hacerlo externamente, copiar y purgar la base de datos a otro dispositivo, y luego hacer un alto eliminación de eliminación de calidad en el dispositivo anterior, pero como agente de seguridad no estoy seguro de que incluso quisiera decir que fue una delette segura.
La eliminación segura es un problema difícil. Puede ser mejor con un enfoque criptográfico, como el "efemerizador" de Radia Perlman.
En realidad, las posibilidades de recuperar los datos destruidos con DELETE
son bastante grandes, cerca del 100%
:)
Los datos que elimina se guardan en el registro de transacciones, es una parte de cómo funcionan las transacciones. En otro caso, usted no podría ROLLBACK
una transacción, o un COMMIT
tomaría una eternidad (como en las versiones anteriores de PostgreSQL
).
Lo mejor que puede hacer sin meterse con los archivos de datos es:
- Eliminar tus datos
- Realice varias
UPDATE
en la tabla para destruir datos antiguos. - Realice varias transacciones grandes y comprométalas para que se trunque el registro de trasacción. ¿Cuántos exactamente depende de su tamaño de registro?
-
CleanSweep
espacio en disco ocupado por registros de transacciones antiguas.
- Realice varias
No estoy seguro de si esto cumple con los requisitos del Departamento de Defensa, pero como mínimo examinaré lo siguiente.
- Eliminar los registros de la manera estándar
- Tome una nueva copia de seguridad de la base de datos (para uso futuro)
- Elimine todas las copias de seguridad existentes (ya que tienen los datos), utilizando un proceso estándar de eliminación de archivos que cumpla con los estándares
- Reducir la base de datos para liberar el espacio no utilizado de los registros eliminados.
Creo que esto te acercará bastante, aunque la clave es la gestión de la operación de reducción, que no estoy 100% seguro de cómo eso borra / maneja los datos. En segundo lugar, eliminar los viejos respaldos sería el "mayor riesgo" si miras puntos de riesgo en mi opinión.
Use alguna forma de cifrado para almacenar los campos de datos en la tabla.
Cuando decida "eliminar", vuelva a cifrar los datos que continuará utilizando con una nueva clave. Deseche la clave anterior y elimine las filas cifradas con la clave anterior. Encogimiento.
Incluso si alguien recupera las filas, sin la clave anterior, nadie podrá restaurar los datos. Solo asegúrate de que la clave anterior esté realmente descartada: puedes tenerla en un solo dispositivo USB y destruir el dispositivo, etc.
Eliminar los datos. Haga una copia de seguridad simple y restaure en un nuevo disco duro y grabe el disco viejo.
Destruir objetos es la única forma de convencer realmente a la gente de que las "cosas" realmente se han ido.
Bueno, solo estoy jugando aquí, pero prueben esto, será razonablemente seguro.
No use una copia de seguridad típica.
Escriba el esquema, si aún no lo ha hecho.
Script de todos los datos para que todo el actual se puede insertar con un script con muchas instrucciones INSERT. Los datos eliminados no aparecerán en este archivo, obviamente. Por supuesto, querrá usar Bulk Insert y todo eso para volver a obtener los datos allí.
Ahora use sdelete para eliminar todos los archivos de datos y registros asociados con la base de datos. Ahora, restaure desde el script de inserción. :)
Por cierto, tu pregunta y la edición que hiciste, diciendo que no quieres una solución, sino una razón para no contradecir toda tu pregunta. De todos modos, una buena razón para no hacerlo es que nadie lo está haciendo. Si desea hacer algo en informática (aparte de crear un nuevo tipo de aplicación o algo así) que nadie más esté haciendo, probablemente sea una mala idea. No hay documentos académicos o del Departamento de Defensa que sepa que describan un método para hacer esto.
El problema más grande es qué información se "filtrará" de los registros que eliminó a los registros que no fueron eliminados. Tenga en cuenta, aquí me refiero a "fuga" en el sentido de flujo de información.
Aunque, para ser honesto, el método que describí anteriormente esencialmente lograría su objetivo.
De libros en línea :
Eliminar operaciones de una tabla o actualizar operaciones que hacen que una fila se mueva puede liberar espacio de forma inmediata en una página eliminando referencias a la fila. Sin embargo, en determinadas circunstancias, la fila puede permanecer físicamente en la página de datos como un registro fantasma. Los registros de fantasmas se eliminan periódicamente mediante un proceso en segundo plano. El Motor de base de datos no devuelve estos datos residuales en respuesta a las consultas. Sin embargo, en entornos en los que la seguridad física de los datos o los archivos de copia de seguridad está en riesgo, puede usar
sp_clean_db_free_space
para limpiar estos registros fantasmas.
Esto debería poner a cero tus páginas de datos "gratuitas". También se puede usar si se utilizó Inicialización instantánea, pero en su lugar, decidió que desea poner las páginas en cero.
Para responder a su pregunta actualizada, "¿Cómo puedo convencer a mis clientes de que sus datos no se pueden recuperar?", Esa entrada BOL lo dice claramente, "Los registros fantasma se eliminan periódicamente por un proceso en segundo plano".