29 oct 2014

Backup(Copia de respaldos) en Sql Server 2014


Cuando hablamos de backups o copias de respaldo tenemos varias situaciones que deben ser analizadas, no quiero referirme a un orden especifico sin embargo me parece que las principales son las siguientes:
  •  El tipo de información de que vamos a resguardar, para esto tendremos en cuenta que tipo de negocio esta en nuestra base de datos, ejm. datos de empresas Telefonicas, Sistemas de Ventas, Sistemas ERP o simples bases de datos.
  • Analisis del tamaño de base de datos y su crecimiento futuro. En base al  punto anterior haremos calculos simples estimando y controlando cuanto tiempo debería demorar restaurar nuestro backup.
  • Lugares o ubicaciones para resguardar nuestros backups
  • Frecuencia de generacion de backups
  • Cronograma de programacion de backup: Completas, Diferencial y log de transacciones.
  • Compresion de datos y encriptacion.
Como DBA despues de planificar la metodología o procesos de backups debemos preguntarnos por donde viajaran o donde residirán nuestras copias de respaldo, es decir en algunos lugares existen empresas que recogen discos o cintas de backups para llevarlos a otro datacenter, tambien existe la posibilidad de envíar estos backups a través de la red interna a un lugar remoto para resguardarnos de posibles desastres extremos en nuestro DataCenter. Sobre este tipo de rutinas existe una anécdota acerca de unos backups de una base de datos de un Banco X que enviaba una copia de sus backups en un maletín de seguridad a otro datacenter para que sea resguardado, en fin el caso fue que la persona encargada del transporte del backup perdió el maletín y con esté los backups del banco X, ademas hay que mencionar que los backups no estaban encriptados y por tanto cualquier persona con conocimientos basicos podria observar a detalle la informacion bancaria de las cuentas de sus clientes. Y bueno, nosotros no queremos que nos suceda algo similar cuando se transporte un backup ya sea en nuestra unidad USB preferida o en cualquier medio, por tanto haremos lo siguiente:

Cifrar o Encrtiptar nuestros Backups de Bases de datos en SQL Server

Antes de comenzar debemos tener conocimiento de los siguientes detalles:
  • Un backup cifrado puede ser generado a partir de la version 2014 de SQL Server.
  • Los backups cifrados no pueden ser generados desde las versiones Sql Server Web y Sql Server Express. Sin embargo si se puede restaurar un backup cifrado en todas las versiones SQL Server 2014.
  • Para restaurar  un backup el usuario que ejecute la tarea debe tener permisos VIEW DEFINITION 

  • Lo primero que debemos hacer es crear en el servidor una Master KEY, para lo cual usaremos el siguiente código de ejemplo:
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Passw0rd!!!';

  • Luego de tener la Master Key debemos crear el certificado en el servidor
Use Master
GO

CREATE CERTIFICATE CertificadoBK
WITH SUBJECT = 'Certificado para Backups';

  • El próximo paso es hacer un backup del Certificado para luego poderlo restaurar en el servidor destino o bien tenerlo como respaldo.
USE master
GO
BACKUP CERTIFICATE CertificadoBK 
TO FILE = 'c:\tmp\BKPCERT.cer'
WITH PRIVATE KEY (FILE = 'C:\TMP\BKP_Key.pvk' ,
ENCRYPTION BY PASSWORD = 'mY_P@$$w0rd' )
GO

  • Ya tenemos la instancia lista para poder usar la encriptación, ahora lo que haremos es realizar un backup encriptado usando TSQL, también se puede hacer por UI.
BACKUP DATABASE [AdventureWorks2012]
TO DISK = N'C:\tmp\adw_encrypt.bak'
 WITH
 ENCRYPTION
 (
 ALGORITHM = AES_256,



 SERVER CERTIFICATE = CertificadoBK
 ),
 STATS = 10
 GO


FIN 


Fuentes:
http://msdn.microsoft.com/es-us/library/dn449489.aspx
http://msdn.microsoft.com/es-us/library/bb934049.aspx
http://msdn.microsoft.com/es-es/library/dn425035.aspx
http://blog.maxiaccotto.com/post/Encriptacion-de-Backups-en-SQL-Server-2014-CTP2