Compartir a través de


Cifrado de datos transparente

Puede tomar varias precauciones para ayudar a proteger la base de datos, como diseñar un sistema seguro, cifrar los recursos confidenciales e instalar un firewall alrededor de los servidores de base de datos. Pero para un escenario en que se roban medios físicos (como unidades o cintas de copias de seguridad), un tercero malintencionado puede restaurar o asociar la base de datos y examinar los datos. Una solución consiste en cifrar los datos confidenciales en la base de datos y usar un certificado para proteger las claves que se utilizan para cifrarlos. Esto evita que utilice los datos cualquiera que carezca de las claves, pero este tipo de protección debe planearse de antemano.

El cifrado de datos transparente (TDE) realiza el cifrado y descifrado de E/S en tiempo real de los datos, los archivos de registro de transacción y los archivos de registro de PDW especiales. El cifrado usa una clave de cifrado de base de datos (DEK), que se almacena en el registro de arranque de la base de datos de disponibilidad durante la recuperación. DEK es una clave simétrica protegida mediante un certificado almacenado en la base de datos maestra de SQL Server PDW. TDE protege los datos "en reposo", es decir, los archivos de datos y de registro. Ofrece la posibilidad de cumplir muchas leyes, normativas y directrices establecidas en diversos sectores. Esta característica permite a los desarrolladores de software cifrar los datos mediante algoritmos de cifrado AES y 3DES sin cambiar las aplicaciones existentes.

Importante

TDE no proporciona cifrado para los datos que viajan entre el cliente y el PDW. Para obtener más información sobre cómo cifrar datos entre el cliente y SQL Server PDW, consulte Aprovisionamiento de un certificado.

TDE no cifra los datos mientras se mueven o están en uso. El tráfico interno entre los componentes de PDW dentro de SQL Server PDW no está cifrado. Los datos almacenados temporalmente en búferes de memoria no se cifran. Para mitigar este riesgo, controle el acceso físico y las conexiones a SQL Server PDW.

Una vez protegida, la base de datos puede restaurarse utilizando el certificado correcto.

Nota:

Al crear un certificado para TDE, debe realizar una copia de seguridad inmediata, junto con la clave privada asociada. Si el certificado no está disponible en algún momento o si debe restaurar o adjuntar la base de datos en otro servidor, debe tener copias de seguridad del certificado y la clave privada o no podrá abrir la base de datos. El cifrado del certificado se debería conservar aun cuando TDE deje de estar habilitado en la base de datos. Aunque la base de datos no se cifre, algunas partes del registro de transacciones pueden seguir estando protegidas y se puede necesitar el certificado para algunas operaciones hasta que se realice la copia de seguridad completa de la base de datos. Un certificado que ha excedido su fecha de expiración se puede seguir usando para cifrar y descifrar datos con TDE.

El cifrado del archivo de base de datos se realiza en el nivel de página. Las páginas de una base de datos cifrada se cifran antes de escribirse en el disco y se descifran cuando se leen en la memoria. TDE no aumenta el tamaño de la base de datos cifrada.

En la siguiente ilustración se muestra la jerarquía de claves del cifrado TDE:

Displays the hierarchy

Uso del cifrado de datos transparente

Para usar TDE, siga estos pasos. Los tres primeros pasos solo se realizan una vez, al preparar SQL Server PDW para admitir TDE.

  1. Creación de una clave maestra en la base de datos maestra.

  2. Use sp_pdw_database_encryption para habilitar TDE en SQL Server PDW. Esta operación modifica las bases de datos temporales para garantizar la protección de los datos temporales futuros y generará un error si se intenta cuando haya sesiones activas que tengan tablas temporales. sp_pdw_database_encryption activa el enmascaramiento de datos de usuario en los registros del sistema de PDW. (Para obtener más información sobre el enmascaramiento de datos de usuario en los registros del sistema de PDW, consulte sp_pdw_log_user_data_masking).

  3. Use sp_pdw_add_network_credentials para crear una credencial que pueda autenticarse y escribir en el recurso compartido donde se almacenará la copia de seguridad del certificado. Si ya existe una credencial para el servidor de almacenamiento previsto, puede usar la credencial existente.

  4. En la base de datos maestra, cree un certificado protegido por la clave maestra.

  5. Realice una copia de seguridad del certificado en el recurso compartido de almacenamiento.

  6. En la base de datos de usuario, cree una clave de cifrado de base de datos y protéjala por el certificado almacenado en la base de datos maestra.

  7. Use la instrucción ALTER DATABASE para cifrar la base de datos mediante TDE.

En el ejemplo siguiente se muestra cómo descifrar la base de datos AdventureWorksPDW2012 mediante un certificado denominado MyServerCert, creado en SQL Server PDW.

Primero, habilite TDE en SQL Server PDW. Solo es necesario realizar esta acción una vez.

