Compartir a través de


Configuración del cifrado de columnas mediante el Asistente para Siempre Cifrado en SSMS

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

El asistente para Always Encrypted es una herramienta eficaz que permite establecer la configuración de Always Encrypted elegida para las columnas de la base de datos seleccionadas. Según la configuración actual y la configuración de destino elegida, el asistente puede cifrar una columna, descifrarla (quitar el cifrado) o volver a cifrarla (por ejemplo, con una nueva clave de cifrado de columnas o con un tipo de cifrado diferente del actual configurado para la columna). Es posible configurar varias columnas en una misma ejecución del asistente.

El asistente permite cifrar columnas con claves de cifrado existentes, generar una nueva clave de cifrado de columnas o una nueva clave de cifrado de columna y una nueva clave maestra de columna.

La evaluación del asistente permite evaluar las tablas de una base de datos seleccionada o elegir tablas específicas que se van a analizar. Identifica las columnas adecuadas para el cifrado y resalta las incompatibles con Always Encrypted debido a su tipo de datos, restricciones y otros factores. El asistente proporciona una lista detallada de restricciones para cada campo, que explica por qué no se pueden cifrar columnas específicas.

Cuando la base de datos está configurada con un enclave seguro, puede ejecutar operaciones criptográficas en su lugar sin mover datos fuera de la base de datos. El asistente quita todas las dependencias que bloquean el cambio de esquema de la columna que se va a cifrar. Emite un cifrado en contexto para cada columna mediante el enclave dentro del motor de base de datos. Cuando finalice el cifrado, el asistente vuelve a crear las dependencias. Para más información sobre Always Encrypted con enclaves seguros, vea el artículo Uso de Always Encrypted con enclaves seguros con el controlador JDBC.

Cuando la base de datos no está configurada con un enclave seguro, el asistente le permite habilitar un enclave seguro. Supongamos que decide no habilitar un enclave seguro o no usa claves habilitadas para el enclave. En ese caso, el asistente mueve los datos fuera de la base de datos y realiza operaciones criptográficas dentro del proceso de SSMS. El asistente crea una nueva tabla (o tablas) con la configuración de cifrado deseada en la base de datos, carga todos los datos de las tablas originales, realiza las operaciones criptográficas solicitadas, carga los datos en las nuevas tablas y, a continuación, intercambia una o varias tablas originales con las nuevas tablas.

Sugerencia

El uso del cifrado en contexto mediante Always Encrypted con enclaves seguros, si está disponible en su entorno, podría reducir considerablemente el tiempo y la confiabilidad de las operaciones criptográficas.

La ejecución de operaciones criptográficas puede llevar mucho tiempo. Durante ese tiempo, la base de datos no está disponible para escribir transacciones. PowerShell es una herramienta recomendada para realizar operaciones criptográficas en tablas de mayor tamaño. Consulte Configuración del cifrado de columnas mediante Always Encrypted con PowerShell o Configuración del cifrado de columnas en contexto con PowerShell.

Permisos

Para realizar operaciones criptográficas mediante el asistente, debe tener los VIEW ANY COLUMN MASTER KEY DEFINITION permisos y VIEW ANY COLUMN ENCRYPTION KEY DEFINITION . También necesita permisos de almacén de claves para crear, acceder y usar la clave maestra de columna. Para obtener información detallada sobre los permisos del almacén de claves, vaya a Crear y almacenar claves maestras de columna para Always Encrypted o busque una sección relevante para el almacén de claves.

Abrir el asistente de Always Encrypted

Puede iniciar el asistente en tres niveles distintos:

  • En un nivel de base de datos, si desea cifrar varias columnas en tablas diferentes.
  • En un nivel de tabla, si desea cifrar varias columnas en la misma tabla.
  • En un nivel de columna, si desea cifrar una columna específica.
  1. Conéctese a SQL Server con el componente Explorador de objetos de SQL Server Management Studio.

  2. Para cifrar:

    • Varias columnas ubicadas en tablas diferentes de una base de datos, haga clic con el botón derecho en la base de datos, seleccione Tareas y, a continuación, seleccione Asistente para Always Encrypted.

    • Varias columnas de la misma tabla, vaya a la tabla, haga clic con el botón derecho en ella y, a continuación, seleccione Asistente para Always Encrypted.

    • Una columna individual, vaya a la columna, haga clic con el botón derecho en ella y, a continuación, seleccione Asistente para Always Encrypted.

