Habilitar TDE con EKM

El cifrado de datos transparente (TDE) cifra el almacenamiento de una base de datos completa. TDE cifra los datos utilizando una clave simétrica conocida como clave de cifrado de base de datos. En este tema se describe cómo proteger la clave de cifrado de base de datos utilizando una clave asimétrica almacenada en un módulo de administración de claves (EKM) extensible.

La clave de cifrado de base de datos también se puede proteger utilizando un certificado que se protege mediante la clave maestra de base de datos de la base de datos maestra. Para obtener más información sobre cómo proteger la clave de cifrado de base de datos utilizando la clave maestra de base de datos, vea Descripción del Cifrado de datos transparente (TDE).

Los pasos básicos para habilitar TDE mediante un EKM son:

  1. Instale un proveedor EKM. Los procedimientos para este paso variarán en función de los requisitos del proveedor EKM, pero podrían incluir la instalación de un certificado del proveedor EKM en el almacén de certificados local y la copia de los archivos DLL del EKM en el equipo de SQL Server.

  2. Configure SQL Server para que se use el proveedor EKM.

  3. Si el módulo EKM utiliza la autenticación básica, cree una credencial y agréguela a un usuario.

  4. Cree una clave asimétrica protegida por el proveedor EKM.

  5. Si el módulo EKM utiliza la autenticación básica, cree una credencial protegida por la clave asimétrica para que la use el Motor de base de datos.

  6. Cree una clave de cifrado de base de datos simétrica.

  7. Habilite TDE con la clave de cifrado de base de datos.

Para completar los pasos de este tema, conéctese a SQL Server utilizando una ventana del Editor de consultas en SQL Server Management Studio.

Para instalar y configurar el proveedor de servicios criptográficos

  1. Copie los archivos proporcionados por el proveedor EKM a una ubicación adecuada en el equipo de SQL Server. En este ejemplo utilizamos la carpeta C:\EKM.

  2. Instale los certificados en el equipo tal y como requiera el proveedor EKM.

    Nota

    SQL Server no proporciona un proveedor EKM. Cada proveedor EKM puede tener procedimientos diferentes para instalar, configurar y autorizar a los usuarios. Consulte la documentación del proveedor EKM para completar este paso.

Para configurar SQL Server de modo que se use un proveedor EKM y crear el proveedor en SQL Server

  1. Habilitar un proveedor EKM es una opción avanzada. Primero, ejecute las instrucciones siguientes para mostrar las opciones avanzadas.

    sp_configure 'show advanced options', 1 ;
    GO
    RECONFIGURE ;
    GO
    
  2. Ejecute la instrucción siguiente para habilitar los proveedores EKM:

    sp_configure 'EKM provider enabled', 1 ;
    GO
    RECONFIGURE ;
    GO
    
  3. Ejecute la instrucción siguiente para crear un proveedor de servicios criptográficos, que hemos decidido denominar EKM_Prov, basado en un proveedor EKM:

    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov 
    FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ;
    GO
    

    Nota

    La DLL EKM debe estar firmada digitalmente.

Crear una credencial que se usa para cifrar la base de datos

Debe ser un usuario con muchos privilegios (como un administrador del sistema) para crear una clave de cifrado de base de datos y cifrar una base de datos. Ese usuario debe poder ser autenticado por el módulo EKM. El procedimiento siguiente crea una credencial que utiliza la identidad EKM y la agrega a un usuario con muchos privilegios. Los procedimientos siguientes suponen que el módulo EKM puede autenticar a un usuario denominado 'Identity1'. Se debería proporcionar una contraseña en lugar de los asteriscos que se muestran aquí. Estos pasos se requieren cuando el proveedor EKM utiliza la autenticación básica, pero los pasos de esta sección pueden omitirse cuando el módulo EKM use otra autenticación.

Para crear una credencial y agregarla al inicio de sesión de un usuario con muchos privilegios

  1. Ejecute la instrucción siguiente para crear una credencial que vayan a usar los administradores del sistema:

    CREATE CREDENTIAL sa_ekm_tde_cred 
    WITH IDENTITY = 'Identity1', 
    SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    GO
    
  2. Ejecute la instrucción siguiente para agregar la credencial del administrador del sistema a un usuario con muchos privilegios como su propio inicio de sesión del dominio en el formato [DOMAIN\login]:

    ALTER LOGIN [DOMAIN\login]
    ADD CREDENTIAL sa_ekm_tde_cred ;
    GO
    