USE master;  
GO  
  
-- Create a database master key in the master database  
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';  
GO  
  
-- Enable encryption for PDW  
EXEC sp_pdw_database_encryption 1;  
GO  
  
-- Add a credential that can write to the share  
-- A credential created for a backup can be used if you wish  
EXEC sp_pdw_add_network_credentials 'SECURE_SERVER', '<domain>\<Windows_user>', '<password>';  

Posteriormente, cree un certificado de copia de seguridad en la base de datos maestra. Solo es necesario realizar esta acción una vez. Puede tener un certificado independiente para cada base de datos (opción recomendada) o puede proteger varias bases de datos con un certificado.

-- Create certificate in master  
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';  
GO  
  
-- Back up the certificate with private key  
BACKUP CERTIFICATE MyServerCert   
    TO FILE = '\\SECURE_SERVER\cert\MyServerCert.cer'  
    WITH PRIVATE KEY   
    (   
        FILE = '\\SECURE_SERVER\cert\MyServerCert.key',  
        ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>'   
    )   
GO  

Por último, cree la DEK y use ALTER DATABASE para cifrar una base de datos de usuario. Esta acción se repite para cada base de datos protegida por TDE.

USE AdventureWorksPDW2012;  
GO  
  
CREATE DATABASE ENCRYPTION KEY  
WITH ALGORITHM = AES_128  
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;  
GO  
  
ALTER DATABASE AdventureWorksPDW2012 SET ENCRYPTION ON;  
GO  

SQL Server programa las operaciones de cifrado y descifrado en subprocesos que se ejecutan en segundo plano. Puede ver el estado de estas operaciones mediante las vistas de catálogo y las vistas de administración dinámica de la lista que se muestra más adelante en este artículo.

Precaución

Los archivos de copia de seguridad de las bases de datos que tienen habilitado TDE también se cifran mediante la clave de cifrado de la base de datos. Como consecuencia, al restaurar estas copias de seguridad debe estar disponible el certificado que protege la clave de cifrado de la base de datos. Esto significa que, además de hacer copias de seguridad de la base de datos, tiene que asegurarse de que mantiene copias de seguridad de los certificados del servidor para evitar la pérdida de datos. Si el certificado deja de estar disponible, perderá los datos.

Comandos y funciones

Para que puedan ser aceptados por las instrucciones siguientes, los certificados de TDE deben cifrarse con la clave maestra de la base de datos.

En la tabla siguiente se proporcionan vínculos y explicaciones de los comandos y funciones de TDE.

Comando o función Propósito
CREATE DATABASE ENCRYPTION KEY Crea una clave que se utiliza para cifrar una base de datos.
ALTER DATABASE ENCRYPTION KEY Cambia la clave que se utiliza para cifrar una base de datos.
DROP DATABASE ENCRYPTION KEY Elimina la clave que se utilizó para cifrar una base de datos.
ALTER DATABASE Explica la opción ALTER DATABASE que se utiliza para habilitar TDE.

Vistas de catálogo y vistas de administración dinámica

En la tabla siguiente se muestran las vistas de catálogo y las vistas de administración dinámica de TDE.

Vista de catálogo o vista de administración dinámica Propósito
sys.databases Vista de catálogo que muestra información sobre las bases de datos.
sys.certificates Vista de catálogo que muestra los certificados de una base de datos.
sys.dm_pdw_nodes_database_encryption_keys Vista de administración dinámica que proporciona información para cada nodo, sobre las claves de cifrado utilizadas en una base de datos y el estado de cifrado de una base de datos.

Permisos

Cada una de las características y comandos de TDE tiene sus propios requisitos de permisos, que se describen en las tablas mostradas anteriormente.

Para ver los metadatos relacionados con TDE, se requiere el permiso CONTROL SERVER.

Consideraciones

Mientras se realiza el examen del proceso de nuevo cifrado para una operación de cifrado de base de datos, las operaciones de mantenimiento de la base de datos están deshabilitadas.

Puede encontrar el estado del cifrado de la base de datos utilizando la vista de administración dinámica sys.dm_database_encryption_keys. Para obtener más información, consulte la sección Vistas de catálogo y vistas de administración dinámica, anteriormente en este artículo.

Restricciones

No se permiten las siguientes operaciones durante las instrucciones CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY o ALTER DATABASE...SET ENCRYPTION.

  • Eliminar la base de datos.

  • Usar un comando ALTER DATABASE.

  • Iniciar una copia de seguridad de base de datos.

  • Iniciar una restauración de base de datos.

Las siguientes operaciones o condiciones impedirán las instrucciones CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY o ALTER DATABASE...SET ENCRYPTION.

  • Se está ejecutando un comando ALTER DATABASE.

  • Se está ejecutando cualquier tipo de copia de seguridad de los datos.

