Configuración de Cifrado de datos transparente con Azure Key Vault para SQL Server

Se aplica a:SQL Server

En este artículo, instalará y configurará el Conector de SQL Server para Azure Key Vault y, a continuación, configurará el Cifrado de datos transparente (TDE) mediante una clave de Azure Key Vault.

Prerequisites

Antes de empezar a usar Azure Key Vault con la instancia de SQL Server, asegúrese de cumplir los siguientes requisitos previos:

Note

En SQL Server 2022 (16.x) CU 12 y versiones posteriores, SQL Server en Linux admite TDE Extensible Key Management con Azure Key Vault. Los pasos 3 y 4 de esta guía no son necesarios para SQL Server en Linux.

Flujo rápido

  1. Seleccione un modelo de autenticación en paso 1: Configurar el modelo de autenticación.
  2. Crear un almacén de claves y una clave en Paso 2: Crear un almacén de claves.
  3. Instale el conector en el paso 3: Instalar el conector de SQL Server.
  4. Configure el prerrequisito del registro en Paso 4: Añadir clave del registro para admitir al proveedor EKM.
  5. Configure SQL Server y valide el cifrado en paso 5: Configurar SQL Server.

Paso 1: Configuración del modelo de autenticación

Importante

Elija el modelo de autenticación antes de continuar:

  • Use la pestaña Entidad de servicio para SQL Server local.
  • Use la pestaña Identidad administrada para SQL Server en máquinas virtuales Azure o SQL Server habilitadas por Azure Arc, donde se admite la identidad administrada.

Matriz de compatibilidad del modelo de autenticación:

Modelo de autenticación Versión de SQL Server Dónde se ejecuta SQL Server Soportado
Entidad principal de servicio Versiones admitidas que se tratan en este artículo Máquina virtual de Azure local SQL Server habilitada por Azure Arc
Identidad administrada SQL Server 2022 CU17 y versiones posteriores Máquina virtual de Azure
Identidad administrada SQL Server 2025 y versiones posteriores SQL Server habilitado por Azure Arc
Identidad administrada Any On-premises No

Para conceder permisos de acceso a la instancia de SQL Server al almacén de claves de Azure, necesita una cuenta de entidad de servicio en Microsoft Entra ID.

  1. Inicie sesión en el portal de Azure y realice cualquiera de los pasos siguientes:

    • Selecciona el botón Microsoft Entra ID.

      Captura de pantalla del panel

    • Selecciona Más servicios y, a continuación, en el panel Todos los servicios, escribe Microsoft Entra ID.

  2. Registre una aplicación con Microsoft Entra ID mediante los pasos siguientes. Para obtener instrucciones detalladas paso a paso, consulta la sección Obtención de una identidad para la aplicación de la entrada de blog de Azure Key Vault, Azure Key Vaul: Paso a paso.

    1. En la sección Administración de tu recurso de Microsoft Entra ID, selecciona Registros de aplicaciones.

      Captura de pantalla de la página de información general de Microsoft Entra ID en Azure Portal.

    2. En la página Registros de aplicaciones, seleccione Nuevo registro.

      Captura de pantalla del panel de registros de aplicaciones en Azure Portal.

    3. En el panel Registrar una aplicación, escriba el nombre para el usuario de la aplicación y, después, seleccione Registrar.

      Captura de pantalla del panel

    4. En el panel izquierdo, seleccione Certificados y secretos>Secretos de cliente>Nuevo secreto de cliente.

      Captura de pantalla del panel Certificados y Secretos de la aplicación en Azure Portal.

    5. En Agregar un secreto de cliente, escriba una descripción y una expiración adecuada y, después, seleccione Agregar. No puede elegir un período de expiración superior a 24 meses. Para obtener más información, consulte Incorporación de un secreto de cliente.

      Captura de pantalla de la sección Agregar un secreto de cliente para la aplicación en Azure Portal.

    6. En el panel Certificados y secretos, en Valor, seleccione el botón Copiar situado junto al valor del secreto de cliente para usarlo para crear una clave asimétrica en SQL Server.

      Captura de pantalla en la que se muestra el valor del secreto en Azure Portal.

    7. En el panel izquierdo, seleccione Información general y, a continuación, en el cuadro Id. de aplicación (cliente), copie el valor para usarlo para crear una clave asimétrica en SQL Server.

      Captura de pantalla del valor

