Share via


Proveedores de claves externos en Clústeres de macrodatos de SQL Server

Importante

El complemento Clústeres de macrodatos de Microsoft SQL Server 2019 se va a retirar. La compatibilidad con Clústeres de macrodatos de SQL Server 2019 finalizará el 28 de febrero de 2025. Todos los usuarios existentes de SQL Server 2019 con Software Assurance serán totalmente compatibles con la plataforma, y el software se seguirá conservando a través de actualizaciones acumulativas de SQL Server hasta ese momento. Para más información, consulte la entrada de blog sobre el anuncio y Opciones de macrodatos en la plataforma Microsoft SQL Server.

En este artículo se proporcionan detalles sobre cómo configurar proveedores de claves externos en Clústeres de macrodatos de SQL Server para la administración de claves.

Para obtener más información sobre cómo se usan las versiones de clave en Clústeres de macrodatos de SQL Server, consulte Versiones de clave en Clústeres de macrodatos de SQL Server.

Para obtener información sobre cómo configurar y usar el cifrado en reposo, consulte las guías siguientes:

Requisitos previos

Cifrado de la clave raíz mediante proveedores externos

Gracias a la funcionalidad de incorporar claves externas en Clústeres de macrodatos de SQL Server, la clave de cifrado principal captura la clave pública mediante la aplicación que implementa el cliente. Cuando las claves de HDFS se rotan y se usan, las llamadas para descifrar las claves de HDFS se envían al plano de control y, luego, se redirigen a la aplicación mediante el identificador de clave que ha proporcionado el cliente. En el caso de SQL Server, el plano de control envía y satisface las solicitudes de cifrado, ya que tiene la clave pública. Las solicitudes para descifrar la clave de cifrado de datos (DEK) de SQL Server también se envían al plano de control y, después, se redirigen a la aplicación que interactúa con el proveedor externo, como un módulo de seguridad de hardware (HSM).

Diagrama que representa la situación después de instalar la clave de cliente.

En el diagrama siguiente se explican las interacciones al configurar claves externas en el plano de control:

Diagrama en el que se explican las interacciones al configurar claves externas en el plano de control.

Una vez instalada la clave, el cifrado y el descifrado de las cargas están protegidos mediante la clave de cifrado principal. Esta protección es similar a la de las claves administradas por el sistema, con la diferencia de que las llamadas de descifrado enrutadas al plano de control se enrutan a la aplicación de complemento del servicio de gestión de claves (KMS). La aplicación de complemento de KMS enruta la solicitud a la ubicación adecuada, como un HSM, HashiCorp Vault u otro producto.

Configuración

La aplicación de plantilla proporcionada es el complemento que se usa para la interactuar con el proveedor de claves externo. Esta aplicación debe personalizarse e implementarse en Clústeres de macrodatos para que sirva como punto de integración con el proveedor de claves externo elegido.

En la aplicación de plantilla, hay ejemplos que ilustran cómo realizar la integración con implementaciones de proveedores externos mediante el protocolo PKCS11 estándar mediante SoftHSM. También hay ejemplos de uso de Azure Key Vault y Hashicorp Vault. Las aplicaciones de plantilla se proporcionan tal cual como implementaciones de referencia.

En las secciones siguientes se proporcionan los pasos necesarios para configurar un proveedor de claves externo para que sirva como clave raíz del cifrado para las bases de datos de SQL Server y las zonas de cifrado de HDFS.

Creación de una clave RSA 2048 en el proveedor de claves externo

Cree un archivo PEM con una clave RSA de 2048 bits y cárguelo en el almacén de pares clave-valor del proveedor de claves externo.

Por ejemplo, el archivo de clave se puede agregar al almacén de claves de HashiCorp Vault en la ruta de acceso bdc-encryption-secret y el nombre del secreto puede ser rsa2048.