Al crear los archivos de base de datos, la inicialización instantánea de archivos no está disponible cuando TDE está habilitado.

Áreas no protegidas por TDE

TDE no protege las tablas externas.

TDE no protege las sesiones de diagnóstico. Los usuarios deben tener cuidado de no consultar con parámetros confidenciales mientras las sesiones de diagnóstico están en uso. Las sesiones de diagnóstico que revelan información confidencial deben eliminarse tan pronto como ya no sean necesarias.

Los datos protegidos por TDE se descifran cuando se colocan en la memoria de SQL Server PDW. Los volcados de memoria se crean cuando se producen ciertos problemas en el dispositivo. Los archivos de volcado de memoria representan el contenido de la memoria en el momento de aparecer el problema y pueden contener datos confidenciales en un formulario sin cifrar. El contenido de los volcados de memoria debe revisarse antes de que se compartan con otros usuarios.

La base de datos maestra no está protegida por TDE. Aunque la base de datos maestra no contiene datos de usuario, contiene información como nombres de inicio de sesión.

El cifrado de datos transparente y los registros de transacciones

Al habilitar una base de datos para utilizar TDE, se pone a cero la parte restante del registro de transacciones virtual para exigir el registro de transacciones virtual siguiente. Esto garantiza que no quede ningún texto sin cifrar en los registros de transacciones una vez configurada la base de datos para el cifrado. Puede encontrar el estado del cifrado del archivo de registro en la columna encryption_state de la vista sys.dm_pdw_nodes_database_encryption_keys, como en este ejemplo:

WITH dek_encryption_state AS   
(  
    SELECT ISNULL(db_map.database_id, dek.database_id) AS database_id, encryption_state  
    FROM sys.dm_pdw_nodes_database_encryption_keys AS dek  
        INNER JOIN sys.pdw_nodes_pdw_physical_databases AS node_db_map  
           ON dek.database_id = node_db_map.database_id AND dek.pdw_node_id = node_db_map.pdw_node_id  
        LEFT JOIN sys.pdw_database_mappings AS db_map  
            ON node_db_map .physical_name = db_map.physical_name  
        INNER JOIN sys.dm_pdw_nodes AS nodes  
            ON nodes.pdw_node_id = dek.pdw_node_id  
    WHERE dek.encryptor_thumbprint <> 0x  
)  
SELECT TOP 1 encryption_state  
       FROM dek_encryption_state  
       WHERE dek_encryption_state.database_id = DB_ID('AdventureWorksPDW2012 ')  
       ORDER BY (CASE encryption_state WHEN 3 THEN -1 ELSE encryption_state END) DESC;  

Todos los datos escritos en el registro de transacciones antes de cambiar la clave de cifrado de la base de datos se cifrarán mediante la clave de cifrado anterior de la base de datos.

Registros de actividad de PDW

SQL Server PDW mantiene un conjunto de registros diseñados para solucionar problemas. (Tenga en cuenta que no se trata del registro de transacciones, el registro de errores de SQL Server o el registro de eventos de Windows). Estos registros de actividad de PDW pueden contener instrucciones completas en texto no cifrado, algunas de las cuales pueden contener datos de usuario. Los ejemplos típicos son instrucciones INSERT y UPDATE. El enmascaramiento de datos de usuario se puede activar o desactivar explícitamente mediante sp_pdw_log_user_data_masking. Al habilitar el cifrado en SQL Server PDW, se activa automáticamente el enmascaramiento de datos de usuario en los registros de actividad de PDW para protegerlos. sp_pdw_log_user_data_masking también se puede usar para enmascarar instrucciones cuando no se usa TDE, pero no se recomienda, porque reduce significativamente la capacidad del equipo de soporte técnico de Microsoft para analizar problemas.

El cifrado de datos transparente y la base de datos del sistema tempdb

La base de datos del sistema tempdb se cifra cuando el cifrado está habilitado mediante sp_pdw_database_encryption. Es necesario para que cualquier base de datos pueda usar TDE. Puede tener un efecto en el rendimiento de las bases de datos no cifradas de la misma instancia de SQL Server PDW.

Administración de claves

La clave de cifrado de base de datos (DEK) está protegida por los certificados almacenados en la base de datos maestra. Estos certificados están protegidos por la clave maestra de base de datos (DMK) de la base de datos maestra. La DMK debe estar protegida por la clave maestra de servicio (SMK) para poder usarse para TDE.

El sistema puede acceder a las claves sin necesidad de intervención humana (por ejemplo, para proporcionar una contraseña). Si el certificado no está disponible, el sistema generará un error que explica que la DEK no se puede descifrar hasta que el certificado adecuado esté disponible.