Paso 2: Crear un almacén de claves

Seleccione el método que quiera usar para crear un almacén de claves.

Note

Solo se admiten Azure Key Vault y Azure Key Vault Managed HSM. Azure Cloud HSM no está disponible.

Creación de un almacén de claves mediante Azure Portal

Para crear un almacén de claves mediante el portal de Azure, consulte Inicio rápido: Creación de un almacén de claves mediante el portal de Azure.

Control de acceso basado en roles de Azure

Use el control de acceso basado en roles de Azure (RBAC) para administrar el acceso a Azure Key Vault. No use directivas de acceso heredadas. Las directivas de acceso heredadas tienen vulnerabilidades de seguridad conocidas, faltan compatibilidad con Privileged Identity Management (PIM) y no deben usarse para cargas de trabajo y datos críticos. Para obtener más información sobre los permisos de Azure Key Vault RBAC, consulte Roles integrados de Azure para operaciones del plano de datos del almacén de claves.

  1. Vaya al recurso del almacén de claves que creó y seleccione la configuración control de acceso (IAM).

  2. Seleccione Agregar>Agregar asignación de rol.

    Captura de pantalla del botón Agregar asignación de roles en el panel Access control (IAM) en Azure Portal.

  3. La aplicación EKM o la identidad administrada necesitan el rol de usuario de cifrado de servicios criptográficos Key Vault para realizar operaciones de encapsulado y desencapsulado. Busque Usuario de cifrado del servicio criptográfico del almacén de claves y seleccione el rol. Seleccione Siguiente.

    Captura de pantalla de la selección de una asignación de rol en el portal de Azure.

  4. En la pestaña Miembros, seleccione la opción Seleccionar miembros y busque la aplicación Microsoft Entra o la identidad administrada que creó en el paso 1. Seleccione la aplicación o la identidad administrada y, a continuación, el botón Seleccionar .

    Captura de pantalla del panel Seleccionar miembros para agregar una asignación de roles en Azure Portal.

  5. Seleccione Revisar y asignar dos veces para completar la asignación de roles.

Crear una clave

El usuario que crea la clave necesita el rol de Administración del almacén de claves. Al igual que los pasos anteriores, agregue el miembro que crea la clave y asigne el rol.

  1. En el panel Almacén de claves, seleccione Claves y después seleccione la opción Generar e importar. Esta acción abre el panel Crear una clave . Seleccione la opción Generar y escriba un nombre único para la clave. El Conector de SQL Server requiere que en el nombre de clave solo se usen los caracteres "a-z", "A-Z", "0-9" y "-", con un límite de 26 caracteres.

  2. Use el tipo de clave RSA y el tamaño de clave RSA2048. EKM actualmente solo admite una clave RSA. Establezca las fechas de activación y expiración según corresponda y configure ¿Habilitado? en .

    Captura de pantalla del panel

Configuración de un HSM administrado Azure Key Vault (opcional)

Managed HSM de Azure Key Vault (módulo de seguridad de hardware) es compatible con SQL Server, SQL Server en Azure Virtual Machines (VMs), cuando se utiliza la versión más reciente de SQL Server Connector, y Azure SQL. El HSM administrado es un servicio de HSM totalmente gestionado, de alta disponibilidad y con inquilino único. HSM administrado proporciona una base segura para las operaciones criptográficas y el almacenamiento de claves. HSM administrado está diseñado para cumplir con los requisitos de seguridad y cumplimiento más estrictos.

