DBA

Como crear una columna encriptada en SQL Server (Encriptado, Cifrado, codificación) : Columna Cifrada SQL Server

Columna encriptada usando claves simétricas 

SQL
Como encriptar datos en SQL server
En esta oportunidad hablaremos como, una columna encriptada usando claves simétricas puede proteger los datos de nuestros clientes, un día una amiga me pregunto como encriptar los datos de una columna de una tabla en SQL server, para lo cual le recomendé leer este articulo de microsoft (AQUI), sin embargo ella quería una explicación sencilla, para lo cual manos a la obra
 Nada mas emocionante que ir a un espectaculo de magia uno, donde el amigo dice lo vez ahora no lo vez, claro SQL Server quiere crear una ilusion optica a cifrar nuestros datos al punto que sin la llave nunca regresara el conejo del sombrero

Primero vamos a analizar el requerimiento de mi amiga Luisa (LU), tiene una tabla donde desea guardar contraseñas o números de tarjetas de crédito, lo cual son datos sensibles que no deberían poder verse con un simple select, un DBA no debería ver esos datos, como desarrolladores SQL debemos solucionar este requerimiento, existen muchos caminos para llegar a Roma, sin embargo nosotros usaremos cifrado simétrico SQL Server




 Columna Cifrada

Paso 1:

Crear una base de datos

 

En esta parte del árbol de base de datos podemos seleccionar nuestra base de datos para el ejemplo

Paso 2:

Crear la tabla de nuestro ejemplo, la cual tendrá dos campos que podremos cifrar que serán Tarjeta y Clave
Paso 3: Insertar datos en la tablas de ejemplo para validar que podamos mas adelante tener datos para cifrar

Paso 4:

Validar que nuestros datos estén en la tabla que creamos, para lo cual realizaremos un select de nuestra tabla

Paso 5:

Validamos que tengamos creado SQL Server Services Master Key, esto se crea cuando instalamos nuestra instancia de SQL Server, en caso de no tenerla creada debemos realizar su creación, para guiarte puedes leer este otro articulo Crear Services Master Key 
 
 
 

Paso 6:

Debemos crear una Clave maestra, para nuestra base de datos donde tenemos la tabla con las columnas que deseamos cifrar

Paso 7:

Crear un certificado en SQL server que contendrá nuestra clave maestra, para crear un certificado puedes leer este articulo en el cual explico que es el certificado y su utilidad Click AQUI
 
 

Paso 8:

Aquí es donde nuestro ejemplo se pone interesante, debemos crear la clave simétrica la cual nos permitirá cifrar y descifrar los datos de nuestra columna a cifrar, esta clave es rápida en ambos sentidos y es la forma correcta de mejorar los tiempos de cifrado, si deseas saber que es una clave simétrica puedes leer un poco mas AQUÍ , adicional usaremos un algoritmo de encriptación tipo AES_128, para saber mas sobre este tipo de algoritmos podemos Leer AQUÍ



Paso 9:

Importante, para cifrar datos únicamente podemos realizarlo en columnas tipo de datos varbinary max, entonces para fines prácticos crearemos dos nuevas columnas a nuestra tabla con el prefijo cifrado por delante, nuestra tabla queda del a siguiente manera

Paso 10:

Para cifrar los datos vamos a utilizar el comando EncryptByKey,Tenga en cuenta que la clave debe abrirse para que podamos encriptar los datos y estar seguros de cerrar manualmente la clave de lo contrario permanecerán abiertas para la sesión actual.

Paso 11:

Aquí nuestro resultado final, donde podemos realizar un select usado nuestros datos cifrados y mirando tanto los cifrados como decifrados

Paso 12:

Creando un proceso automático en un trigger para cifrar nuestros datos

Paso 13:

Finalmente luego de tanto leer mis locuras disfrutamos de el resultado de cifrar los datos cuando Realizamos el insert



5 comentarios en «Como crear una columna encriptada en SQL Server (Encriptado, Cifrado, codificación) : Columna Cifrada SQL Server»

Deja una respuesta

WP to LinkedIn Auto Publish Powered By : XYZScripts.com