Crear una clave asimétrica

Cree una clave asimétrica para proteger el acceso a la clave de cifrado de base de datos. SQL Server utiliza esta clave para tener acceso a la clave de cifrado de base de datos.

Para crear una clave de cifrado de base de datos

  • Ejecute la instrucción siguiente para crear una clave asimétrica almacenada dentro del proveedor EKM. En este ejemplo, SQL Server identificarán la clave por el nombre ekm_login_key. Dentro del dispositivo EKM, la clave tendrá el nombre SQL_Server_Key.

    Nota

    Las opciones y parámetros requeridos por el proveedor EKM pueden diferir de esta instrucción. Para obtener más información, consulte al proveedor de EKM.

    USE master ;
    GO
    CREATE ASYMMETRIC KEY ekm_login_key 
    FROM PROVIDER [EKM_Prov]
    WITH ALGORITHM = RSA_512,
    PROVIDER_KEY_NAME = 'SQL_Server_Key' ;
    GO
    

    Nota

    Si la clave asimétrica almacenada en el módulo EKM se pierde, SQL Server no podrá abrir la base de datos. Si el proveedor EKM permite hacer una copia de seguridad de la clave asimétrica, debería crear una y almacenarla en una ubicación segura.

Crear una credencial para que la use el motor de base de datos

Tras iniciar, Motor de base de datos debe abrir la base de datos. El procedimiento siguiente crea una credencial que el EKM usará en la autenticación y la agrega a un inicio de sesión que se basa en una clave asimétrica. Los usuarios no pueden iniciar sesión mediante ese inicio de sesión, pero Motor de base de datos podrá autenticarse con el dispositivo EKM. Los procedimientos siguientes suponen que el módulo EKM puede autenticar a un usuario denominado 'Identity2'. Se debería proporcionar una contraseña en lugar de asteriscos. Estos pasos se requieren cuando el proveedor EKM utiliza la autenticación básica, pero los pasos de esta sección pueden omitirse cuando el módulo EKM use otra autenticación.

Para crear las credenciales y agregarlas a los inicios de sesión

  1. Ejecute la instrucción siguiente para crear una credencial que usará el Motor de base de datos:

    CREATE CREDENTIAL ekm_tde_cred 
    WITH IDENTITY = 'Identity2' 
    , SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    
  2. Ejecute la instrucción siguiente para agregar un inicio de sesión utilizado por TDE y agregue la nueva credencial al inicio de sesión:

    CREATE LOGIN EKM_Login 
    FROM ASYMMETRIC KEY ekm_login_key ;
    GO
    
    ALTER LOGIN EKM_Login 
    ADD CREDENTIAL ekm_tde_cred ;
    GO
    

Crear una clave de cifrado de base de datos

La clave de cifrado de base de datos es una clave simétrica. Cree una clave de cifrado de base de datos en la base de datos maestra.

Para crear una clave de cifrado de base de datos

  1. Cambie a la base de datos que se cifrará:

    USE AdventureWorks2008R2 ;
    GO
    
  2. Ejecute el código siguiente para crear la clave de cifrado de la base de datos que se utilizará para TDE:

    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM  = AES_128
    ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ;
    GO
    
  3. Ejecute el código siguiente para modificar la base de datos y habilitar el cifrado transparente de datos:

    ALTER DATABASE AdventureWorks2008R2 
    SET ENCRYPTION ON ;
    GO
    

    La base de datos está almacenada ahora en un formato cifrado.

Seguridad

En este tema se utilizan los permisos siguientes:

  • Para cambiar una opción de configuración y ejecutar la instrucción RECONFIGURE, debe tener el permiso ALTER SETTINGS de nivel de servidor. Los roles fijos de servidor sysadmin y serveradmin tienen el permiso ALTER SETTINGS de forma implícita.

  • Requiere el permiso ALTER ANY CREDENTIAL.

  • Requiere el permiso ALTER ANY LOGIN.

  • Requiere el permiso CREATE ASYMMETRIC KEY.

  • Requiere el permiso CONTROL en la base de datos para cifrarla.