TDE

loading...


Cifrado de datos transparente (TDE)

La principal funcion del TDE es proteger las bases de datos, como el diseño de una sistema seguro, en caso de que se de un robo de discos duros o copias de seguridad el usuario no tendra acceso a la informacion.
Para implementar un TDE seguimos los siguientes pasos:

Paso 1: Crear una clave maestra, con las siguiente sentencia revisamos si ya existe alguna:

use master

select
* from
sys.symmetric_keys


--##MS_ServiceMasterKey##    1    102    256    A3    AES_256    2015-10-12 16:26:55.190    2015-10-12 16:26:55.190    6D1DE52F-93CF-4694-8F21-583AA1F5B687    NULL    NULL    NULL    NULL


Para poder crear la clave maestra debe cumplir con ciertos requeriemientos ya que tiene que ser una contraseña segura, si dejamos por ejemplo una contraseña vacia nos aparecera un error de que no cumple con la directiva de Windows.

create master key encryption
by password= '';
go



Se recomienda que la contraseña contenga los siguientes caracteres: Mayusculas, Minusculas, Digitos del 0 al 9 y caracteres que no sean alfanumericos por ejemplo $.

create master key encryption
by password= 'Pas$Word';
go



select
* from sys.symmetric_keys
where name like '%##MS_DatabaseMasterKey##%';


select name, is_master_key_encrypted_by_server
from sys.databases





Paso 2: Una vez creada la clave maestra el siguiete paso es crear el certificado, para eso ejecutamos la siguiente sentencia:

create certificate CertificadoTDE
with subject = 'Certificado para TDE';
go

select *
from sys.certificates
where name ='CertificadoTDE';
go

--CertificadoTDE    258    1    MK    ENCRYPTED_BY_MASTER_KEY    1    Certificado para TDE    5a 85 2e a3 4a 1b 78 bd 4d 76 dc 02 b9 d3 62 08    0x0106000000000009010000007B5B3F6C129B374C9A0A5A9F3346E005F1B5AFED    S-1-9-1-1816091515-1278712594-2673478298-98584115-3987715569    Certificado para TDE    2017-09-14 23:50:09.000    2016-09-14 23:50:09.000    0x7B5B3F6C129B374C9A0A5A9F3346E005F1B5AFED    NULL    NULL


Paso 3: Despues de crear el certificado en necesario proteger la clave de cifrado, para eso ejecutamos la siguiente sentencia:

use AdventureWorks2014

create database encryption key
with algorithm = AES_128
encryption by server certificate CertificadoTDE;
go

 select database_id, DB_NAME(database_id) as Nombre,
 encryption_state, key_algorithm, key_length
  from sys.dm_database_encryption_keys


  alter database AdventureWorks2014
  set encryption on;
  go

  select *
  from sys.dm_database_encryption_keys
Paso 4: Creamos un respaldo del certificado usado para cifrar la clave de la base de datos, ya que son necesarios para poder restaurar la base de datos en otro servidor.

  backup database AdventureWorks2014
  to disk = N'C:\Backup\Bkp_AdventureWorks2014.bak'
  with noformat, noinit,
       name= N'AdventureWorks2014 completa cifrada',
       skip, norewind, nounload, stats=10;
go



Con la siguiente sentencia validamos que el respaldo se completo correctamente:

RESTORE FILELISTONLY
   FROM DISK = 'C:\Backup\Bkp_AdventureWorks2014.bak'


A continuación vamos a tratar de restaurar esta base de datos en otro servidor o instancia de SQL Server:

restore database AdventureWorks2014_bkpcfe
from disk = N'C:\Backup\Bkp_AdventureWorks2014.bak'
with file =1,
MOVE 'AdventureWorks2014_Data' TO 'C:\Full\AdventureWorks2014_Data.mdf',
MOVE 'AdventureWorks2014_Log' TO 'C:\Full\AdventureWorks2014_Log.ldf',
nounload, stats=10;
go



NOTA:Nos aparece error ya que no tenemos el certificado para poder restaurar la base de datos, necesitamos primero restaurar el cert.ficado y despues la base de datos.


Paso 5:
Primero restauramos el certificadoTDE de la siguiente manera:
use master;
go

backup certificate CertificadoTDE
to file= 'C:\Backup\CertificadoTDE.cert'
with private key
(
file = 'C:\Backup\ClavePrivada.key',
encryption by password =''
)
go


Paso 6: Una vez restaurado el certificado creamos una nueva clave maestra ejecutando los siguientes comandos:

use master

create master key encryption
by password = 'Nv&va8a$s';
go


Paso 7: Una vez creada la calve maestra creamos un nuevo certificado ejecutando los siguientes comandos:


create certificate NuevoCertificadoTDE
from file = 'C:\Backup\CertificadoTDE.cert'
with private key
(
file ='C:\Backup\ClavePrivada.key',
decryption by password =''
);
go


Paso 8: Como ya se creo el certificado y la cave en el nuevo servidor o instancia ya podemos restaurar la base de datos cifrada sin ningun problema.


restore database AdventureWorks2014_bkpcfe
from disk = N'C:\Backup\Bkp_AdventureWorks2014.bak'
with file =1,
MOVE 'AdventureWorks2014_Data' TO 'C:\Backup\AdventureWorks2014_Data.mdf',
MOVE 'AdventureWorks2014_Log' TO 'C:\Backup\AdventureWorks2014_Log.ldf',
nounload, stats=10;
go


Comentarios

Entradas populares