Compartir por


CREATE DATABASE ENCRYPTION KEY (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance Analytics Platform System (PDW)

Crea una clave de cifrado que se utiliza para cifrar de forma transparente una base de datos. Para obtener más información sobre el cifrado de datos transparente (TDE), consulte Cifrado de datos transparente (TDE).

Convenciones de sintaxis de Transact-SQL

Sintaxis

-- Syntax for SQL Server  

CREATE DATABASE ENCRYPTION KEY  
       WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }  
   ENCRYPTION BY SERVER   
    {  
        CERTIFICATE Encryptor_Name |  
        ASYMMETRIC KEY Encryptor_Name  
    }  
[ ; ]  
-- Syntax for Parallel Data Warehouse  

CREATE DATABASE ENCRYPTION KEY  
       WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }  
   ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name   
[ ; ]  

Argumentos

WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
Especifica el algoritmo de cifrado utilizado para la clave de cifrado.

Advertencia

A partir de SQL Server 2016, todos los algoritmos están en desuso, excepto AES_128, AES_192 y AES_256. Para usar algoritmos anteriores (no se recomienda), debe establecer la base de datos en el nivel de compatibilidad de base de datos 120 o inferior.

ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name
Especifica el nombre del sistema de cifrado utilizado para cifrar la clave de cifrado.

ENCRYPTION BY SERVER ASYMMETRIC KEY Encryptor_Name
Especifica el nombre de la clave asimétrica que se usa para cifrar la clave de cifrado de base de datos. Para cifrar la clave de cifrado de la base de datos con una clave asimétrica, la clave asimétrica debe residir en un proveedor extensible de administración de claves.

Comentarios

Se requiere una clave de cifrado de base de datos para que una base de datos se pueda cifrar mediante el cifrado de datos transparente (TDE). Cuando se cifra una base de datos de forma transparente, toda la base de datos se cifra en el nivel de archivo, sin ninguna modificación especial de código. El certificado o la clave asimétrica que se usa para cifrar la clave de cifrado de base de datos se debe ubicar en la base de datos maestra del sistema.

Los certificados o claves asimétricas que se usan para TDE tienen un límite de tamaño de clave privada de 3072 bits.

Las instrucciones de cifrado de la base de datos se permiten únicamente en bases de datos de usuario.

La clave de cifrado de la base de datos no se puede exportar de la base de datos. Solo está disponible para el sistema, para los usuarios que tienen los permisos de depuración en el servidor y para los usuarios que tienen acceso a los certificados que cifran y descifran la clave de cifrado de la base de datos.

La clave de cifrado de base de datos no tiene que regenerarse cuando se cambia el propietario de la base de datos (dbo).

Una clave de cifrado de base de datos se crea automáticamente para una base de datos de SQL Database. No es necesario crear una clave mediante la instrucción CREATE DATABASE ENCRYPTION KEY.

Permisos

Requiere el permiso CONTROL en la base de datos y el permiso VIEW DEFINITION en el certificado o la clave asimétrica utilizados para cifrar la clave de cifrado de base de datos.

Ejemplos

Para obtener más ejemplos con TDE, vea Cifrado de datos transparente (TDE), Habilitar TDE en SQL Server con EKM y Administración extensible de claves con Azure Key Vault (SQL Server).

En el siguiente ejemplo se crea una clave de cifrado de base de datos mediante el algoritmo AES_256 y se protege la clave privada con un certificado denominado MyServerCert.

USE AdventureWorks2022;  
GO  
CREATE DATABASE ENCRYPTION KEY  
WITH ALGORITHM = AES_256  
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;  
GO  

Consulte también

Cifrado de datos transparente (TDE)
Cifrado de SQL Server
SQL Server y claves de cifrado de base de datos (motor de base de datos)
Jerarquía de cifrado
Opciones de ALTER DATABASE SET (Transact-SQL)
ALTER DATABASE ENCRYPTION KEY (Transact-SQL)
DROP DATABASE ENCRYPTION KEY (Transact-SQL)
sys.dm_database_encryption_keys (Transact-SQL)