Al mover una base de datos de un dispositivo a otro, el certificado usado para proteger su DEK debe restaurarse primero en el servidor de destino. A continuación, la base de datos se puede restaurar como de costumbre. Para obtener más información, consulte Mover una base de datos protegida por TDE a otra instancia de SQL Server, en la documentación estándar de SQL Server.

Los certificados usados para cifrar las DEK deben conservarse siempre que haya copias de seguridad de base de datos que las usen. Las copias de seguridad de certificados deben incluir la clave privada del certificado, ya que sin la clave privada no se puede usar un certificado para la restauración de la base de datos. Las copias de seguridad de clave privada del certificado se almacenan en un archivo independiente, protegido por una contraseña que se debe proporcionar para la restauración de certificados.

Restauración de la base de datos maestra

La base de datos maestra se puede restaurar mediante DWConfig, como parte de la recuperación ante desastres.

  • Si el nodo Control no ha cambiado, es decir, si la base de datos maestra se restaura en el mismo dispositivo no modificado desde el que se realizó la copia de seguridad de la base de datos maestra, la DMK y todos los certificados serán legibles sin ninguna acción adicional.

  • Si la base de datos maestra se restaura en un dispositivo diferente o si se ha cambiado el nodo Control desde la copia de seguridad de la base de datos maestra, se necesitarán pasos adicionales para volver a generar la DMK.

    1. Abra la demostración:

      OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>';  
      
    2. Agregue el cifrado por SMK:

      ALTER MASTER KEY   
          ADD ENCRYPTION BY SERVICE MASTER KEY;  
      
    3. Reinicie el dispositivo.

Actualización y reemplazo de máquinas virtuales

Si existe una DMK en el dispositivo en el que se realizó la actualización o el reemplazo de la máquina virtual, la contraseña de DMK debe proporcionarse como parámetro.

Ejemplo de la acción de actualización. Reemplace ********** por la contraseña de DMK.

setup.exe /Action=ProvisionUpgrade ... DMKPassword='**********'

Ejemplo de la acción para reemplazar una máquina virtual.

setup.exe /Action=ReplaceVM ... DMKPassword='**********'

Durante la actualización, si se cifra una base de datos de usuario y no se proporciona la contraseña de DMK, se producirá un error en la acción de actualización. Durante el reemplazo, si no se proporciona la contraseña correcta cuando existe una DMK, la operación omitirá el paso de recuperación de DMK. Todos los demás pasos se completarán al final de la acción de reemplazo de la máquina virtual; sin embargo, la acción notificará un error al final para indicar que se requieren pasos adicionales. En los registros de instalación (ubicados en \ProgramData\Microsoft\Microsoft SQL Server Parallel Data Warehouse\100\Logs\Setup\\<time-stamp>\Detail-Setup), se mostrará la siguiente advertencia, cerca del final.

*** WARNING \*\*\* DMK is detected in master database, but could not be recovered automatically! The DMK password was either not provided or is incorrect!

Ejecute esta instrucción manualmente en el PDW y reinicie el dispositivo posteriormente para recuperar la DMK:

OPEN MASTER KEY DECRYPTION BY PASSWORD = '<DMK password>';  
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;  

Siga los pasos descritos en el párrafo Restauración de la base de datos maestra para recuperar la base de datos y, a continuación, reinicie el dispositivo.

Si la DMK existía antes pero no se recuperó después de la acción, se generará el siguiente mensaje de error cuando se consulte una base de datos.

Msg 110806;  
A distributed query failed: Database '<db_name>' cannot be opened due to inaccessible files or insufficient memory or disk space. See the SQL Server errorlog for details.

Impacto en el rendimiento

El impacto en el rendimiento del cifrado de datos transparente varía según el tipo de datos que tenga, la forma en que se almacenen y el tipo de actividad de la carga de trabajo en SQL Server PDW. Cuando está protegido mediante el cifrado de datos transparente, las operaciones de E/S de lectura y descifrado de datos, o de cifrado y escritura de datos, son actividades de uso intensivo de la CPU y tienen un mayor impacto si se producen otras actividades de uso intensivo de la CPU al mismo tiempo. Dado que TDE cifra tempdb, TDE puede afectar al rendimiento de las bases de datos que no están cifradas. Para obtener una idea precisa del rendimiento, debe probar todo el sistema con los datos y la actividad de consulta.

Los vínculos siguientes contienen información general sobre cómo SQL Server administra el cifrado. Estos artículos pueden ayudarle a comprender el cifrado de SQL Server, pero no tienen información específica de SQL Server PDW y describen características que no están presentes en SQL Server PDW.

Consulte también

ALTER DATABASE
CREATE MASTER KEY
CREATE DATABASE ENCRYPTION KEY
BACKUP CERTIFICATE
sp_pdw_database_encryption
sp_pdw_database_encryption_regenerate_system_keys
sp_pdw_log_user_data_masking
sys.certificates
sys.dm_pdw_nodes_database_encryption_keys