Cifrado de datos transparente (TDE)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

El cifrado de datos transparente (TDE) cifra los archivos de datos de SQL Server, Azure SQL Database y Azure Synapse Analytics. lo que se conoce como cifrado de datos en reposo.

Para ayudar a proteger una base de datos de usuario, puede tomar precauciones como:

  • Diseñar un sistema seguro
  • Cifrar los recursos confidenciales
  • Crear un firewall en torno a los servidores de bases de datos

Sin embargo, una entidad malintencionada que roba medios físicos como unidades o cintas de copia de seguridad puede restaurar o adjuntar la base de datos y examinar sus datos.

Una solución sería cifrar los datos confidenciales en la base de datos y usar un certificado para proteger las claves con las que esos datos se cifran. Esta solución impide que alguien que carezca de las claves use los datos. Este tipo de protección se debe planear de antemano.

TDE realiza el cifrado y descifrado de E/S en tiempo real de los archivos de datos y de registro. Este cifrado usa una clave de cifrado de la base de datos (DEK). El registro de arranque de la base de datos almacena la clave para que esté disponible durante la recuperación. La DEK es una clave simétrica. Está protegido por un certificado que almacena la base de datos del master servidor o mediante una clave asimétrica que protege un módulo EKM.

TDE protege los datos en reposo, que son los archivos de datos y de registro. Permite cumplir muchas leyes, normativas y directrices establecidas en diversos sectores. Esto permite a los desarrolladores de software cifrar datos con algoritmos de cifrado AES y 3DES sin cambiar las aplicaciones existentes.

Nota:

TDE no está disponible para las bases de datos del sistema. No se puede usar para cifrar maestro, modelo o msdb. tempdb se cifra automáticamente cuando una base de datos de usuario habilita TDE, pero no se puede cifrar directamente.

Acerca de TDE

El cifrado de un 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.

Información aplicable a SQL Database

Cuando se usa TDE con Azure SQL Database, SQL Database crea automáticamente el certificado de nivel de servidor almacenado en la master base de datos. Para mover una base de datos de TDE en SQL Database, no es necesario descifrarla para la operación de traslado. Para más información sobre cómo usar TDE con SQL Database, consulte Cifrado de datos transparente para Azure SQL Database.

Información aplicable a SQL Server

Después de proteger una base de datos, puede restaurarla con el certificado correcto que corresponda. Para obtener más información acerca de los certificados, vea SQL Server Certificates and Asymmetric Keys.

Después de habilitar TDE, haga inmediatamente una copia de seguridad del certificado y su clave privada asociada. Si el certificado dejara de estar disponible, o si la base de datos restaura o conecta en otro servidor, necesitará copias de seguridad del certificado y de la clave privada o, de lo contrario, no podrá abrir la base de datos.

Conserve el certificado de cifrado aunque TDE esté deshabilitado en la base de datos. Si bien la base de datos no está cifrada, puede que algunas partes del registro de transacciones sigan protegidas. También puede necesitar el certificado en algunas operaciones hasta que haga una 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.

Jerarquía de cifrado

La API de protección de datos de Windows (DPAPI) se encuentra en la raíz del árbol de cifrado, protege la jerarquía de claves en el nivel de máquina y se usa para proteger la clave maestra de servicio (SMK) para la instancia del servidor de base de datos. SmK protege la clave maestra de base de datos (DMK), que se almacena en el nivel de base de datos de usuario y protege los certificados y las claves asimétricas. Estas claves, a su vez, protegen las claves simétricas, que protegen los datos. TDE usa una jerarquía similar al certificado. Cuando se usa TDE, la DMK y el certificado deben almacenarse en la master base de datos. Se crea una nueva clave, que solo se usa para TDE y se conoce como clave de cifrado de base de datos (DEK) y se almacena en la base de datos de usuario.

En la siguiente ilustración se muestra la arquitectura del cifrado TDE. Solo los elementos de nivel de base de datos (las partes de ALTER DATABASE y la clave de cifrado de base de datos) son configurables por el usuario cuando se usa TDE en SQL Database).

Arquitectura de cifrado de base de datos transparente.

Habilitación de TDE

Para usar TDE, siga estos pasos.

Se aplica a: SQL Server.

  1. Cree una clave maestra.

  2. Cree u obtenga un certificado protegido por la clave maestra.

  3. Cree una clave de cifrado de base de datos y protéjala con el certificado.

  4. Configure la base de datos para que use el cifrado.

