Administración extensible de claves (EKM)

Se aplica a:SQL Server

SQL Server proporciona las funciones del cifrado de datos junto con la Administración extensible de claves (EKM), las cuales usan la API criptográfica de Microsoft (MSCAPI) para el cifrado y generación de clave. Las claves de cifrado utilizadas para cifrar datos y claves se crean en contenedores transitorios de claves y se deben exportar desde un proveedor antes de que se almacenen en la base de datos. Este enfoque permite a llevar a cabo la administración de claves, que incluye una jerarquía de claves de cifrado y la copia de seguridad de las claves administradas por SQL Server.

Con la creciente demanda para cumplir con las leyes y con las políticas de privacidad de datos, las organizaciones están aprovechándose del cifrado como una forma de obtener una solución de "defensa en profundidad". Este enfoque es a menudo poco práctico si solo se utilizan las herramientas de administración del cifrado de base de datos. Los fabricantes de hardware proporcionan productos específicamente diseñados para la administración de claves de la empresa usando Módulos de seguridad por hardware (HSM). Los dispositivos HSM almacenan las claves de cifrado en módulos de hardware o de software. Ésta es una solución más segura porque las claves de cifrado no residen junto a los datos de cifrado.

Varios fabricantes proporcionan HSM tanto para administración de claves como para la aceleración del cifrado. Los dispositivos HSM utilizan interfaces hardware junto con un proceso de servidor que actúan como un intermediario entre la aplicación y HSM. Los fabricantes también implementan proveedores de MSCAPI sobre sus módulos, que pueden ser de tipo hardware o software. A menudo, MSCAPI proporciona solo un subconjunto de la funcionalidad que ofrece HSM. Los fabricantes también pueden proporcionar el software de administración para HSM, configuración de claves y acceso a claves.

Las implementaciones de HSM varían de un fabricante a otro y para poder utilizarlas con SQL Server es necesaria una interfaz común. Aunque MSCAPI proporciona esta interfaz, admite solo un subconjunto de las características de HSM. También tiene otras limitaciones, como la incapacidad para conservar de forma nativa las claves simétricas o la falta de compatibilidad orientada a sesiones.

La Administración extensible de claves de SQL Server permite a los fabricantes de EKM/HSM registrar sus módulos en SQL Server. Cuando se registran, los usuarios de SQL Server pueden utilizar las claves de cifrado almacenadas en los módulos EKM. Esto permite a SQL Server obtener acceso a las características de cifrado avanzadas que admiten estos módulos, como el cifrado y descifrado masivo, o las funciones de administración de claves, como el vencimiento o la rotación de claves.

Al ejecutar SQL Server en una máquina virtual de Azure, SQL Server puede usar claves almacenadas en Azure Key Vault. Para más información, vea Administración extensible de claves con el Almacén de claves de Azure (SQL Server).

Configuración de EKM

La Administración extensible de claves no está disponible en todas las ediciones de Microsoft SQL Server. Para obtener una lista de las características admitidas por las ediciones de SQL Server, vea Características compatibles con las ediciones de SQL Server 2016.

De forma predeterminada, la Administración extensible de claves está desactivada. Para habilitar esta característica, utilice el comando sp_configure, que tiene la siguiente opción y valor, tal y como se muestra en el ejemplo siguiente:

sp_configure 'show advanced', 1  
GO  
RECONFIGURE  
GO  
sp_configure 'EKM provider enabled', 1  
GO  
RECONFIGURE  
GO  

Nota:

Si usa el comando sp_configure para esta opción en ediciones de SQL Server que no admiten EKM, recibirá un error.

Para deshabilitar la característica, establezca el valor en 0. Para obtener más información sobre cómo establecer las opciones de servidor, vea sp_configure (Transact-SQL).

Cómo utilizar EKM

La Administración extensible de claves de SQL Server permite que las claves de cifrado que protegen los archivos de base de datos se almacenen en un dispositivo externo, como una tarjeta inteligente, un dispositivo USB o un módulo EKM/HSM. Esto también habilita la protección de datos para los administradores de bases de datos (exceptuando a los miembros del grupo de sysadmin). Los datos se pueden cifrar utilizando claves de cifrado a las que solo tiene acceso el usuario de la base de datos en el módulo EKM/HSM externo.

La Administración extensible de claves también ofrece las siguientes ventajas:

  • Comprobación de la autorización adicional (permitiendo la separación de tareas).

  • Mayor rendimiento en el cifrado o descifrado basado en hardware.

  • Generación de claves de cifrado externas.

  • Almacenamiento externo de la clave de cifrado (separación física de datos y claves).

  • Recuperación de claves de cifrado.

  • Retención de claves de cifrado externas (permite la rotación de claves de cifrado).

  • Recuperación de claves de cifrado más sencilla.

  • Distribución de claves de cifrado más flexible.

  • Disposición de claves de cifrado segura.

Puede utilizar Administración extensible de claves con una combinación de nombre de usuario y contraseña u otros métodos definidos por el controlador EKM.

Precaución

