Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

14
Factory Soft Venezuela C.A. Manual de Encriptación Transparente de Bases de Datos (DTE) SQL Server para eFactory Versión 1.0

Transcript of Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

Page 1: Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

Factory Soft Venezuela C.A.

Manual de Encriptación Transparente de Bases de Datos (DTE) SQL Server

para eFactoryVersión 1.0

25/febrero/2015

Page 2: Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

Factory Soft Venezuela C.A. 2

Historial de Cambios

Versión Fecha Observaciones Responsable

V1.0 25/02/2015 Creación del Manual RJG

http://www.factorysoft.com.ve

Page 3: Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

Factory Soft Venezuela C.A. 3

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

Activar la 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

http://www.factorysoft.com.ve

Page 4: Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

Factory Soft Venezuela C.A. 4

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 proceso aporta una capa de seguridad que protege los archivos de base de datos y backups para que estos sean difíciles o 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 eFactory no requiere de algún cambio de configuración para acceder a una base de datos encriptada con TDE. Sin embargo, el proceso de 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 encriptar la base 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.

http://www.factorysoft.com.ve

Page 5: Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

Factory Soft Venezuela C.A. 5

http://www.factorysoft.com.ve

Page 6: Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

Factory Soft Venezuela C.A. 6

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 necesario primero detener los 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á un error. En ese caso la clave ha sido creada previamente, pero no sabemos si se creó con nuestra contraseña o si nuestra contraseña fue 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ña es importante hacer un backup inmediatamente: en principio, 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 claves asimétricas para encriptar la base 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_2012\Backups\ClaveMaestraServidor.backup' ENCRYPTION BY PASSWORD = '<CONTRASENA PARA EL BACKUP>';

http://www.factorysoft.com.ve

Page 7: Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

Factory Soft Venezuela C.A. 7

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, sin embargo esto puede cambiar 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_2012\Backups\Certificado_Efactory_CVEVAL0000.cer' WITH PRIVATE KEY ( FILE = N'C:\Sql_2012\Backups\Certificado_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 datos de eFactory (tanto Factory_Global como en la 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;

http://www.factorysoft.com.ve

Page 8: Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

Factory Soft Venezuela C.A. 8

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 paso será 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 proceso de creación del backup de la base de datos se seguirá ejecutando del mismo modo que con una base de datos no encriptada, ya sea por medio de la interfaz de SSMS o por medio de comandos.

http://www.factorysoft.com.ve

Page 9: Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

Factory Soft Venezuela C.A. 9

Proceso para Restaurar un Backup Encriptado1. 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ña del backup del certificado. Esta fue utilizada al momento de realizar el backup del certificado.

2. Verificar que en la instancia de SQL Server esté 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_2012\Backups\Certificado_Efactory_CVEVAL0000.cer' WITH PRIVATE KEY ( FILE = N'C:\Sql_2012\Backups\Certificado_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 explica en la página 6. Luego de 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.

http://www.factorysoft.com.ve

Page 10: Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

Factory Soft Venezuela C.A. 10

Scripts AnexosPara usar estos scripts se debe sustituir la ruta de los backups (“C:\Sql_2012\Backups\”) por la ruta correspondiente al servidor real.

También deben sustituirse las contraseñ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”) deben sustituirse 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 DatosUSE 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_2012\Backups\ClaveMaestraServidor.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_2012\Backups\Certificado_Efactory_CVEVAL0000.cer' WITH PRIVATE KEY ( FILE = N'C:\Sql_2012\Backups\Certificado_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;

http://www.factorysoft.com.ve

Page 11: Manual de Encriptacion de Base de Datos para eFactory ERP/CRM (v1.0)

Factory Soft Venezuela C.A. 11

GO

Scripts para restaurar la Clave Maestra del Servidor y un CertificadoUSE master;

/*--------------------------------------------------------------------------------*/-- Para restaurar: la clave maestra del servidor SQL SERVER (de toda la instancia)*//*--------------------------------------------------------------------------------*/RESTORE MASTER KEY FROM FILE = 'C:\Sql_2012\Backups\MS_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_2012\Backups\Certificado_Efactory_CVEVAL0000.cer' WITH PRIVATE KEY ( FILE = N'C:\Sql_2012\Backups\Certificado_Efactory_CVEVAL0000.pvk', DECRYPTION BY PASSWORD = N'<CONTRASENA PARA EL BACKUP>');

http://www.factorysoft.com.ve