En el paso 2 se muestra cómo crear un almacén de claves y una clave en Azure Key Vault. Opcionalmente, puede usar un HSM administrado de Azure Key Vault para almacenar o crear una clave para el conector de SQL Server. Siga estos pasos:

  1. Cree un HSM administrado Azure Key Vault mediante el portal de Azure, el CLI de Azure, PowerShell o una plantilla de ARM.

  2. Active el HSM administrado. Solo los administradores designados asignados durante la creación pueden activarlo. En el portal de Azure, seleccione el recurso HSM administrado y, a continuación, seleccione Descargar dominio de seguridad en el menú Información general. Siga una de las guías de inicio rápido para activar su Managed HSM.

  3. Conceda permisos a la entidad de servicio Microsoft Entra o a la identidad administrada para acceder al HSM administrado. El rol Administrador de HSM administrado no concede permisos para crear una clave. Al igual que en el paso 2, la aplicación EKM o la identidad administrada necesitan el rol de usuario criptográfico de HSM administrado o de cifrado de servicio criptográfico de HSM administrado para realizar operaciones de encapsulado y desencapsulado. A fin de obtener más información, vea Roles integrados de RBAC local para HSM administrado.

  4. En el menú Servicio de HSM administrado de Azure Key Vault, en Configuración, seleccione Claves. En la ventana Claves, seleccione Generar, importar o restaurar copia de seguridad para crear una clave o importar una existente.

    Note

    Los algoritmos RSA-HSM_2048 y RSA-HSM_3072 se admiten a partir de la actualización acumulativa 13 de SQL Server 2022 (16.x).

    Azure Key Vault HSM administrado admite la rotación automática de claves. Para obtener más información, consulte Configurar la rotación automática de claves en Azure Managed HSM.

    El HSM administrado admite conexiones de endpoint privado. Para obtener más información, consulte Integración de HSM administrado con Azure Private Link. En esta configuración, debe habilitar la opción omisión para servicios de confianza de Microsoft en la configuración Redes de Azure Key Vault Managed HSM.

Paso 3: Instalar el conector de SQL Server

Haga que un administrador de SQL Server descargue la versión más reciente del conector de SQL Server para Microsoft Azure Key Vault desde el Centro de descarga de Microsoft y ejecute el instalador.

Captura de pantalla del asistente para instalación del Conector de SQL Server.

De forma predeterminada, el conector se instala en C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault. Puede cambiar esta ubicación durante la instalación. Si lo cambias, ajusta los scripts de la siguiente sección.

Una instalación correcta coloca Microsoft.AzureKeyVaultService.EKM.dll en la máquina. Este ensamblado es el archivo DLL del proveedor criptográfico EKM. Regístrelo con SQL Server mediante la CREATE CRYPTOGRAPHIC PROVIDER instrucción .

El instalador también ofrece scripts de ejemplo para el cifrado de SQL Server.

Para obtener explicaciones de código de error, opciones de configuración o tareas de mantenimiento, consulte:

Paso 4: Agregar clave del Registro para admitir el proveedor EKM

Warning

Solo un administrador de SQL Server que sepa exactamente lo que están haciendo debe modificar el registro. Los cambios incorrectos pueden causar problemas graves. Realice una copia de seguridad del registro antes de realizar cualquier cambio para poder restaurarlo si se produce un problema.

  1. Ejecuta regedit para abrir el editor del Registro.

  2. Cree una clave del Registro SQL Server Cryptographic Provider en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider.

  3. Haz clic con el botón derecho en la clave del Registro SQL Server Cryptographic Provider y selecciona Permisos.

  4. Conceda control total en la SQL Server Cryptographic Provider clave a la cuenta de usuario que ejecuta el servicio SQL Server.

    Captura de pantalla de la clave del Registro EKM en el Editor del Registro.

  5. Seleccione Aplicar y, después, Aceptar.

  6. Cierra el Editor del Registro y reinicia el servicio SQL Server.

    Note

    Si usa TDE con EKM o Azure Key Vault en una instancia de clúster de conmutación por error, agregue también HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider a la rutina de punto de comprobación del Registro del clúster para que el registro se sincronice en todos los nodos, lo que facilita la recuperación de la base de datos después de la conmutación por error y la rotación de claves.

    Ejecute el siguiente comando de PowerShell para agregar la clave del Registro a la rutina de punto de control:

    Add-ClusterCheckpoint -RegistryCheckpoint "SOFTWARE\Microsoft\SQL Server Cryptographic Provider" -Resourcename "SQL Server"
    

Paso 5: Configuración de SQL Server

Para obtener una nota sobre los niveles de permisos mínimos necesarios para cada acción de esta sección, vea B. Preguntas más frecuentes.

Fase 1: Configuración del proveedor criptográfico y las credenciales en master

