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:
- Conceptos y guía de configuración del cifrado en reposo
- Guía de uso de las zonas de cifrado de HDFS de Clústeres de macrodatos de SQL Server
- Guía de uso del cifrado de datos transparente (TDE) en reposo de Clústeres de macrodatos de SQL Server
Requisitos previos
- Notas de la versión para los Clústeres de macrodatos de SQL Server 2019. Se requiere CU11+.
- Herramientas de macrodatos, incluido azdata 20.3.5+.
- Usuario de Clústeres de macrodatos de SQL Server con privilegios administrativos de Kubernetes (miembro del rol clusterAdmins). Para obtener más información, consulte Administración del acceso al clúster de macrodatos en el modo de Active Directory.
- Aplicación de plantilla de proveedor externo. Consulte Cifrado en reposo: BDC de SQL Server.
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).
En el diagrama siguiente 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
En el equipo local, vaya a la carpeta que contiene kms_plugin_app, las aplicaciones de plantilla Clústeres de macrodatos AppDeploy.
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.
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.
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): ...
Desde la carpeta que tiene spec.yaml, implemente la aplicación en Clústeres de macrodatos mediante este comando:
azdata app create -s
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
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.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.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;
Ejecute el siguiente comando para comprobar la clave de cifrado actual:
azdata bdc hdfs key describe
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>
Revierta la clave a la nueva clave administrada externa:
azdata bdc hdfs key roll --name <new key name>
Inicie el cifrado con este comando:
azdata bdc hdfs encryption-zone reencrypt –-path <your EZ path> --action start
Compruebe la jerarquía de claves mediante los comandos siguientes:
azdata bdc kms show azdata bdc hdfs key describe