Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El conector de SQL Server para Microsoft Azure Key Vault permite que el cifrado de SQL Server aproveche el servicio Azure Key Vault como un proveedor de administración extensible de claves (EKM) de para proteger sus claves de cifrado.
Incluido en este tema:
Los usos de EKM
paso 1: Configuración del almacén de claves para su uso por parte de SQL Server
Paso 3: Configurar SQL Server para usar un proveedor EKM para el almacén de claves de Key Vault
ejemplo A: Cifrado de datos transparente mediante una clave asimétrica del de Key Vault
Ejemplo B: Cifrado de copias de seguridad utilizando una clave asimétrica del Key Vault.
ejemplo C: Cifrado de nivel de columna mediante una clave asimétrica del almacén de claves
Usos de EKM
Una organización puede usar el cifrado de SQL Server para proteger los datos confidenciales. El cifrado de SQL Server incluye cifrado de datos transparente (TDE), cifrado de nivel de columna (CLE) y cifrado de copia de seguridad. En todos estos casos, los datos se cifran mediante una clave de cifrado de datos simétrica. La clave de cifrado de datos simétricas se protege aún más mediante el cifrado con una jerarquía de claves almacenadas en SQL Server. Como alternativa, la arquitectura del proveedor EKM permite a SQL Server proteger las claves de cifrado de datos mediante una clave asimétrica almacenada fuera de SQL Server en un proveedor criptográfico externo. El uso de la arquitectura del proveedor EKM agrega una capa adicional de seguridad y permite a las organizaciones separar la administración de claves y datos.
El conector de SQL Server para Azure Key Vault permite a SQL Server aprovechar el servicio escalable, de alto rendimiento y de almacén de claves de alta disponibilidad como proveedor EKM para la protección de claves de cifrado. El servicio key vault se puede usar con instalaciones de SQL Server en Microsoft Azure Virtual Machines y para servidores locales. El servicio key vault también proporciona la opción de usar módulos de seguridad de hardware (HSM) estrechamente controlados y supervisados para un mayor nivel de protección para las claves de cifrado asimétricas. Para obtener más información sobre Azure Key Vault, consulte Azure Key Vault.
En la imagen siguiente se resume el flujo de trabajo de EKM mediante el almacén de claves. Los números de los pasos del proceso en la imagen no están diseñados para coincidir con los números de los pasos de instalación que aparecen después de la imagen.
Paso 1: Configuración del almacén de claves para su uso por PARTE de SQL Server
Siga estos pasos para configurar un almacén de claves para usarlo con el motor de base de datos de SQL Server para la protección de claves de cifrado. Es posible que una bóveda ya esté en uso para la organización. Cuando no existe un almacén, el administrador de Azure de su organización designado para administrar claves de cifrado puede crear un almacén, generar una clave asimétrica en el almacén y, a continuación, autorizar a SQL Server a usar la clave. Para familiarizarse con el servicio Azure Key Vault, revise Introducción a Azure Key Vaulty la referencia de Azure Key Vault Cmdlets de PowerShell .
Importante
Si tiene varias suscripciones de Azure, debe usar la suscripción que contiene SQL Server.
Crear un almacén: Cree un almacén siguiendo las instrucciones de la sección Crear un almacén de claves de Introducción a Azure Key Vault. Registre el nombre de la bóveda. En este tema se usa ContosoKeyVault como nombre del almacén de claves.
Generar una clave asimétrica en el almacén: La clave asimétrica del almacén de claves se usa para proteger las claves de cifrado de SQL Server. Solo la clave pública del par asimétrico deja el almacén; el almacén nunca exporta la clave privada. Todas las operaciones criptográficas que usan la clave asimétrica se delegan en Azure Key Vault y están protegidas por la seguridad del almacén de claves.
Hay varias maneras de generar una clave asimétrica y almacenarla en la bóveda. Puede generar externamente una clave e importar la clave en la bóveda como un archivo .pfx. O bien, cree la clave directamente en la bóveda mediante las API de la bóveda de claves.
El conector de SQL Server requiere que las claves asimétricas sean RSA de 2048 bits y el nombre de clave solo puede usar los caracteres "a-z", "A-Z", "0-9" y "-". En este documento, el nombre de la clave asimétrica se conoce como ContosoMasterKey. Reemplace esto por el nombre único que use para la clave.
Importante
La importación de la clave asimétrica es muy recomendable para escenarios de producción, ya que permite al administrador custodiar la clave en un sistema de custodia de claves. Si la clave asimétrica se crea en el almacén, no se puede poner en depósito porque la clave privada nunca puede salir del almacén. Las claves usadas para proteger los datos críticos deben ser depositadas en custodia. La pérdida de una clave asimétrica dará lugar a datos irrecuperables permanentemente.
Importante
El almacén de claves admite varias versiones de la misma clave con nombre. Las claves que va a usar el conector de SQL Server no deben versionarse ni rotarse. Si el administrador quiere rotar la clave utilizada para el cifrado de SQL Server, se debe crear una nueva clave con un nombre diferente en la bóveda y usarla para cifrar la DEK.
Para más información sobre cómo importar una clave en el almacén de claves o crear una clave en el almacén de claves (no se recomienda para un entorno de producción), consulte la sección Incorporación de una clave o un secreto al almacén de claves en Introducción a Azure Key Vault.
Obtener entidades de servicio de Azure Active Directory para usar con SQL Server: Cuando la organización se suscribe a un servicio en la nube de Microsoft, obtiene Azure Active Directory. Cree principales de servicio en Azure Active Directory para en SQL Server, que se usen (para autenticarse en Azure Active Directory) al acceder al almacén de claves.
Un administrador de SQL Server necesitará una entidad de servicio para acceder a la bóveda al configurar SQL Server para usar el cifrado.
El motor de base de datos de SQL Server necesitará otra entidad de servicio para obtener acceso a la bóveda para desenvolver las claves usadas en el cifrado de SQL Server.
Para más información sobre cómo registrar una aplicación y generar una entidad de servicio, consulte la sección Registro de una aplicación con Azure Active Directory en Introducción a Azure Key Vault. El proceso de registro devuelve un ID de aplicación (también conocido como ID de cliente ) y una clave de autenticación (también conocida como secreto ) para cada Principal de Servicio de Azure Active Directory . Cuando se usa en la instrucción
CREATE CREDENTIAL, el guión debe quitarse del identificador de cliente de . Registre estos elementos para su uso en los scripts siguientes:de entidad de servicio para un inicio de sesión de sysadmin: CLIENTID_sysadmin_login y SECRET_sysadmin_login
Principal de Servicio para el motor de base de datos de SQL Server: CLIENTID_DBEngine y SECRET_DBEngine.
Conceder permiso para que los Service Principals accedan a Key Vault: Tanto el CLIENTID_sysadmin_login como los Principals de CLIENTID_DBEngineService requieren los permisos obtener, listar, envolverClave, y desenvolverClave en el almacén de claves. Si tiene previsto crear claves a través de SQL Server, también debe conceder al el permiso crear en el almacén de claves.
Importante
Los usuarios deben tener al menos las operaciones wrapKey y unwrapKey para el almacén de claves.
Para obtener más información sobre cómo conceder permisos a la bóveda, consulte la sección Autorizar a la aplicación a usar la clave o el secreto en Introducción a Azure Key Vault.
Vínculos a la documentación de Azure Key Vault
Referencia de cmdlets de Azure Key Vault powerShell
Paso 2: Instalar el conector de SQL Server
El administrador del equipo con SQL Server descarga e instala el conector de SQL Server. El conector de SQL Server está disponible para descargar desde el Centro de descargas de Microsoft . Busque conector de SQL Server para Microsoft Azure Key Vault, revise los detalles, los requisitos del sistema y las instrucciones de instalación, y elija descargar el conector y comience la instalación utilizando Ejecutar. Revise la licencia y acepte la licencia y continúe.
De forma predeterminada, el conector se instala en C:\Archivos de programa\Conector de SQL Server para Microsoft Azure Key Vault. Esta ubicación se puede cambiar durante la instalación. (Si se cambia, ajuste los scripts de abajo).
Al completar la instalación, se instalan lo siguiente en el equipo:
Microsoft.AzureKeyVaultService.EKM.dll: este es el archivo DLL del proveedor EKM criptográfico que debe registrarse con SQL Server mediante la instrucción CREATE CRYPTOGRAPHIC PROVIDER.
Conector de SQL Server de Azure Key Vault: Este es un servicio de Windows que permite al proveedor EKM Criptográfico comunicarse con el Almacén de Claves.
La instalación del conector de SQL Server también permite la opción de descargar scripts de ejemplo para el cifrado de SQL Server.
Paso 3: Configurar SQL Server para usar un proveedor EKM para Key Vault
Permisos
Para completar todo este proceso, es necesario el permiso CONTROL SERVER o la pertenencia al rol de servidor fijo sysadmin. Las acciones específicas requieren los siguientes permisos:
Para crear un proveedor criptográfico, requiere el permiso CONTROL SERVER o la pertenencia a la sysadmin rol fijo de servidor.
Para cambiar una opción de configuración y ejecutar la instrucción RECONFIGURE, se le debe conceder el permiso alter SETTINGS de nivel de servidor. El permiso ALTER SETTINGS está implícitamente en poder de los roles de servidor fijo sysadmin y serveradmin.
Para crear una credencial, requiere el permiso ALTER ANY CREDENTIAL.
Para agregar una credencial a un inicio de sesión, requiere el permiso ALTER ANY LOGIN.
Para crear una clave asimétrica, requiere el permiso CREATE ASYMMETRIC KEY.
Para configurar SQL Server para usar un proveedor criptográfico
Configure el motor de base de datos para que use EKM y registre (cree) el proveedor criptográfico con SQL Server.
-- Enable advanced options. USE master; GO sp_configure 'show advanced options', 1 ; GO RECONFIGURE ; GO -- Enable EKM provider sp_configure 'EKM provider enabled', 1 ; GO RECONFIGURE ; GO -- Create a cryptographic provider, using the SQL Server Connector -- which is an EKM provider for the Azure Key Vault. This example uses -- the name AzureKeyVault_EKM_Prov. CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll'; GOConfigure una credencial de SQL Server para un inicio de sesión de administrador de SQL Server para usar el almacén de claves para configurar y administrar escenarios de cifrado de SQL Server.
Importante
El argumento IDENTITY de
CREATE CREDENTIALrequiere el nombre del almacén de claves. El argumento secret de deCREATE CREDENTIALrequiere el<>(sin guiones) y <secreto> que se pasen juntos sin un espacio entre ellos.En el ejemplo siguiente, al identificador de cliente (
00001111-aaaa-2222-bbbb-3333cccc4444) se le eliminan los guiones y se escribe como la cadena00001111AAAA2222BBBB3333CCCC4444, y el Secreto se representa mediante la cadena SECRET_sysadmin_login.USE master; CREATE CREDENTIAL sysadmin_ekm_cred WITH IDENTITY = 'ContosoKeyVault', SECRET = '00001111AAAA2222BBBB3333CCCC4444SECRET_sysadmin_login' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ; -- Add the credential to the SQL Server administrators domain login ALTER LOGIN [<domain>/<login>] ADD CREDENTIAL sysadmin_ekm_cred;Para obtener un ejemplo de cómo usar variables para los argumentos de
CREATE CREDENTIALy eliminar programáticamente los guiones del identificador de cliente, consulte CREATE CREDENTIAL (Transact-SQL).Si importó una clave asimétrica como se ha descrito anteriormente en el paso 1, sección 3, abra la clave proporcionando el nombre de la clave en el ejemplo siguiente.
CREATE ASYMMETRIC KEY CONTOSO_KEY FROM PROVIDER [AzureKeyVault_EKM_Prov] WITH PROVIDER_KEY_NAME = 'ContosoMasterKey', CREATION_DISPOSITION = OPEN_EXISTING;Aunque no se recomienda para producción (porque no se puede exportar la clave), es posible crear una clave asimétrica directamente en la bóveda desde SQL Server. Si no importó una clave anteriormente, cree una clave asimétrica en el almacén de claves para realizar pruebas mediante el siguiente script. Ejecute el script mediante un inicio de sesión aprovisionado con la credencial de sysadmin_ekm_cred.
CREATE ASYMMETRIC KEY CONTOSO_KEY FROM PROVIDER [AzureKeyVault_EKM_Prov] WITH ALGORITHM = RSA_2048, PROVIDER_KEY_NAME = 'ContosoMasterKey';
Propina
Los usuarios que reciben el error No se puede exportar la clave pública del proveedor. Código de error del proveedor: 2053. deben comprobar sus permisos de get, list, wrapKeyy unwrapKey en el almacén de claves.
Para obtener más información, consulte lo siguiente:
Ejemplos
Ejemplo A: Cifrado de datos transparente mediante una clave asimétrica de Key Vault
Después de completar los pasos anteriores, cree una credencial y un inicio de sesión, cree una clave de cifrado de base de datos protegida por la clave asimétrica en el almacén de claves. Use la clave de cifrado de base de datos para cifrar una base de datos con TDE.
Para cifrar una base de datos, se requiere el permiso CONTROL en la base de datos.
Para habilitar TDE mediante EKM y Key Vault
Cree una credencial de SQL Server para que el motor de base de datos la use al acceder al EKM del almacén de claves durante la carga de la base de datos.
Importante
El argumento IDENTITY de
CREATE CREDENTIALrequiere el nombre del almacén de claves. El argumento secret de deCREATE CREDENTIALrequiere el<>(sin guiones) y <secreto> que se pasen juntos sin un espacio entre ellos.En el ejemplo siguiente, el ID de cliente (
00001111-aaaa-2222-bbbb-3333cccc4444) se elimina de los guiones y se introduce como la cadena00001111AAAA2222BBBB3333CCCC4444y el secreto está representado por la cadena SECRET_DBEngine.USE master; CREATE CREDENTIAL Azure_EKM_TDE_cred WITH IDENTITY = 'ContosoKeyVault', SECRET = '00001111AAAA2222BBBB3333CCCC4444SECRET_DBEngine' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;Cree un inicio de sesión de SQL Server para que lo use el motor de base de datos para TDE y agréguele la credencial. En este ejemplo se usa la clave asimétrica CONTOSO_KEY almacenada en el almacén de claves, que se importó o creó anteriormente para la base de datos maestra, como se describe en paso 3, sección 3 anterior.
USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it loads a database -- encrypted by TDE. CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the TDE Login to add the credential for use by the -- Database Engine to access the key vault ALTER LOGIN TDE_Login ADD CREDENTIAL Azure_EKM_TDE_cred ; GOCree la clave de cifrado de base de datos (DEK) que se usará para TDE. La DEK se puede crear mediante cualquier algoritmo compatible con SQL Server o longitud de clave. La DEK se protegerá mediante la clave asimétrica en el almacén de claves.
En este ejemplo se usa la clave asimétrica CONTOSO_KEY almacenada en el almacén de claves, que se importó o creó anteriormente, como se describe en paso 3, sección 3 anterior.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON ; GOPara obtener más información, consulte lo siguiente:
Ejemplo B: Cifrado de copias de seguridad mediante una clave asimétrica desde Key Vault
Las copias de seguridad cifradas se admiten a partir de SQL Server 2014. En el ejemplo siguiente se crea y restaura una copia de seguridad cifrada de una clave de cifrado de datos protegida por la clave asimétrica en la bóveda de claves.
USE master;
BACKUP DATABASE [DATABASE_TO_BACKUP]
TO DISK = N'[PATH TO BACKUP FILE]'
WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD,
ENCRYPTION(ALGORITHM = AES_256, SERVER ASYMMETRIC KEY = [CONTOSO_KEY]);
GO
Código de restauración de ejemplo.
RESTORE DATABASE [DATABASE_TO_BACKUP]
FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE;
GO
Para obtener más información sobre las opciones de copia de seguridad, vea BACKUP (Transact-SQL).
Ejemplo C: Cifrado de nivel de columna mediante una clave asimétrica de Key Vault
En el ejemplo siguiente se crea una clave simétrica protegida por una clave asimétrica en el almacén de claves. A continuación, la clave simétrica se usa para cifrar los datos de la base de datos.
En este ejemplo se usa la clave asimétrica CONTOSO_KEY almacenada en el almacén de claves, que se importó o creó anteriormente, como se describe en paso 3, sección 3 anterior. Para usar esta clave asimétrica en la base de datos de ContosoDatabase, debe volver a ejecutar la instrucción CREATE ASYMMETRIC KEY para proporcionar la base de datos ContosoDatabase con una referencia a la clave.
USE [ContosoDatabase];
GO
-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoMasterKey',
CREATION_DISPOSITION = OPEN_EXISTING;
-- Create the data encryption key.
-- The data encryption key can be created using any SQL Server
-- supported algorithm or key length.
-- The DEK will be protected by the asymmetric key in the key vault
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;
DECLARE @DATA VARBINARY(MAX);
--Open the symmetric key for use in this session
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;
--Encrypt syntax
SELECT @DATA = ENCRYPTBYKEY(KEY_GUID('DATA_ENCRYPTION_KEY'), CONVERT(VARBINARY,'Plain text data to encrypt'));
-- Decrypt syntax
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));
--Close the symmetric key
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;
Consulte también
CREAR PROVEEDOR CRIPTOGRÁFICO (Transact-SQL)CREAR CREDENCIAL (Transact-SQL)CREAR CLAVE ASIMÉTRICA (Transact-SQL)CREAR CLAVE SIMÉTRICA (Transact-SQL)Gestión Extensible de Claves (EKM)Habilitar TDE con EKMEncriptación de Copias de SeguridadCrear una Copia de Seguridad Encriptada