Elija el modelo de autenticación y siga los pasos correspondientes.

  1. Ejecute sqlcmd o abra SQL Server Management Studio.

  2. Ejecute el script Transact-SQL siguiente para configurar SQL Server con el fin de usar EKM:

    -- Enable advanced options.
    USE master;
    GO
    
    EXEC sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    
    -- Enable EKM provider
    EXEC sp_configure 'EKM provider enabled', 1;
    GO
    RECONFIGURE;
    
  3. Registre el Conector de SQL Server como proveedor EKM con SQL Server.

    Cree un proveedor de servicios criptográficos mediante el Conector de SQL Server, que es un proveedor EKM para Azure Key Vault. En este ejemplo, el nombre del proveedor es AzureKeyVault_EKM.

    CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM
    FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll';
    GO
    

    Note

    La ruta de acceso al archivo no puede tener una longitud superior a 256 caracteres.

  4. Configure una credencial de SQL Server para un inicio de sesión de SQL Server para usar el almacén de claves.

    Agregue una credencial a cada inicio de sesión que realice el cifrado mediante una clave del almacén de claves. Existe una correspondencia biunívoca entre las credenciales y los inicios de sesión: cada inicio de sesión debe tener una credencial única.

    Modifique este script de Transact-SQL como se indica a continuación:

    • Edite el argumento IDENTITY (DocsSampleEKMKeyVault) para dirigirlo a Azure Key Vault.

    • Reemplace la primera parte del SECRET argumento por el identificador de cliente de Microsoft Entra del paso 1: Configurar el modelo de autenticación. En este ejemplo, el id. de cliente es d956f6b9xxxxxxx.

      Importante

      Quite los guiones del identificador de aplicación (cliente).

    • Complete la segunda parte del SECRET argumento con el secreto de cliente del paso 1. La cadena final es una larga secuencia de letras y números sin guiones (salvo los guiones que pueda contener el propio Client Secret).

    USE master;
    CREATE CREDENTIAL sysadmin_ekm_cred
       -- Set IDENTITY to the vault name (public Azure) or full vault hostname without https:// (sovereign clouds / Managed HSM)
       -- See https://dotnet.territoriali.olinfo.it/azure/key-vault/general/about-keys-secrets-certificates#dns-suffixes-for-base-url
       WITH IDENTITY = 'DocsSampleEKMKeyVault',
             --<----Application (Client) ID ---><--Microsoft Entra app (Client) ID secret-->
       SECRET = 'd956f6b9xxxxxxxyrA8X~PldtMCvUZPxxxxxxxx'
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
    
    -- Add the credential to the SQL Server administrator's domain login
    ALTER LOGIN [<domain>\<login>]
        ADD CREDENTIAL sysadmin_ekm_cred;
    

    Para ver un ejemplo de cómo usar variables y eliminar guiones del ID de cliente mediante programación, consulte CREATE CREDENTIAL.

  5. Abra la clave Azure Key Vault en la instancia de SQL Server.

    Tanto si ha creado una clave nueva como si ha importado una clave asimétrica en el paso 2: Crear un almacén de claves, abra la clave en SQL Server mediante CREATE ASYMMETRIC KEY.

    Importante

    Complete los requisitos previos del Registro antes de realizar este paso.

    En los siguientes ejemplos:

    • Reemplace por EKMSampleASYKey el nombre que desea usar en SQL Server.
    • Reemplace ContosoRSAKey0 por el nombre de su clave en Azure Key Vault o Managed HSM.

    Use un nombre de clave sin versión (recomendado para la mayoría de los escenarios):

    CREATE ASYMMETRIC KEY EKMSampleASYKey
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
          CREATION_DISPOSITION = OPEN_EXISTING;
    

    Use una versión de clave específica cuando necesite anclar operaciones a una versión:

    CREATE ASYMMETRIC KEY EKMSampleASYKey
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379',
          CREATION_DISPOSITION = OPEN_EXISTING;
    

    En este ejemplo, 1a4d3b9b393c4678831ccc60def75379 es la versión de clave específica que SQL Server usa para las operaciones de base de datos.

  6. Cree un inicio de sesión con la clave asimétrica de SQL Server que ha creado en el paso anterior.

    -- Create a login that associates the asymmetric key with this login
    CREATE LOGIN TDE_Login
        FROM ASYMMETRIC KEY EKMSampleASYKey;
    
  7. Mueva la asignación de credenciales del inicio de sesión de administrador original al inicio de sesión creado a partir de la clave asimétrica.

    SQL Server usa el inicio de sesión creado a partir de la clave asimétrica (TDE_Login) para las operaciones EKM. Para asegurarse de que SQL Server puede acceder a Azure Key Vault durante las operaciones de cifrado y recuperación, asigne la credencial a TDE_Login en lugar del inicio de sesión de instalación original.

    -- Remove the service principal credential from the original setup login
    ALTER LOGIN [<domain>\<login>]
       DROP CREDENTIAL sysadmin_ekm_cred;
    
    -- Map the service principal credential to the login created from the asymmetric key
    ALTER LOGIN TDE_Login
       ADD CREDENTIAL sysadmin_ekm_cred;
    