En el siguiente ejemplo se muestra cómo cifrar y descifrar la base de datos AdventureWorks2012 con un certificado denominado MyServerCert instalado en el servidor.

USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';
GO
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';
GO
USE AdventureWorks2012;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2012
SET ENCRYPTION ON;
GO

SQL Serverprograma las operaciones de cifrado y descifrado en subprocesos que se ejecutan en segundo plano. Para ver el estado de estas operaciones, use las vistas de catálogo y las vistas de administración dinámica de la tabla 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 TDE habilitado también se cifran con la clave de cifrado de la base de datos. En consecuencia, cuando se restauren estas copias de seguridad, el certificado que protege la clave de cifrado de la base de datos deberá estar disponible. Por lo tanto, además de hacer copias de seguridad de la base de datos, asegúrese de conservar también copias de seguridad de los certificados de servidor. Si los certificados dejan de estar disponible, perderá los datos.

Para obtener más información, consulte SQL Server Certificates and Asymmetric Keys.

Comandos y funciones

Para que en las siguientes instrucciones se acepten certificados TDE, use una clave maestra de base de datos para cifrarlos. Si solamente se cifran con una contraseña, las instrucciones los rechazarán como sistemas de cifrado.

Importante

Si protege los certificados con contraseña después de que TDE los use, la base de datos dejará de estar accesible cuando se reinicie.

En la siguiente tabla encontrará vínculos y explicaciones de los comandos y funciones de TDE:

Comando o función Propósito
CREATE DATABASE ENCRYPTION KEY (Transact-SQL) Crea una clave que cifra una base de datos.
ALTER DATABASE ENCRYPTION KEY (Transact-SQL) Cambia la clave que cifra una base de datos.
DROP DATABASE ENCRYPTION KEY (Transact-SQL) Quita la clave que cifra una base de datos.
Opciones de ALTER DATABASE SET (Transact-SQL) Explica la opción ALTER DATABASE que se usa 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 (Transact-SQL) Vista de catálogo que muestra información sobre las bases de datos
sys.certificates (Transact-SQL) Vista de catálogo que muestra los certificados de una base de datos
sys.dm_database_encryption_keys (Transact-SQL) Vista de administración dinámica que proporciona información sobre las claves de cifrado 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, como se describe en las tablas mostradas anteriormente.

Para ver los metadatos relacionados con TDE, se requiere el permiso VIEW DEFINITION en un certificado.

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 configurar la base de datos en modo de usuario único si quiere realizar la operación de mantenimiento. Para obtener más información, vea Establecer una base de datos en modo de usuario único.

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

En TDE, se cifran todos los archivos y grupos de archivos de una base de datos. Si algún grupo de archivos de una base de datos está marcado como READ ONLY, se producirá un error en la operación de cifrado de la base de datos.

Si una base de datos se usa en una creación de reflejo de la base de datos o en un trasvase de registros, se cifran ambas bases de datos. Las transacciones del registro se cifran cuando se envíen entre ellas.

Importante

Los índices de texto completo se cifran cuando una base de datos esté configurada para cifrarse. Estos índices creados en una versión de SQL Server anterior a SQL Server 2008 se importan a la base de datos con SQL Server 2008 o posterior y se cifran con TDE.

Sugerencia

Para supervisar los cambios en el estado TDE de una base de datos, use SQL Server Audit o SQL Database Auditing. En SQL Server, el seguimiento de TDE se realiza en el grupo de acción de auditoría DATABASE_CHANGE_GROUP, que está en Grupos de acciones y acciones de SQL Server Audit.

Restricciones

Durante el cifrado inicial de la base de datos, un cambio clave o un descifrado de una base de datos no se pueden realizar las siguientes operaciones:

  • Quitar un archivo de un grupo de archivos de una base de datos

  • Quitar una base de datos

  • Dejar sin conexión una base de datos

  • Separar la base de datos.

  • Pasar la base de datos o el grupo de archivos al estado READ ONLY.

Las siguientes operaciones no se permiten durante las CREATE DATABASE ENCRYPTION KEYinstrucciones , ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEYy ALTER DATABASE...SET ENCRYPTION :

  • Quitar un archivo de un grupo de archivos de una base de datos

  • Quitar una base de datos

  • Dejar sin conexión una base de datos

  • Separar la base de datos.

  • Pasar la base de datos o el grupo de archivos al estado READ ONLY.

  • Usar un comando ALTER DATABASE

  • Iniciar una copia de seguridad de base de datos o de archivos de base de datos

  • Iniciar una restauración de base de datos o de archivos de base de datos

  • Crear una instantánea