Página Selección de columnas

En esta página, seleccionará las columnas para cifrar, volver a cifrar o descifrar y definir la configuración de cifrado de destino para ellas.

Para cifrar una columna de texto no cifrado, seleccione un tipo de cifrado (determinista o aleatorio) y una clave de cifrado para la columna.

Seleccione el tipo de cifrado deseado y la clave para cambiar un tipo de cifrado o girar (cambiar) una clave de cifrado de columna para una columna ya cifrada.

Si quiere que el asistente cifre o vuelva a cifrar una o más columnas con una nueva clave de cifrado de columnas, seleccione una clave que contenga (New) en su nombre. El asistente genera la clave.

Para descifrar una columna cifrada actualmente, seleccione Texto sin formato para el tipo de cifrado.

Sugerencia

Si quiere usar el cifrado en contexto y usa claves existentes, asegúrese de seleccionar claves habilitadas para enclave, anotadas con (habilitado para enclave) .

El asistente no admite operaciones criptográficas en tablas temporales y en memoria. Puede crear tablas temporales o en memoria vacías con Transact-SQL, e insertar datos mediante su aplicación.

Página Evaluación de columnas

Las tablas y columnas seleccionadas se evalúan para la idoneidad de Always Encrypted o Always Encrypted con enclaves seguros. La evaluación se inicia automáticamente mostrando una barra de estado y una lista de las tablas y columnas que evalúa actualmente, que se realizan y qué hacer. La evaluación comprueba si una columna de tabla cumple los requisitos de Always Encrypted o Always Encrypted con enclaves seguros en función de las limitaciones.

Si una columna no cumple los requisitos, la evaluación muestra un estado "Error" para esa columna. Al seleccionar el vínculo Mensajes, podrá obtener información detallada sobre por qué no se puede cifrar esa columna específica.

Puede cifrar las columnas de evaluación pasadas activando la casilla . El asistente omite automáticamente las columnas que no pasan la evaluación. Además, puede exportar los resultados a un archivo CSV o de texto seleccionando el botón Informe.

Página Configuración de clave maestra

Si seleccionó una clave de cifrado de columna generada automáticamente para cualquier columna de la página anterior, debe seleccionar una clave maestra de columna existente o configurar una nueva clave maestra de columna que cifre la clave de cifrado de columnas en esta página.

Al configurar una nueva clave maestra de columna, puede elegir una clave existente en el Almacén de certificados de Windows o Azure Key Vault y hacer que el asistente cree solo un objeto de metadatos para la clave de la base de datos, o bien puede optar por generar la clave y el objeto de metadatos que describe la clave en la base de datos.

Para usar el cifrado en contexto, seleccione Permitir cálculos de enclave para una nueva clave maestra de columna. La selección de esta casilla solo se permite si la base de datos está configurada con un enclave seguro.

Para obtener más información sobre cómo crear y almacenar claves maestras de columna en el Almacén de certificados de Windows, Azure Key Vault u otros almacenes de claves, consulte Crear y almacenar claves maestras de columna para Always Encrypted o Administrar claves para Always Encrypted con enclaves seguros.

Sugerencia