Fase 2: Cifrado y validación de la base de datos de usuario

Configuración de la base de datos de usuario que se va a cifrar

  1. Cree una base de datos de prueba para cifrar mediante la clave Azure Key Vault.

    -- Create a test database for the TDE example.
    CREATE DATABASE TestTDE;
    
  2. Cree una clave de cifrado de base de datos mediante la clave asimétrica del servidor (EKMSampleASYKey).

    USE TestTDE;
    -- Create a DEK protected by the EKM asymmetric key.
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_256
    ENCRYPTION BY SERVER ASYMMETRIC KEY EKMSampleASYKey;
    
  3. Habilite TDE en la base de datos estableciendo ENCRYPTION ON.

    -- Enable TDE for the database.
    ALTER DATABASE TestTDE
        SET ENCRYPTION ON;
    

Comprobación del uso de claves y el estado de cifrado

  1. En la master base de datos, ejecute la siguiente consulta Transact-SQL para comprobar que la clave asimétrica EKM existe y capturar su huella digital.

    SELECT name,
           algorithm_desc,
           thumbprint
    FROM sys.asymmetric_keys;
    

    La instrucción devuelve una salida similar a la siguiente:

    name            algorithm_desc    thumbprint
    EKMSampleASYKey RSA_2048          <key thumbprint>
    
  2. En la base de datos de usuario (TestTDE), ejecute la siguiente consulta Transact-SQL para comprobar que TDE está habilitado y que la clave de cifrado de base de datos está protegida por una clave asimétrica.

    SELECT encryptor_type,
           encryption_state_desc,
           encryptor_thumbprint
    FROM sys.dm_database_encryption_keys
    WHERE database_id = DB_ID('TestTDE');
    

    La instrucción devuelve una salida similar a la siguiente:

    encryptor_type encryption_state_desc encryptor_thumbprint
    ASYMMETRIC KEY ENCRYPTED             <key thumbprint>
    

    Confirme que encryptor_thumbprint coincide con la huella digital devuelta desde sys.asymmetric_keys. Normalmente, una falta de coincidencia indica que la clave de cifrado de la base de datos está protegida por una clave diferente de la esperada.

Limpieza

Use los pasos de limpieza que coincidan con el modelo de autenticación que configuró.

  1. Limpie los objetos de prueba que creó en este procedimiento.

    -- CLEAN UP: shared objects + service principal credential
    USE master;
    GO
    ALTER DATABASE [TestTDE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    DROP DATABASE [TestTDE];
    GO
    
    DROP LOGIN [TDE_Login];
    GO
    
    DROP ASYMMETRIC KEY [EKMSampleASYKey];
    DROP CRYPTOGRAPHIC PROVIDER [AzureKeyVault_EKM];
    GO
    
    DROP CREDENTIAL [sysadmin_ekm_cred];
    GO
    
  2. Revise si debe quitar la clave del SQL Server Cryptographic Provider Registro.

    Importante

    La SQL Server Cryptographic Provider clave del Registro no se quita automáticamente después de eliminar las claves EKM.

    Elimine esta clave del Registro solo cuando ya no necesite EKM en la instancia. Eliminarlo demasiado pronto puede interrumpir la funcionalidad de EKM y las operaciones de recuperación.

    Ruta de acceso del registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider

Rotación de claves asimétricas para TDE con Azure Key Vault

Use una guía operativa dedicada para los pasos de rotación de claves, incluidos scripts específicos de autenticación, comprobación y comprobaciones de seguridad:

Importante

No elimine las versiones anteriores de la clave después de una rotación. Es posible que todavía se necesiten versiones anteriores para restaurar copias de seguridad, archivos de registro y artefactos de recuperación anteriores.