Ejemplo de Reporte de Artículos con Códigos Qrs en eFactory ERP
Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)
1. Factory Soft Venezuela C.A.
Manual de Encriptación Transparente
de Bases de Datos (DTE) SQL Server
para eFactory
Versión 1.0
25/febrero/2015
2. Factory Soft Venezuela C.A. 2
http://www.factorysoft.com.ve
Historial de Cambios
Versión Fecha Observaciones Responsable
V1.0 25/02/2015 Creación del Manual RJG
3. Factory Soft Venezuela C.A. 3
http://www.factorysoft.com.ve
Contenido
Historial de Cambios......................................................................................................................2
Información General......................................................................................................................4
Proceso de Encriptación.................................................................................................................5
Crear una Clave Maestra de Encriptación.....................................................................................5
Crear un Certificado protegido por la Clave Maestra de Encriptación ............................................6
Crear una Clave de Encriptación de Base de Datos .......................................................................6
Activarla encriptación en la Base de Datos..................................................................................7
Proceso para Restaurar un Backup Encriptado.................................................................................8
Scripts Anexos ...............................................................................................................................9
Scripts para Encriptar la Base de Datos........................................................................................9
Scripts para restaurar la Clave Maestra del Servidor y un Certificado...........................................10
4. Factory Soft Venezuela C.A. 4
http://www.factorysoft.com.ve
Información General
Este manual describe el proceso para la Encriptación Transparente de Bases de Datos (TDE) en SQL
Server 2012 o posterior, para ser usada en bases de datos eFactory.
Este procesoaporta una capa de seguridadque protege losarchivosde base de datos y backups para
que estosseandifícileso imposibles de descifrar en caso de que un tercero tenga acceso a ellos, ya
sea al acceder físicamente o por red al servidor, o interceptando los archivos al ser transportados o
transferidos de manera electrónica o física fuera del servidor.
El acceso desde eFactory a una base de datos encriptada es “transparente”, es decir, el sistema
eFactoryno requiere de algúncambiode configuraciónpara acceder a una base de datos encriptada
con TDE. Sinembargo,el procesode creación de copias de seguridad tendrá un cambio importante,
ya que ahora también debe crearse copias de seguridad de las claves y certificados usados para
encriptarlabase de datos, y en caso de necesitar mudar la base de datos encriptada a otro servidor
es necesario restaurar primero las claves y certificados.
Como resultado del proceso de encriptación es necesario conservar un backup de dos archivos
adicionales al propio backup de la base de datos: el certificado y la clave privada del certificado.
Adicionalmente se debe resguardar al menos dos contraseñas: la primera es la contraseña maestra
de la clave de encriptación maestra (las bases de datos de eFactory no la utilizarán directamente,
pero deben guardarse en caso de que a futuro se utilicen), la segunda es una o más contraseñas
usadas para generar los backups de cada certificado.
El backup de la base de datos debe respaldarse físicamente fuera del servidor de base de datos,
como bien se sabe. Adicionalmente los backups de los certificados deben almacenarse en una
locación diferente, ya que con ellos se puede tener acceso a las bases de datos encriptadas.
Finalmente las contraseñas deben guardarse en una tercera locación física.
Así, para que un tercero no autorizado pueda acceder a una copia de seguridad de los datos
encriptados tendría que obtener acceso a los archivos en las tres locaciones seguras descritas
anteriormente.
5. Factory Soft Venezuela C.A. 5
http://www.factorysoft.com.ve
Proceso de Encriptación
El proceso consiste en 4 pasos:
Crear una Clave Maestra de Encriptación (y opcionalmente un backup de la misma)
Crear un Certificado protegido por la Clave Maestra de Encriptación, y guardar un backup.
Crear una Clave de Encriptación en la base de datos a encriptar, usando el Certificado.
Activar la encriptación en la Base de Datos.
Los primeros dos pasos se deben ejecutar una vez en cada instancia de SQL Server. Los dos últimos
pasos se deben ejecutar una vez en cada base de datos a encriptar.
A continuación se describen a los pasos a seguir para encriptar una base de datos SQL Server con
TDE. Más adelante en este manual se encuentran los scripts que engloban el proceso completo de
encriptación.
IMPORTANTE: Como en toda operación de riesgo o que pueda afectar a toda la base de datos es
necesarioprimerodetenerlos servicios y sistemas conectados a la base de datos, y adicionalmente
hacer un último backup sin encriptar antes de proceder con la encriptación.
Crear una Clave Maestra de Encriptación
En cada instancia de SQL Server solo puede haber una Clave Maestra de Encriptación. La siguiente
instrucción se usa para crearla y agregarle una contraseña:
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<CONTRASENA MAESTRA FSV>';
Si ya hay una Clave Maestra de Encriptación previamente creada, entonces la instrucción anterior
mostrará unerror. En ese caso la clave ha sido creada previamente, pero no sabemos si se creó con
nuestracontraseñao si nuestracontraseñafue agregada a la clave maestra. La siguiente instrucción
intenta agregar nuestra contraseña a la Clave Maestra de Encriptación:
USE master;
ALTER MASTER KEY ADD ENCRYPTION BY PASSWORD = '<CONTRASENA MAESTRA FSV>';
Si esta instrucción muestra un mensaje de error es porque nuestra contraseña ya había sido
previamente agregada a la Clave Maestra de Encriptación.
Ya sea que se haya creado una clave maestra, o que se haya modificado para agregar una nueva
contraseñaes importante hacerunbackup inmediatamente:enprincipio,el esquema de protección
de bases de datos de eFactory utiliza Certificados, por lo que no es necesario un backup de la clave
maestra (es suficiente con crear una nueva si es necesario), sin embargo si en un futuro se utilizan
clavesasimétricasparaencriptarlabase de datos,la única forma de acceder a ellos es por medio de
la clave maestra original (no se puede hacer con una nueva). Para hacer un backup de la Clave
Maestra de Encriptación se usa el siguiente comando:
USE master;
BACKUP MASTER KEY TO FILE = 'C:Sql_2012BackupsClaveMaestraServidor.backup'
ENCRYPTION BY PASSWORD = '<CONTRASENA PARA EL BACKUP>';
6. Factory Soft Venezuela C.A. 6
http://www.factorysoft.com.ve
Nótese que el backup requiere una contraseña para proteger el archivo generado (se utilizará para
restaurar el backup de la Clave Maestra de Encriptación); pero esta contraseña es diferente de la
propia contraseña de la calve maestra. Ambas contraseñas deben guardarse en un lugar seguro y
separado de los backups.
Una vez que verifiquemos que ya hay una Clave Maestra de Encriptación y que nuestra contraseña
haya sido agregada a la misma continuamos con el Certificado.
Crear un Certificado protegido por la Clave Maestra de Encriptación
En cada instancia de SQL Server puede haber más de un Certificado, pero los nombres de los
certificados deben ser únicos. En las bases de datos de nuestros clientes se creará un certificado
agregando el código del cliente global al nombre, utilizando el siguiente comando SQL:
USE master;
CREATE CERTIFICATE Certificado_Efactory_CVEVAL0000
WITH SUBJECT = 'Certificado de eFactory para CVEVAL0000',
EXPIRY_DATE = '20991231';
El nombre debe ser único para que posteriormente pueda importarse más de una base de datos al
mismo servidor con sus respectivos certificados sin que haya colisiones. En principio la fecha de
expiración no es necesaria ni utilizada por SQL Server cuando el certificado es usado para
encriptación,sinembargoestopuedecambiar en el futuro por lo que se establece una fecha lejana
como precaución.
Antes de poder usar el certificado es necesario hacer un backup del mismo, usando el siguiente
comando:
USE master;
BACKUP CERTIFICATE Certificado_Efactory_CVEVAL0000
TO FILE = N'C:Sql_2012BackupsCertificado_Efactory_CVEVAL0000.cer'
WITH PRIVATE KEY
( FILE = N'C:Sql_2012BackupsCertificado_Efactory_CVEVAL0000.pvk',
ENCRYPTION BY PASSWORD = N'<CONTRASENA PARA EL BACKUP>');
Este comando creará dos archivos: el primero es el certificado en sí, el cual es protegido por una
Clave Privada. El segundo archivo contiene la clave privada que a si vez está encriptada usando la
contraseña indicada al hacer el backup. Así, los dos archivos generados y la contraseña utilizada
deben guardarse en un lugar seguro; al igual que con la Clave Maestra de Encriptación, esta
contraseña debe guardarse en un lugar diferente a los archivos del certificado.
Crear una Clave de Encriptación de Base de Datos
En cada base de datosde eFactory(tantoFactory_Global comoenla base de datos de cada empresa)
se debe crear una Clave de Encriptación que use el certificado creado en el paso anterior. Esto se
hace mediante el siguiente comando:
USE Factory_Administrativo_XXXXXX;
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = TRIPLE_DES_3KEY
ENCRYPTION BY SERVER CERTIFICATE Certificado_Efactory_CVEVAL0000;
7. Factory Soft Venezuela C.A. 7
http://www.factorysoft.com.ve
La clave de encriptación se almacena dentro de cada base de datos, y es posible crear varias claves
(una para cada base de datos) usando el mismo certificado.
Activar la encriptación en la Base de Datos
En este pasoserá cuando realmente se encripte el contenido de la base de datos. Se ejecuta con el
siguiente comando y puede tardar varios minutos u horas en completarse:
ALTER DATABASE Factory_Administrativo_XXXXXX SET ENCRYPTION ON;
Cualquier backup realizado después de activar la encriptación de la base de datos será generado
encriptado.El procesode creación del backup de la base de datos se seguirá ejecutando del mismo
modoque con una base de datos no encriptada,yaseapor mediode lainterfazde SSMS o por medio
de comandos.
8. Factory Soft Venezuela C.A. 8
http://www.factorysoft.com.ve
Proceso para Restaurar un Backup Encriptado
1. Verifique que tiene disponible los siguientes elementos para restaurar el backup:
a. El backup de la base de datos (archivo de extensión .bak)
b. El backup del certificado asociado a la base de datos (será necesario si no está ya
creado en el servidor). Es un archivo de extensión .cer, con el mismo nombre del
certificado.
c. La clave privada del certificado. Es un archivo de extensión .pvk, con el mismo
nombre del certificado.
d. La contraseñadel backupdel certificado.Estafue utilizadaal momentode realizar el
backup del certificado.
2. Verificarque enlainstanciade SQL Serveresté creado el Certificado asociado al backup que
se desea restaurar. El certificado es visible desde SSMS, en el explorador de objetos (ver
imagen).
3. Si el certificado no está creado entonces debe ser restaurado desde el backup
correspondiente mediante el siguiente comando:
USE master;
CREATE CERTIFICATE Certificado_Efactory_CVEVAL0000
FROM FILE = N'C:Sql_2012BackupsCertificado_Efactory_CVEVAL0000.cer'
WITH PRIVATE KEY
( FILE = N'C:Sql_2012BackupsCertificado_Efactory_CVEVAL0000.pvk',
DECRYPTION BY PASSWORD = N'<CONTRASENA PARA EL BACKUP>');
4. Si el paso anterior falla puede ser necesario crear una Clave Maestra de Encriptación, como
se explicaenlapágina5. Luegode crear la clave maestra puede intentar de nuevo restaurar
el certificado.
5. Una vez que el certificado está creado se restaura la base de datos del mismo modo que se
hace con bases de datos no encriptadas.
9. Factory Soft Venezuela C.A. 9
http://www.factorysoft.com.ve
Scripts Anexos
Para usar estos scripts se debe sustituir la ruta de los backups (“C:Sql_2012Backups”) por la ruta
correspondiente al servidor real.
Tambiéndebensustituirselascontraseñas“<CONTRASENA MAESTRA FSV>” y “<CONTRASENA PARA
EL BACKUP>” por las contraseñas reales a utilizar.
El nombre del certificado (“Certificado_Efactory_CVEVAL0000”) y de la base de datos
(“Factory_Administrativo_XXXXX”) debensustituirse por los valores reales usando las convenciones
de códigos de cliente y nombres de bases de datos de eFactory.
Scripts para Encriptar la Base de Datos
USE master;
GO
/*-----------------------------------------------------*/
/* Clave Maestra de la instancia. */
/*-----------------------------------------------------*/
IF(NOT EXISTS(SELECT * FROM sys.symmetric_keys WHERE name =
'##MS_DatabaseMasterKey##'))
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<CONTRASENA MAESTRA FSV>';
ELSE
ALTER MASTER KEY ADD ENCRYPTION BY PASSWORD = '<CONTRASENA MAESTRA FSV>';
BACKUP MASTER KEY TO FILE = 'C:Sql_2012BackupsClaveMaestraServidor.backup'
ENCRYPTION BY PASSWORD = '<CONTRASENA PARA EL BACKUP>';
GO
/*-------------------------------------------------------*/
/* Certificado del cliente (uno por cada cliente global).*/
/*-------------------------------------------------------*/
IF (NOT EXISTS(SELECT * FROM sys.certificates WHERE name =
'Certificado_Efactory_CVEVAL0000'))
CREATE CERTIFICATE Certificado_Efactory_CVEVAL0000
WITH SUBJECT = 'Certificado de eFactory para CVEVAL0000',
EXPIRY_DATE = '20991231';
BACKUP CERTIFICATE Certificado_Efactory_CVEVAL0000
TO FILE = N'C:Sql_2012BackupsCertificado_Efactory_CVEVAL0000.cer'
WITH PRIVATE KEY
( FILE = N'C:Sql_2012BackupsCertificado_Efactory_CVEVAL0000.pvk',
ENCRYPTION BY PASSWORD = N'<CONTRASENA PARA EL BACKUP>');
GO
/*-------------------------------------------------------------------------*/
/* Clave de encriptación de la base de datos (uno por cada Base de datos). */
/*-------------------------------------------------------------------------*/
USE Factory_Administrativo_XXXXX;
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = TRIPLE_DES_3KEY
ENCRYPTION BY SERVER CERTIFICATE Certificado_Efactory_CVEVAL0000;
GO
/*----------------------------------------------------------------------------*/
/* Activación de la encriptación de la base de datos (en cada Base de datos). */
/*----------------------------------------------------------------------------*/
ALTER DATABASE Factory_Administrativo_XXXXX SET ENCRYPTION ON;
GO
10. Factory Soft Venezuela C.A. 10
http://www.factorysoft.com.ve
Scripts para restaurar la Clave Maestra del Servidor y un
Certificado
USE master;
/*--------------------------------------------------------------------------------*/
-- Para restaurar: la clave maestra del servidor SQL SERVER (de toda la instancia)*/
/*--------------------------------------------------------------------------------*/
RESTORE MASTER KEY FROM FILE = 'C:Sql_2012BackupsMS_DatabaseMasterKey.backup'
DECRYPTION BY PASSWORD = '<CONTRASENA PARA EL BACKUP>' -- CONTRASENA PARA EL
BACKUP
ENCRYPTION BY PASSWORD = '<CONTRASENA MAESTRA FSV>'; -- CONTRASENA MAESTRA FSV
/*--------------------------------------------------------------------------------*/
-- Para restaurar: del certificado de la base de datos (para cada certificado) */
/*--------------------------------------------------------------------------------*/
CREATE CERTIFICATE Certificado_Efactory_CVEVAL0000
FROM FILE = N'C:Sql_2012BackupsCertificado_Efactory_CVEVAL0000.cer'
WITH PRIVATE KEY
( FILE = N'C:Sql_2012BackupsCertificado_Efactory_CVEVAL0000.pvk',
DECRYPTION BY PASSWORD = N'<CONTRASENA PARA EL BACKUP>');