Encriptación de copias de seguridad SQL Server

Una base de datos es una de las partes más importantes de cada sistema de información y, por tanto, frecuentemente es un objetivo de los hackers. La encriptación es un proceso de ofuscar los datos con el uso de una clave y/o contraseña haciendo los datos ininteligibles a cualquiera sin la clave de des encriptación correspondiente o la contraseña.

SQL Server ofrece dos maneras de encriptar los datos:

  1. Encriptación de Datos Transparente (Transparent Data Encryption, TDE)

    SQL Server 2008 introduce Transparent Data Encryption (TDE), que permite encriptar una base de datos complete. TDE protege la base de datos contra accesos no autorizados a los discos duros o copias de seguridad en las cuales la base de datos está almacenada. Cuando Transparent Data Encryption encripta datos “sobre la marcha”, muestra problemas de desempeño resultando en un uso significativamente incrementado de CPU durante, por ejemplo, operaciones de copia de seguridad.

  2. Encriptación de Copia de Seguridad

    La encriptación de copias de seguridad SQL Server es introducida en SQL Server 2014 y soporta la encriptación de copias de seguridad de base de datos directamente desde el motor de la base de datos. En el caso de la característica de Encriptación de Copia de Seguridad, la encriptación/des encriptación es realizada sólo cuando se hace una copia de seguridad y cuando se restaura una base de datos, por tanto, no hay problemas de desempeño.

  3. ¿Cómo funciona la encriptación de copias de seguridad SQL Server?

    SQL Server tiene una infraestructura de encriptación jerárquica donde cada capa en la jerarquía encripta la capa debajo.

    La primera capa de jerarquía es la Clave Maestra de Servicio (Service Master Key, SMK). La Clave Maestra de Servicio es generada automáticamente durante la instalación de SQL Server y almacenada en la base de datos maestra del sistema. La SMK es única para cada instancia SQL Server. La Clave Maestra de Servicios es encriptada basándose en las credenciales para la cuenta de servicio SQL Server y la clave Windows Data Protection API (DPAPI).

    La siguiente capa es una Clave Maestra de Base de Datos (Database Master Key, DMK) de a base de datos maestra. La Clave Maestra de Base de Datos es única para cada base de datos maestra del sistema para cada instancia SQL Server. La Clave Maestra de Base de Datos es encriptada usando la Clave Maestra de Servicio.

    El siguiente nivel en la jerarquía es un certificado que puede contener una clave privada que es protegido por la Clave Maestra de Base de Datos, o una clave asimétrica (note que si se usa una clave asimétrica para encriptar los datos de respaldo, sólo claves asimétricas que residen en el proveedor Administración Extensible de Claves (EKM) son soportadas).

    Eligiendo un algoritmo de copia de seguridad SQL Server

    La característica de encriptación de copias de seguridad de SQL Server provee encriptación de datos con los algoritmos AES 128, AES 192, AES 256 y Triple DES (3DES).

    Estándar de Cifrado de Datos (DES)

    El Estándar de Cifrado de Datos, también conocido como Algoritmo de Cifrado de Datos (DEA) es desarrollado en los setenta y publicado en 1977. El Estándar de Cifrado de Datos es un bloque de cifrado que encripta datos en bloques de 64 bits. DES es un algoritmo simétrico, lo que significa que el mismo algoritmo y clave son usados para el cifrado y el descifrado. Un tamaño de clave de 56-bits. Una máquina de ataque de fuerza bruta DES puede encontrar una clave en aproximadamente 3.5 horas. Y con el tempo DES sólo se volverá menos seguro.

    Para mejorar la seguridad hay variantes de DES como Triple DES (3DES). Triple DES es una manera de usar el Estándar de Cifrado de Datos tres veces, y tiene una longitud de clave de 168 bits, pero también ha demostrado ser inefectivo contra ataques de fuerza bruta.

    Estándar de Cifrado Avanzado (AES)

    El Estándar de Cifrado Avanzado (Advanced Encryption Standard, AES), también conocido como Rijndael, el cual es su nombre original, es una especificación establecida en 2001 para el cifrado de datos electrónicos.

    El Estándar de Cifrado Avanzado consiste en tres bloques de cifrado, AES 128, AES 192 y AES 256 y cada bloque de cifrado encripta datos en bloques de 128 bits. Una longitud de clave es 128, 192 y 256 bits, respectivamente. AES es, como DES, también un algoritmo simétrico.

    El Estándar de Cifrado Avanzado es usado mundialmente y adoptado por el gobierno de os Estados Unidos y desplaza al Estándar de Cifrado de Datos (DES) en términos de seguridad.

    La mejor opción es usar cifrado AES 256 dado que usar un cifrado más fuerte requiere más poder de CPU para cifrar los datos y también más poder de CPU para descifrarlos en el caso de un intento de romper la encriptación.

    Prerrequisitos para Cifrado de Copias de Seguridad de SQL Server

    Antes de realizar un cifrado de copia de seguridad verifique si hay una Clave Maestra de Servicio y una Clave Maestra de Base de Datos en la base de datos maestra. Como una Clave Maestra de Servicio es generada automáticamente durante la instalación de SQL Server, debería ya estar contenida en la base de datos maestra. La presencia de SMK y DMK es revisada consultando la vista de catálogo master.sys.symmetric_keys y buscando la fila ##MS_DatabaseMasterKey## en los resultados:

    SELECT * FROM master.sys.symmetric_keys 
    

    Si la fila ##MS_DatabaseMasterKey## no existe, use la siguiente consulta para crearla:

    CREATE MASTER KEY ENCRYPTION BY PASSWORD='TestPass'
    

    A continuación, necesitamos crear un certificado:

    USE master
    GO
    CREATE CERTIFICATE BackupCertificate
    WITH SUBJECT = 'SQL Server 2014 Backup Encryption test';
    GO
    

    Si un certificado no es respaldado previamente a respaldar una base de datos en T-SQL, el siguiente aviso será mostrado en los resultados:

    Warning: The certificate used for encrypting the database encryption key has not been backed up. You should immediately back up the certificate and the private key associated with the certificate. If the certificate ever becomes unavailable or if you must restore or attach the database on another server, you must have backups of both the certificate and the private key or you will not be able to open the database.

    Para respaldar un certificado y las claves maestras use las siguientes consultas:

    Respaldar la Clave Maestra de Servicio:

    -- Backup the Service Master Key
    USE master
    GO
    BACKUP SERVICE MASTER KEY
    
    TO FILE = 'F:\BackupKeys\SQL2014_SMK.key'
    
    ENCRYPTION BY PASSWORD = 'SMKDBEncryption';
    
    GO
    

    Respaldar la Clave Maestra de Base de Datos:

    -- Backup the Database Master Key
    
    BACKUP MASTER KEY
    
    TO FILE = 'F:\BackupKeys\SQL2014_DMK.key'
    
    ENCRYPTION BY PASSWORD = 'DMKDBEncryption';
    
    GO
    

    Respaldar el Certificado:

    BACKUP CERTIFICATE BackupCertificate
    
    TO FILE = 'F:\BackupKeys\SQL2014_BackupCertificate.cer'
    
    WITH PRIVATE KEY
    
            (
    
                    FILE = 'F:\BackupKeys\SQL2014_CertificateKey.key'
    
                    , ENCRYPTION BY PASSWORD = 'CertificateDBEncryption'
    
            );
    
    GO
    

    Ahora finalizamos las preparaciones para crear una copia de seguridad cifrada y tenemos todos los cuatro archivos respaldados:

    Cifrado de Copia de Seguridad SQL Server usando T-SQL

    Para respaldar una base de datos con cifrado usando T-SQL, el algoritmo de cifrado y el certificado necesitan ser especificados:

    BACKUP DATABASE [AdventureWorksDW2014]
    TO DISK = N'F:\EncryptedBackups\TestTSQLEncryptedBackup.bak'
    WITH
      COMPRESSION,
      ENCRYPTION 
       (
       ALGORITHM = AES_256,
       SERVER CERTIFICATE = BackupCertificate
       )
     GO
    

    Programar una copia de seguridad cifrada requiere un trabajo de SQL Server Agent.

    Restaurar una copia de seguridad cifrada SQL Server en T-SQL

    Si la restauración de una base de datos desde un archivo de copia de seguridad cifrado ser realiza en la misma instancia SQL Server, la operación de restauración es realizada como siempre ya que las claves y el certificado están ya contenidos en la base de datos maestra y son abiertos automáticamente en el proceso de descifrado:

    RESTORE DATABASE [AdventureWorksDW2014]
    
    FROM DISK = 'F:\EncryptedBackups\TestTSQLEncryptedBackup.bak'
    

    Cifrado de SQL Server en SQL Server Management Studio

    Para realizar un respaldo cifrado en SQL Server Management Studio:

    1. Haga clic derecho en una base de datos y seleccione Tasks ➜ Back Up:

    2. En el asistente Back Up Database, debajo de la pestaña general seleccione la base de datos y establezca el destino:

    3. Una de las restricciones de las copias de seguridad cifradas es que no pueden ser anexadas a un conjunto de copias de seguridad existente, por lo tanto, SQL Server Management Studio requiere configurar la base de datos para respaldarse a un nuevo conjunto de medios. Debajo de la pestaña Media Options del asistente BackUp Database, seleccione la opción Back up to a new media set, and erase all existing backup sets e ingrese el nombre de un conjunto de medios y su descripción:

    4. Debajo de la pestaña Backup Options, seleccione la opción Encrypt backup y establezca el algoritmo de cifrado y el certificado:

    Restaurando una copia de seguridad cifrada de SQL Server en SQL Server Management Studio

    Para restaurar una copia de seguridad cifrada en SQL Server Management Studio:

    1. Haga clic derecho en el nodo Databases en el panel Object Explorer y seleccione la opción Restore Database:

    2. En el asistente Restore Database navuegue a la carpeta donde la copia de seguridad está almacenada y haga clic en OK:

    Las desventajas de las tareas nativas de respaldar y restaurar copias de seguridad en SQL Server Management Studio, aparte de la inhabilidad para automatización, son que SQL Server Management Studio no ofrece una opción para un reporte acerca de los procesos de respaldo y restauración, y también una restauración de servidores cruzados requeriría una gran cantidad de trabajo manual.

    Cifrado de Copias de Seguridad SQL Server usando Maintenance Plans

    La tarea Back Up Database en Maintenance Plans en SQL Server 2014 también tiene la opción de tomar una copia de seguridad cifrada.

    Para realizar una copia de seguridad cifrada usando Maintenance Plans:

    1. Desde la opción Maintenance Plans debajo del nodo Management en el panel Object Explorer seleccione Maintenance Plan Wizard.
    2. En la página Select maintenance Task del asistente seleccione Back Up Database y haga clic en Next:

    3. En la página Define Back Up Database Task, seleccione la base de datos para respaldar debajo de la pestaña General.
    4. En la misma página, debajo de la pestaña Options, seleccione la opción Backup encryption y establezca el algoritmo y el certificado o una clave asimétrica:

    Para ejecutar el plan de mantenimiento haga clic derecho en el plan debajo de la opción Maintenance Plans y seleccione Execute:

    Aunque el proceso de respaldo puede ser programado como un trabajo de SQL Server Agent desde el asistente Maintenance Plan, la desventaja de Maintenance Plans es que no hay una tarea ‘Restore Database’. Para el propósito de restaurar una copia de seguridad cifrada (o cualquier otra) la tarea Execute T-SQL Statement tiene que ser usada añadiendo un script T-SQL en la tarea.

    Cifrado de Copias de Seguridad SQL Server usando ApexSQL Backup

    ApexSQL Backup es una herramienta SQL Server que permite administrar y automatizar los trabajos de respaldo y restauración y almacena detalles de todas las actividades de respaldo.

    ApexSQL Backup también ofrece creación instantánea de copias de seguridad y simplifica la administración y el monitoreo del respaldo y restauración de servidores cruzados en comparación a la solución nativa de SQL Server. La seguridad de la copian de seguridad es mejorada al realizar una verificación automática de la copia de seguridad.

    ApexSQL Backup elimina completamente la necesidad de escribir scripts T-SQL y programar trabajos de SQL Server Agent. Utiliza un asistente fácil de seguir que guía al usuario a través del proceso de crear procesos de respaldo y restauración. Adicionalmente, permite la creación de políticas de copias de seguridad que pueden ser aplicadas a múltiples bases de datos y servidores al mismo tiempo.

    Para realizar una copia de seguridad cifrada en ApexSQL Backup:

    1. Desde la pestaña Home seleccione la opción Backup

    2. En la página Database de Backup wizard, seleccione el servidor y la base de datos a respaldar:

    3. En la página Type an output establezca el destino y personalice un nombre para la copia de seguridad:

    4. En la página Options, seleccione la opción Encrypt backup y establezca el algoritmo de cifrado, Encryptor type (certificado o clave asimétrica) y Encryptor name (nombre del Certificado previamente creado):

    5. En la página Schedule ApexSQL Backup ofrece una opción para crear un programa de respaldo o ejecutar el comando inmediatamente, así como la opción para enviar una notificación de correo electrónico en caso de éxito o fallo:

    6. Para el propósito del artículo, hemos ejecutado el comando inmediatamente para mesurar el tiempo transcurrido:

    7. Restaurar una copia de seguridad cifrada SQL Server en ApexSQL Backup

      ApexSQL Backup ofrece una restauración de copias de seguridad instantánea y automática.

      Para restaurar una copia de seguridad cifrada en ApexSQL Backup:

      1. Desde la pestaña Home, seleccione la opción Restore

      2. En la página Destination de Restore wizard selecciona un servidor destino y una base de datos:

      3. En la página Source ApexSQL Backup ofrece la opción Specific backup file usando el asistente de carpetas amigable en adición a la opción Folder scan estándar:

      4. En la página Options seleccione las carpetas de datos para datos y archivos de registros y elija realizar la verificación después de restaurar si es requerido:

      5. La página Schedule ofrece una opción para crear un programa de restauración o para ejecutar el comando inmediatamente, así como la opción de enviar una notificación de correo electrónico en caso de éxito o fallo, lo mismo que el asistente Backup.

      Recursos útiles:

      Encryption Hierarchy
      Backup Encryption
      SQL Server Confidential – Part II – SQL Server Cryptographic Features

      Traductor: Daniel Calbimonte

      agosto 23, 2016