Las siguientes operaciones o condiciones impiden las CREATE DATABASE ENCRYPTION KEYinstrucciones , ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEYy ALTER DATABASE...SET ENCRYPTION :

  • La base de datos o alguno de sus grupos de archivos son de solo lectura.

  • Se está ejecutando un comando ALTER DATABASE.

  • Se está haciendo una copia de seguridad de los datos.

  • Una base de datos está sin conexión o en restauración.

  • Se está realizando una instantánea.

  • Se están realizando tareas de mantenimiento en la base de datos.

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

Para cifrar una clave de cifrado de la base de datos con una clave asimétrica, la clave asimétrica debe estar en un proveedor extensible de administración de claves.

Examen de TDE

Para habilitar TDE en una base de datos, SQL Server debe realizar un examen de cifrado. Este examen lee cada página de los archivos de datos en el grupo de búferes y, tras ello, vuelve a escribir las páginas cifradas en el disco.

Para proporcionarle más control sobre el examen de cifrado, SQL Server 2019 (15.x) incluye el examen de TDE, que tiene sintaxis de suspensión y reanudación. Así, el examen se puede pausar cuando la carga de trabajo del sistema sea muy intensa o durante las horas críticas del negocio y reanudarlo más adelante.

Use la siguiente sintaxis para poner en pausa el análisis de cifrado TDE:

ALTER DATABASE <db_name> SET ENCRYPTION SUSPEND;

De igual modo, use la siguiente sintaxis para reanudarlo:

ALTER DATABASE <db_name> SET ENCRYPTION RESUME;

La columna encryption_scan_state se ha agregado a la sys.dm_database_encryption_keys vista de administración dinámica. En ella se muestra el estado actual del examen de cifrado. También hay una columna nueva llamada encryption_scan_modify_date que contiene la fecha y la hora del último cambio de estado del examen de cifrado.

Si la instancia de SQL Server se reinicia mientras se suspende su examen de cifrado, se registra un mensaje en el registro de errores durante el inicio. El mensaje indica que un examen existente está en pausa.

Importante

La característica de examen de TDE Suspender y reanudar no está disponible actualmente en Azure SQL Database, Azure SQL Managed Instance y Azure Synapse Analytics.

TDE y los registros de transacciones

Al permitir que una base de datos use TDE, se quita la parte restante del registro de transacciones virtual actual. Esta eliminación fuerza la creación del siguiente registro de transacciones. Este comportamiento procura que no quede ningún texto sin cifrar en los registros una vez configurada la base de datos para el cifrado.

Para ver el estado del cifrado del archivo de registro, consulte la columna encryption_state de la vista sys.dm_database_encryption_keys, como en este ejemplo:

USE AdventureWorks2012;
GO
/* The value 3 represents an encrypted state
   on the database and transaction logs. */
SELECT *
FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;
GO

Para obtener más información sobre la arquitectura de los archivos de registro de SQL Server, vea El registro de transacciones (SQL Server).

Antes de que una clave de cifrado de base de datos cambie, la clave de cifrado de base de datos anterior cifrará todos los datos escritos en el registro de transacciones.

Si cambia una clave de cifrado de base de datos dos veces, debe hacer una copia de seguridad de los registros para poder volver a cambiarla.

TDE y la base de datos del tempdb sistema

La tempdb base de datos del sistema se cifra si se cifra cualquier otra base de datos de la instancia de SQL Server mediante TDE. Este cifrado podría tener un efecto en el rendimiento de las bases de datos no cifradas de la misma instancia de SQL Server. Para obtener más información sobre la base de datos del tempdb sistema, consulte tempdb Database.

TDE y la replicación

La replicación no replica automáticamente los datos de una base de datos habilitada para TDE en un formato cifrado. Habilite TDE por separado si quiere proteger las bases de datos de suscriptor y de distribución.

La replicación de instantáneas puede almacenar datos en archivos intermedios sin cifrar, como archivos BCP, como también lo hace la distribución de datos inicial para la replicación transaccional y de mezcla. Durante dicha replicación, se puede habilitar el cifrado para proteger el canal de comunicación.

Para obtener más información, vea Habilitar conexiones cifradas en el motor de base de datos (Administrador de configuración de SQL Server).

TDE y grupos de disponibilidad