Para solucionar problemas, es posible que el soporte técnico de Microsoft le solicite la clave de cifrado del proveedor de EKM. También podría necesitar tener acceso a las herramientas o procesos del fabricante para resolver el problema.

Autenticación con un dispositivo EKM

Un módulo EKM puede admitir más de un tipo de autenticación. Cada proveedor propone únicamente un tipo de autenticación en SQL Server, es decir, si el módulo admite los tipos de autenticación básica u otros, propondrá uno u otro, pero no ambos.

Autenticación básica específica del dispositivo EKM utilizando el nombre de usuario y contraseña

Para aquellos módulos EKM que admitan la autenticación básica usando una combinación de username/password, SQL Server proporciona una autenticación transparente por medio de credenciales. Para obtener más información sobre las credenciales, vea Credenciales (motor de base de datos).

Se puede crear una credencial para un proveedor de EKM y asignarse a un inicio de sesión (tanto para cuentas Windows como para cuentas de SQL Server) con el fin de obtener acceso a un módulo EKM en base a un inicio de sesión. El campo identity de la credencial contiene el nombre de usuario; el campo secret contiene una contraseña para conectar con un módulo EKM.

Si no hay ninguna credencial de inicio de sesión asignada para el proveedor EKM, se usa la credencial asignada a la cuenta de servicio de SQL Server.

Un inicio de sesión puede tener varias credenciales asignadas a él, siempre y cuando se utilicen para proveedores de EKM distintos. Solo debe haber una credencial asignada por cada EKM y por cada inicio de sesión. La misma credencial puede estar asignada a otros inicios de sesión.

Otros tipos de autenticación específicas del dispositivo EKM

Para aquellos módulos EKM que usan una autenticación que no sea la Windows o la de una combinación de nombre de usuario/contraseña, la autenticación se debe realizar independientemente de SQL Server.

Cifrado y descifrado por parte de un dispositivo EKM

Puede utilizar las siguientes funciones y características para cifrar y descifrar datos utilizando claves simétricas y asimétricas:

Función o característica Referencia
Cifrado de claves simétricas CREATE SYMMETRIC KEY (Transact-SQL)
Cifrado de claves asimétricas CREATE ASYMMETRIC KEY (Transact-SQL)
EncryptByKey(key_guid, "texto_no_cifrado", ...) ENCRYPTBYKEY (Transact-SQL)
DecryptByKey(texto_cifrado, ...) DECRYPTBYKEY (Transact-SQL)
EncryptByAsmKey (key_guid, 'texto no cifrado') ENCRYPTBYASYMKEY (Transact-SQL)
DecryptByAsmKey(texto cifrado) DECRYPTBYASYMKEY (Transact-SQL)

Cifrado de claves de la base de datos mediante claves EKM

SQL Server puede utilizar claves EKM para cifrar otras claves de una base de datos. Puede crear y utilizar tanto claves simétricas como asimétricas en un dispositivo EKM. Puede cifrar claves simétricas nativas (no EKM) con claves asimétricas EKM.

El ejemplo siguiente crea una clave simétrica de la base de datos y la cifra utilizando una clave de un módulo EKM.

CREATE SYMMETRIC KEY Key1  
WITH ALGORITHM = AES_256  
ENCRYPTION BY EKM_AKey1;  
GO  
--Open database key  
OPEN SYMMETRIC KEY Key1  
DECRYPTION BY EKM_AKey1  

Para obtener más información sobre las claves de servidor y de base de datos en SQL Server, vea SQL Server y claves de cifrado de base de datos (motor de base de datos).

Nota:

No puede cifrar una clave EKM con otra clave EKM.

SQL Server no admite la firma de módulos con las claves asimétricas generadas en el proveedor EKM.

EKM provider enabled (opción de configuración del servidor)

Habilitar TDE en SQL Server con EKM

Administración extensible de claves con Azure Key Vault (SQL Server)

Consulte también

CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)
DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL)
ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL)
sys.cryptographic_providers (Transact-SQL)
sys.dm_cryptographic_provider_sessions (Transact-SQL)
sys.dm_cryptographic_provider_properties (Transact-SQL)
sys.dm_cryptographic_provider_algorithms (Transact-SQL)
sys.dm_cryptographic_provider_keys (Transact-SQL)
sys.credentials (Transact-SQL)
CREATE CREDENTIAL (Transact-SQL)
ALTER LOGIN (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
OPEN SYMMETRIC KEY (Transact-SQL)
Hacer copia de seguridad y restaurar claves de cifrado de Reporting Services
Eliminar y volver a crear claves de cifrado (Administrador de configuración de SSRS)
Agregar y quitar claves de cifrado para implementaciones escaladas (Administrador de configuración de SSRS)
Hacer una copia de seguridad de la clave maestra de servicio
Restaurar la clave maestra de servicio
Crear la clave maestra de una base de datos
Hacer copias de seguridad de una clave maestra de una base de datos
Restaurar una clave maestra de base de datos
Crear claves simétricas idénticas en dos servidores