El asistente permite examinar y crear claves solo en el Almacén de certificados de Windows y Azure Key Vault. También genera automáticamente los nombres de las nuevas claves y los objetos de metadatos de la base de datos que los describen. Supongamos que necesita más control sobre cómo se aprovisionan las claves (y más opciones para un almacén de claves que contiene la clave maestra de columna). En ese caso, puede usar los cuadros de diálogo Nueva clave maestra de columna y Nueva clave de cifrado de columnas para crear primero las claves y, a continuación, ejecutar el asistente y elegir las claves que ha creado. Vea Aprovisionamiento de claves maestras de columna con el cuadro de diálogo Nueva clave maestra de columna o Aprovisionamiento de claves habilitadas para el enclave y Aprovisionamiento de claves de cifrado de columnas con el cuadro de diálogo Nueva clave de cifrado de columnas.

Página Configuración de cifrado local

Si ha configurado un enclave seguro en la base de datos y usa claves habilitadas para el enclave, esta página le permite especificar los parámetros de atestación de enclave necesarios para el cifrado en contexto. Si no desea usar el cifrado en contexto, anule la selección de Usar cifrado local para las columnas aptas para continuar con el cifrado del lado cliente. Se recomienda dejar esta casilla habilitada para que el asistente pueda usar el cifrado local.

Para más información sobre la atestación de enclave, consulte Configuración de la atestación para Always Encrypted mediante Azure Attestation

Página de configuración de ejecución

El asistente admite dos enfoques para configurar la configuración de cifrado de destino: en línea y sin conexión.

Con el enfoque sin conexión, las tablas de destino y las tablas relacionadas con las tablas de destino (por ejemplo, las tablas con las que una tabla de destino tienen relaciones de clave externa) no están disponibles para escribir transacciones durante toda la duración de la operación. La semántica de restricciones de clave externa (CHECK o NOCHECK) siempre se conserva cuando se utiliza el enfoque sin conexión.

Con el enfoque en línea, la operación de copiar, cifrar, descifrar o volver a cifrar los datos se realiza de forma incremental. Las aplicaciones pueden leer y escribir datos desde y en las tablas de destino a lo largo de la operación de movimiento de datos, excepto la última iteración, la duración de la cual está limitada por el parámetro tiempo de inactividad máximo. Para detectar y procesar los cambios que las aplicaciones pueden realizar mientras se copian los datos, el asistente habilita Change Tracking en la base de datos de destino. Debido a esto, es probable que el enfoque en línea consuma más recursos en la base de datos que el enfoque sin conexión. La operación también puede tardar más tiempo con el enfoque en línea, especialmente si se ejecuta una carga de trabajo con mucha escritura en la base de datos. El enfoque en línea se puede usar para cifrar una tabla a la vez y la tabla debe tener una clave principal. De forma predeterminada, las restricciones de clave externa se vuelven a crear con la opción NOCHECK para minimizar el impacto en las aplicaciones. Puede exigir la conservación de la semántica de restricciones de clave externa mediante la habilitación de la opción Keep check foreign key constraints.

Estas son las directrices para elegir entre los enfoques sin conexión y en línea:

Use el enfoque sin conexión:

  • Para minimizar la duración de la operación.
  • Para cifrar, descifrar o volver a cifrar columnas en varias tablas al mismo tiempo.
  • Si la tabla de destino no tiene una clave principal.

Use el enfoque en línea:

  • Para minimizar el tiempo de inactividad o la falta de disponibilidad de la base de datos en las aplicaciones.

Cifrado posterior

Borre la caché de planes de todos los lotes y procedimientos almacenados que tienen acceso a la tabla para actualizar la información de cifrado de los parámetros.

ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;

Nota:

Si no quita el plan de la consulta afectada de la memoria caché, es posible que se produzca un error en la primera ejecución de la consulta después del cifrado.

Use ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE o DBCC FREEPROCCACHE para borrar cuidadosamente la memoria caché del plan, ya que puede provocar una degradación temporal del rendimiento de las consultas. Para minimizar el impacto negativo de limpiar la memoria caché, es posible eliminar de forma selectiva los planes solo para las consultas afectadas.

Llame a sp_refresh_parameter_encryption para actualizar los metadatos de los parámetros de cada módulo (procedimiento almacenado, función, vista, desencadenador) que se almacenan en sys.parameters y que podrían haberse invalidado debido al cifrado de las columnas.