Puede agregar una base de datos cifrada a un grupo de disponibilidad.

Para cifrar las bases de datos que forman parte de un grupo de disponibilidad, cree la clave maestra y los certificados, o bien la clave asimétrica (EKM) en todas las réplicas secundarias antes de crear la clave de cifrado de base de datos en la réplica principal.

Si se usa un certificado para proteger la clave de cifrado de base de datos (DEK), realice una copia de seguridad del certificado en la réplica principal y, después, cree el certificado desde un archivo en todas las réplicas secundarias antes de crear la clave de cifrado de base de datos en la réplica principal.

TDE y los datos FILESTREAM

Los datos FILESTREAM no se cifran ni siquiera cuando TDE se habilita.

TDE y copias de seguridad

Los certificados se usan normalmente en cifrado de datos transparente para proteger la clave de cifrado de base de datos (DEK). El certificado debe crearse en la master base de datos. 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 resultado, al restaurar a partir de estas copias de seguridad, el certificado que protege la clave de cifrado de base de datos debe estar disponible. Esto significa que, además de realizar una copia de seguridad de la base de datos, debe mantener copias de seguridad de los certificados de servidor para evitar la pérdida de datos. Si el certificado deja de estar disponible, perderá los datos.

Eliminación de TDE

Use la instrucción ALTER DATABASE para quitar el cifrado de la base de datos.

ALTER DATABASE <db_name> SET ENCRYPTION OFF;

Para ver el estado de la base de datos, use la vista de administración dinámica sys.dm_database_encryption_keys.

Espere a que finalice el descifrado antes de quitar la clave de cifrado de la base de datos mediante DROP DATABASE ENCRYPTION KEY.

Importante

Realice una copia de seguridad de la clave maestra y el certificado que se usan para TDE en una ubicación segura. La clave maestra y el certificado son necesarios para restaurar las copias de seguridad que se han realizado al cifrar la base de datos con TDE. Después de quitar la clave de cifrado de base de datos, realice una copia de seguridad de registros seguida de una nueva copia de seguridad completa de la base de datos descifrada.

TDE y la extensión del grupo de búferes

Cuando una base de datos se cifra con TDE, los archivos relacionados con la extensión del grupo de búferes (BPE) no se cifran. Con esos archivos, use herramientas de cifrado como BitLocker o EFS en el nivel del sistema de archivos.

TDE y OLTP en memoria

TDE se puede habilitar en una base de datos que tenga objetos de OLTP en memoria. En SQL Server 2016 (13.x) y Azure SQL Database, los datos y registros de OLTP en memoria se cifran si TDE está habilitado. En SQL Server 2014 (12.x), los registros de OLTP en memoria se cifran si TDE está habilitado, pero no los archivos del grupo de archivos MEMORY_OPTIMIZED_DATA.

Directrices sobre la administración de certificados usados en TDE

La copia de seguridad del certificado y la clave maestra de base de datos es necesaria cuando la base de datos está habilitada para TDE y se usa en trasvase de registros o creación de reflejo de la base de datos.

También es importante recordar que el certificado usado para proteger la clave de cifrado de base de datos nunca debe quitarse de la master base de datos. Si lo hace, la base de datos cifrada dejará de estar accesible.

Se genera un mensaje de advertencia como el siguiente después de ejecutar si Create Database Encryption Key el certificado usado en el comando aún no se ha realizado una copia de seguridad.

No se ha realizado una copia de seguridad del certificado usado para cifrar la clave de cifrado de base de datos. Debería hacer inmediatamente una copia de seguridad del certificado y de la clave privada asociada con el certificado. Si el certificado deja de estar disponible 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.

La consulta siguiente se puede usar para identificar los certificados usados en TDE que no se han realizado copias de seguridad desde el momento en que se creó.

SELECT pvt_key_last_backup_date,
    Db_name(dek.database_id) AS encrypteddatabase ,c.name AS Certificate_Name
FROM sys.certificates c
    INNER JOIN sys.dm_database_encryption_keys dek
    ON c.thumbprint = dek.encryptor_thumbprint

Si la columna pvt_key_last_backup_date es NULL, la base de datos correspondiente a esa fila se ha habilitado para TDE, pero no se ha realizado una copia de seguridad del certificado usado para proteger su DEK. Para obtener más información sobre la copia de seguridad de un certificado, consulte BACKUP CERTIFICATE en SQL Server Libros en pantalla.

Consulte también