Personalización e implementación de la aplicación de integración en Clústeres de macrodatos

  1. En el equipo local, vaya a la carpeta que contiene kms_plugin_app, las aplicaciones de plantilla Clústeres de macrodatos AppDeploy.

  2. Para personalizar la aplicación, elija una de las plantillas y ajústela al escenario:

    • El archivo custom_softhsm.py contiene una implementación de referencia con SoftHSM.
    • El archivo custom_akv.py contiene un ejemplo de Azure Key Vault
    • El archivo custom_hcv.py contiene un ejemplo de HashiCorp Vault

    Precaución

    No cambie los contratos de función ni las firmas, que son los puntos de integración. Cambie solo las implementaciones de función, si es necesario.

  3. Asigne un nombre adecuado al archivo que va a crear a partir de la plantilla anterior. Por ejemplo, guarde custom_softhsm.py como my_custom_integration_v1.py y luego realice sus personalizaciones. Este enfoque es importante para el paso siguiente.

  4. app.py es el punto de entrada que cargará la aplicación. En este archivo, debe cambiar la línea 11 para que apunte al nombre del archivo personalizado sin la extensión .py del paso anterior. Según el ejemplo anterior, cambie:

    ...
    import utils
    from json_objects import EncryptDecryptRequest
    import custom_softhsm as custom
    
    def handler(operation, payload, pin, key_attributes, version):
    ...
    

    al siguiente valor:

    ...
    import utils
    from json_objects import EncryptDecryptRequest
    import my_custom_integration_v1 as custom
    
    def handler(operation, payload, pin, key_attributes, version):
    ...
    
  5. Desde la carpeta que tiene spec.yaml, implemente la aplicación en Clústeres de macrodatos mediante este comando:

    azdata app create -s
    
  6. Espere a que se complete la implementación de la aplicación. Compruebe que tiene el estado de listo mediante este comando.

    azdata app list
    

Configuración de Clústeres de macrodatos para usar el proveedor de claves externas

  1. Establezca la variable de entorno AZDATA_EXTERNAL_KEY_PIN para proporcionar el token que permite el acceso al proveedor de claves externo.

    export AZDATA_EXTERNAL_KEY_PIN=<your PIN/token here>
    

    Nota:

    El proceso de implementación de aplicaciones de integración usa el token para acceder al proveedor de claves externo. Sin embargo, la variable AZDATA_EXTERNAL_KEY_PIN se guarda cifrada en el plano de control de Clústeres de macrodatos para que pueda interpretarse por la aplicación. También se puede utilizar un mecanismo de autenticación diferente, pero hay que cambiar la aplicación. Consulte la aplicación de Python custom*.py para la lógica de integración completa que se está usando.

  2. Configure la clave en Clústeres de macrodatos mediante la siguiente estructura de comandos azdata. Cambie los parámetros necesarios a la implementación específica. En el ejemplo siguiente se usa una estructura de HashiCorp Vault tal y como la proporciona custom2.py.

    azdata bdc kms update --app-name <YOUR-APP-NAME> --app-version <YOUR-APP-VERSION> \
    --key-attributes keypath=<YOUR-KEY-PATH>,vaulturl=http://<YOUR-IP>:<YOUR-PORT>,keyname=<YOUR-KEY-NAME> \
    --provider External
    

    El valor del parámetro --provider External configura los Clústeres de macrodatos de KMS para utilizar la aplicación de integración como punto final para las operaciones de clave.

  3. Compruebe que la clave de cifrado raíz es la administrada externamente mediante el comando siguiente.

    azdata bdc kms show
    

Cifrado de las bases de datos y las zonas de cifrado con las nuevas claves

Después de la configuración, las bases de datos de SQL Server y las zonas de cifrado de HDFS siguen cifradas con la jerarquía de claves anterior. Debe realizar el cifrado explícitamente con las claves administradas externamente.

En SQL Server se instala una nueva clave asimétrica basada en la clave administrada externamente. Úsela para cifrar las bases de datos.

La clave asimétrica se puede ver mediante la siguiente consulta T-SQL, con la vista de catálogo del sistema sys.asymmetric_keys.

USE master;
select * from sys.asymmetric_keys;

La clave asimétrica aparece con la convención de nomenclatura tde_asymmetric_key_<version>. Después, el administrador de SQL Server puede cambiar el protector de la clave de cifrado de datos (DEK) a la clave asimétrica mediante ALTER DATABASE ENCRYPTION KEY. Por ejemplo, use el siguiente comando T-SQL:

USE db1;
ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY tde_asymmetric_key_0;
  1. Ejecute el siguiente comando para comprobar la clave de cifrado actual:

    azdata bdc hdfs key describe
    
  2. Obtenga información sobre la versión de la clave que protege la clave de la zona de cifrado:

    azdata bdc hdfs key describe --name <key name>
    
  3. Revierta la clave a la nueva clave administrada externa:

    azdata bdc hdfs key roll --name <new key name>
    
  4. Inicie el cifrado con este comando:

    azdata bdc hdfs encryption-zone reencrypt –-path <your EZ path> --action start
    
  5. Compruebe la jerarquía de claves mediante los comandos siguientes:

    azdata bdc kms show
    azdata bdc hdfs key describe
    

Pasos siguientes