Hiển thị các bài đăng có nhãn encriptar. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn encriptar. Hiển thị tất cả bài đăng

Para encriptar los procedimientos almacenados de manera segura


Introducción

En un artículo previo, les hablé de lo fácil que es desencriptar un procedimiento almacenado creado con la opción WITH ENCRYPTION en SQL Server.

Existen varias herramientas de software que permiten desencriptar los procedimientos almacenados con el cifrado que tiene por defecto SQL Server.

En esta ocasión, vamos a utilizar una herramienta que nos permite cifrar los procedimientos almacenados de manera sencilla y segura con SQL Shield.

Si queremos proteger nuestra propiedad intelectual de los procedimientos almacenados, es necesario utilizar esta herramienta u otras similares para proteger nuestro código T-SQL.

Probando SQL Shield

Démosle una mirada a la herramienta. Tenemos este procedimiento almacenado:

create procedure pedro
as
SELECT [xserver_name]
,[xdttm_ins]
,[xdttm_last_ins_upd]
,[xfallback_low]
,[xfallback_drive]
,[low]
,[high]
,[status]
,[name]
,[phyname]
FROM [master].[dbo].[spt_fallback_dev]

Vamos a encriptarlo usando SQL Shield. Usted puede descargarlo aquí.

Una vez instalado, abra el SQL Shield GUI.


Expanda el servidor y expanda la base de datos donde está el procedimiento almacenado que se desea encriptar. Seleccione el procedimiento almacenado, seleccione y presione el botón para encriptar:



La encriptación que recomendamos es el SQL Shield. Puede utilizar la encriptación por defecto de SQL Server. Sin embargo, como ya dijimos, no es muy seguro este método. Luego presione el botón Start para iniciar la encriptación:

En el SQL Server Management Studio, presione el botón derecho sobre el procedimiento almacenado y seleccione la opción para crear un script en un archivo, una nueva ventana de consultas, en el portapapeles o mandar al agente de SQL Server como un trabajo:



Bajo cualquiera de las opciones usted recibirá este mensaje. Como puede ver, no se puede ver el código ahora:



Ahora vamos a hacer una consulta a las bases de datos sistema. Esta consulta muestra el procedimiento almacenado llamado pedro, el nombre, y el código del procedimiento almacenado (definición):

SELECT DISTINCT
       o.name,
   m.definition
  FROM sys.sql_modules m
       INNER JOIN
       sys.objects o
         ON m.object_id = o.object_id
 WHERE o.name='pedro';


Si vemos los resultados de la consulta mostramos que el código muestra el valor NULL (Nulo):


Conclusiones
Si usted trata de decriptar los procedimientos cifrados con SQL Shield, utilizando herramientas de cifrado, no podrá hacerlo. Con SQL Server, usted garantiza tener procedimientos almacenados seguros.

Referencias











Software para encriptar datos de SQL Server


Introducción
SQL Server viene con la opción de cifrado de datos transparente,  sin embargo tener esta característica require tener la edición Enterprise de SQL Server, que es la edición más cara.
Existe un software especial que permite cifrar los datos de una manera mucho más simple, rápida y que no requiere ningún conocimiento técnico para proteger los datos.

Su nombre es DbDefense y usted puede descargar el software acá:

Este software permite el cifrado de datos en copia de seguridad y bloquea la vista a los esquemas y datos a cualquier nivel.

Este software cumple con los estándares de seguridad de HIPAA and HITECH, PCI Compliance

Demostración
Tome en cuenta que soy un administrador de sistema y que aún así, los datos serán cifrados.


Sin realizar el software, se pueden hacer consultas normalmente:


 Instalar DbDefence toma 2 minutos. Una vez instalado hay conectarse con el botón Connect y especificar los credenciales. En esta prueba utilizaremos la base de datos test1. Especifique una contraseña (Password) y vuelva a escribir la contraseña (Re-type) y presione el botón Encrypt para comenzar a cifrar:
Si tiene conexiones abiertas, ponga Yes para cerrarlas:

Si recibe un error de que falló la validación de la contraseña (password validation failed) y que la contraseña no cumple con las directivas de Windows, significa que tiene que crear una contraseña más compleja escribiendo letras mayúsculas, números y caracteres que no son alfanuméricos:

Si presionamos el botón charge options, podemos realizar cifrados de 128 y 256 bits.
También se pueden utilizar certificados:


Una vez cifrados los datos, al ejecutar la consulta, usted recibirá un mensaje de que el objeto es inválido. Lo considera como inexistente:

Si tratamos de ver las tablas, procedimientos o vistas, recibimos el mismo mensaje de objeto inválido;

Si deseamos exportar los datos de la tabla cifrada, tampoco será posible hacerlo:

 Si especificamos la base de datos, veremos si se puede exportar:
Como puede ver, se tiene un mensaje de error debido a que los datos están cifrados:


Si se trata de crear un reporte, podemos tratar en SSDT:


 Especifique la consulta:
Usted recibirá el error de que el objeto es inválido:

Para decriptar, presione el botón Decrypt:

Después de decriptar la base de datos, es posible ver los datos nuevamente:


Conclusiones
Como puede ver, DbDefense es una increíble herramienta. Permite encriptar rápidamente la base de datos escogidas inclusive a nivel de sysadmin. Hemos visto que no se puede acceder a los datos desde Reporting Services o tratando de exportar datos. Simplemente no se puede acceder ni a los datos, ni a los objetos. La versión es gratuita de prueba trabaja con menos de 200 MB

Esta herramienta soporta SQL Server en cualquier edición incluido SQL Server Express.

Referencias