Compartir a través de


Proveedores de claves externas en clústeres de macrodatos de SQL Server

Important

Los clústeres de macrodatos de Microsoft SQL Server 2019 se retiran. La compatibilidad con clústeres de macrodatos de SQL Server 2019 finalizó a partir del 28 de febrero de 2025. Para obtener más información, consulte la entrada de blog del anuncio y las opciones de macrodatos en la plataforma de Microsoft SQL Server.

En este artículo se proporcionan detalles sobre cómo configurar proveedores de claves externas 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 claves en clústeres de macrodatos de SQL Server.

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

Prerequisites

Cifrado de clave raíz mediante proveedores externos

Con la capacidad 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 se rotan y utilizan las claves HDFS, las llamadas para su descifrado se envían al plano de control y posteriormente se redirigen a la aplicación utilizando el identificador de clave proporcionado por 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, a continuación, 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:

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

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

Configuration

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

En la aplicación de plantilla, hay ejemplos sobre cómo integrarse con implementaciones de proveedor externo mediante el protocolo PKCS11 estándar mediante SoftHSM. También hay ejemplos de uso de Azure Key Vault y Hashicorp Vault. Las aplicaciones tipo plantilla se proporcionan as-is para servir de implementaciones de referencia.

En las secciones siguientes se proporcionan los pasos necesarios para configurar un proveedor de claves externas para que actúe 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 externas

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

Por ejemplo, el fichero de claves se puede agregar al almacén de KV en Hashicorp Vault en la ruta 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 la máquina local, vaya a la carpeta que contiene kms_plugin_app, las aplicaciones de plantilla AppDeploy de clústeres de macrodatos.

  2. Personalice la aplicación eligiendo una de las plantillas y ajustandola a su escenario:

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

    Caution

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

  3. Asigne un nombre al archivo que va a crear a partir de la plantilla anterior en consecuencia. Por ejemplo, guarde custom_softhsm.py como my_custom_integration_v1.py y, a continuación, realice las personalizaciones. Este enfoque es importante para el siguiente paso.

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

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

    para el 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. En 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 y se pueda comprobar el estado listo mediante este comando:

    azdata app list
    

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

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

    export AZDATA_EXTERNAL_KEY_PIN=<your PIN/token here>
    

    Note

    El proceso de implementación de la aplicación de integración usa el token para acceder al proveedor de claves externas. Sin embargo, la variable se guarda cifrada en el AZDATA_EXTERNAL_KEY_PIN plano de control de clústeres de macrodatos para que la aplicación pueda interpretarla. También se puede usar un mecanismo de autenticación diferente, pero la aplicación debe cambiarse. Revise la aplicación de Python custom*.py para obtener la lógica de integración completa que se está utilizando.

  2. Configure la clave en Clústeres de macrodatos mediante la siguiente azdata estructura de comandos. Cambie los parámetros necesarios para tu implementación específica. En el ejemplo siguiente se usa una estructura hashiCorp Vault tal como se proporciona en 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 KMS de Big Data Clusters para utilizar la aplicación de integración como punto de conexión para las operaciones clave.

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

    azdata bdc kms show
    

Cifrado de las bases de datos y 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 por la jerarquía de claves anterior. Debe cifrar explícitamente mediante las claves administradas externamente.

En SQL Server, se instala una nueva clave asimétrica basada en la clave administrada externamente. Úselo 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 zona de cifrado:

    azdata bdc hdfs key describe --name <key name>
    
  3. Actualiza tu clave a la nueva clave administrada externamente.

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

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

    azdata bdc kms show
    azdata bdc hdfs key describe
    

Next steps