Compartir a través de


Rotación de claves de Always Encrypted mediante SQL Server Management Studio

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

En este artículo se describen las tareas para rotar claves maestras de columna y claves de cifrado de columna de Always Encrypted mediante SQL Server Management Studio (SSMS).

Para obtener información general sobre la administración de claves de Always Encrypted, incluidos algunos procedimientos recomendados y consideraciones de seguridad importantes, vea Información general de administración de claves de Always Encrypted.

Nota:

El uso de claves maestras de columna almacenadas en un HSM administrado en Azure Key Vault requiere SSMS 18.9 o versiones posteriores.

Rotación de claves maestras de columna

La rotación de una clave maestra de columna es el proceso por el cual se reemplaza una clave maestra de columna existente por otra nueva. Es posible que tenga que rotar una clave si se ha puesto en peligro o para cumplir con las directivas o normativas de cumplimiento de su organización que exigen que las claves criptográficas se rotan periódicamente. La rotación de claves maestras de columna implica descifrar las claves de cifrado de columnas que están protegidas con la clave maestra de columna actual, volver a cifrarlas con la nueva clave maestra de columna y actualizar los metadatos de clave.

Paso 1: aprovisionamiento de una nueva clave maestra de columna

Siga los pasos descritos en Aprovisionamiento de claves maestras de columna con el cuadro de diálogo Nueva clave maestra de columna.

Nota:

Al usar Azure Key Vault como almacén de claves, no se admite la rotación de claves administradas por cliente multinquilino. Asegúrate de que la nueva clave administrada por el cliente esté en la misma entidad que la existente.

Paso 2: cifrado de las claves de cifrado de columna con la nueva clave maestra de columna

Por lo general, una clave maestra de columna protege una o más claves de cifrado de columnas. Cada clave de cifrado de columna tiene un valor cifrado almacenado en la base de datos que es el producto de cifrar la clave de cifrado de columnas con la clave maestra de columna. En este paso, todas las claves de cifrado de columna, que están protegidas con la clave maestra de columna que se va a rotar, se cifrarán con la nueva clave maestra de columna, y el nuevo valor cifrado se almacenará en la base de datos. Como resultado, cada clave de cifrado de columnas afectada por la rotación tendrá dos valores cifrados: uno cifrado con la clave maestra de columna antigua y otro reciente, cifrado con la nueva.

  1. En el Explorador de objetos, vaya a la carpeta Seguridad>Claves de Always Encrypted>Claves maestras de columna y encuentre la clave maestra de columna que va a rotar.
  2. Haga clic con el botón derecho en ella y seleccione Rotar.
  3. En el cuadro de diálogo Rotación de clave maestra de columna , seleccione el nombre de la nueva clave maestra de columna que creó en el paso 1 en el campo Destino .
  4. Revise la lista de claves de cifrado de columna, protegidas por las claves maestras de columna existentes. Estas claves se verán afectadas por la rotación.
  5. Selecciona Aceptar.

SQL Server Management Studio obtiene los metadatos de las claves de cifrado de columna que están protegidas con la clave maestra de columna antigua y los metadatos de las claves maestras de columna antiguas y nuevas. Después, SSMS usará los metadatos de la clave maestra de columna para tener acceso al almacén de claves que contiene la clave maestra de columna antigua y descifrar las claves de cifrado de columnas. Posteriormente, SSMS tendrá acceso al almacén de claves que contiene la nueva clave maestra de columna para generar un nuevo conjunto de valores cifrados de las claves de cifrado de columna y, a continuación, agregará los nuevos valores a los metadatos (generación y emisión de instrucciones ALTER COLUMN ENCRYPTION KEY ).

Nota:

Asegúrese de que cada una de las claves de cifrado de columna, cifradas con la clave maestra de columna antigua, no esté cifrada con ninguna otra clave maestra de columna. En otras palabras, cada clave de cifrado de columna, afectada por la rotación, debe tener exactamente un valor cifrado en la base de datos. Si alguna de las claves de cifrado de columnas afectadas tiene más de un valor cifrado, tendrá que quitarlo para poder continuar con la rotación (consulte el paso 4 , en el que se explica cómo quitar un valor cifrado de una clave de cifrado de columna).

Paso 3: configuración de sus aplicaciones con la nueva clave maestra de columna

En este paso, debe asegurarse de que todas sus aplicaciones cliente que consultan columnas de la base de datos protegidas con la clave maestra de columna que va a rotar puedan acceder a la nueva clave maestra de columna (es decir, las columnas de la base de datos cifradas con una clave de cifrado de columna que, a su vez, está cifrada con la clave maestra de columna, que se va a rotar). Este paso depende del tipo de almacén de claves en el que se encuentre la nueva clave maestra de columna. Por ejemplo:

  • Si la nueva clave maestra de columna es un certificado guardado en el Almacén de certificados de Windows, tendrá que implementarlo en la misma ubicación del almacén de certificados (Usuario actual o Equipo local) que la especificada en la ruta de acceso de la clave de su clave maestra de columna en la base de datos. La aplicación debe poder acceder al certificado:
    • Si el certificado se guarda en la ubicación del almacén de certificados Usuario actual, será necesario importarlo en el almacén Usuario actual de la identidad de Windows (el usuario) de la aplicación.
    • Si el certificado se guarda en la ubicación del almacén de certificados Equipo local, la identidad de Windows de la aplicación deberá tener permiso para acceder al certificado.
  • Si la nueva clave maestra de columna se guarda en el Almacén de claves de Microsoft Azure, la aplicación se debe implementar de forma que se pueda autenticar en Azure y tenga permiso para obtener acceso a la clave.

Para más información, vea Creación y almacenamiento de claves maestras de columna para Always Encrypted.

Nota:

En este momento de la rotación, tanto la clave maestra de columna antigua como la nueva son válidas y se pueden usar para obtener acceso a los datos.

Paso 4: limpieza de los valores de clave de cifrado de columna cifrados con la clave maestra de columna antigua

Una vez que haya configurado todas las aplicaciones para que usen la nueva clave maestra de columna, quite de la base de datos los valores de las claves de cifrado de columnas que estén cifradas con la clave maestra de columna antigua . Al quitar los valores antiguos, garantizará que está preparado para la siguiente rotación (recuerde que cada clave de cifrado de columna protegida con una clave maestra de columna que se vaya a rotar debe tener exactamente un único valor cifrado).

Existe otro motivo para limpiar el valor antiguo antes de archivar o quitar la clave maestra de columna antigua, y está relacionado con el rendimiento: al realizar una consulta en una columna cifrada, es posible que un controlador cliente habilitado para Always Encrypted intente descifrar dos valores (el antiguo y el nuevo). El controlador no sabe cuál de las dos claves maestras de columna es válida en el entorno de la aplicación, por lo que recuperará los dos valores cifrados del servidor. Si no se puede descifrar uno de los valores, porque está protegido con la clave maestra de columna que no está disponible (por ejemplo, se trata de la clave maestra de columna que se ha quitado del almacén), el controlador tratará de descifrar otro valor con la clave nueva.

Advertencia

Si quita el valor de una clave de cifrado de columnas antes de que su clave maestra de columna correspondiente se haya puesto a disposición de una aplicación, esta última no podrá descifrar la columna de la base de datos.

  1. En el Explorador de objetos, vaya a la carpeta Seguridad>Claves de Always Encrypted y encuentre la clave maestra de columna existente que quiere reemplazar.
  2. Haga clic con el botón derecho en la clave maestra de columna existente y seleccione Limpieza.
  3. Revise la lista de valores de claves de cifrado de columna que se van a quitar.
  4. Selecciona Aceptar.

SQL Server Management Studio emitirá instrucciones ALTER COLUMN ENCRYPTION KEY para quitar valores cifrados de claves de cifrado de columna que se cifran con la clave maestra de columna antigua.

Paso 5: eliminación de metadatos de la clave maestra de columna antigua

Si decide quitar la definición de la clave maestra de columna antigua de la base de datos, siga los pasos que se indican a continuación.

  1. En el Explorador de objetos, vaya a la carpeta Seguridad>Claves de Always Encrypted>Claves maestras de columna y encuentre la clave maestra de columna antigua que quiere quitar de la base de datos.
  2. Haga clic con el botón derecho en la clave maestra de columna antigua y seleccione Eliminar. (Esto generará y emitirá una instrucción DROP COLUMN MASTER KEY para quitar los metadatos de clave maestra de columna).
  3. Selecciona Aceptar.

Nota:

Es muy recomendable no eliminar permanentemente la antigua clave maestra de columna después de la rotación. Debería conservarla en su almacén de claves actual o archivarla en otra ubicación segura. Si restaura la base de datos desde un archivo de copia de seguridad a un momento dado antes de configurar la nueva clave maestra de columna, necesitará la clave antigua para acceder a los datos.

Permisos para la rotación de la clave maestra de columna

La rotación de una clave maestra de columna requiere los siguientes permisos de base de datos:

  • ALTER ANY COLUMN MASTER KEY: es necesario para crear los metadatos de la nueva clave maestra de columna y eliminar los metadatos de la clave maestra de columna antigua.
  • ALTER ANY COLUMN ENCRYPTION KEY: es necesario para modificar los metadatos de la clave de cifrado de columnas (agregar nuevos valores cifrados).

También necesita permisos de almacén de claves para poder acceder a las claves maestras de columna antigua y nueva en sus respectivos almacenes de claves. Para obtener información detallada sobre los permisos de almacén de claves necesarios para las operaciones de administración de claves, vaya a Creación y almacenamiento de claves maestras de columna para Always Encrypted y busque la sección correspondiente a su almacén de claves.

Rotación de claves de cifrado de columna

La rotación de una clave de cifrado de columnas implica descifrar los datos de todas las columnas cifrados con la clave que se va a rotar y volver a cifrarlos con la nueva clave de cifrado de columnas.

Nota:

La rotación de una clave de cifrado de columnas puede tardar mucho tiempo si las tablas que contienen columnas cifradas con la clave que se va a rotar son grandes. Mientras se vuelven a cifrar los datos, las aplicaciones no pueden escribir en las tablas afectadas. Por lo tanto, la organización tiene que planear muy cuidadosamente cualquier rotación de claves de cifrado de columnas. Para realizar la rotación de una clave de cifrado de columnas, use el Asistente para Always Encrypted.

  1. Abra el asistente para la base de datos: haga clic con el botón derecho en la base de datos, seleccione Tareas y, a continuación, seleccione Cifrar columnas.
  2. Revise la página Introducción y, a continuación, seleccione Siguiente.
  3. En la página Selección de columna , expanda las tablas y busque todas las columnas que quiera reemplazar que actualmente estén cifradas con la clave de cifrado de columnas antigua.
  4. Para cada columna cifrada con la clave de cifrado de columna antigua, establezca Clave de cifrado en una nueva clave generada automáticamente. Nota: También puede crear una clave de cifrado de columnas antes de ejecutar el asistente. Consulte Aprovisionamiento de claves de cifrado de columnas con el cuadro de diálogo Nueva clave de cifrado de columnas.
  5. En la página Configuración de clave maestra , seleccione una ubicación para almacenar la nueva clave y seleccione un origen de clave maestra y, a continuación, seleccione Siguiente. Nota: Si usa una clave de cifrado de columna existente (no una clave generada automáticamente), no debe realizar ninguna acción en esta página.
  6. En la página Validación, elija si ejecutar el script inmediatamente o crear un script de PowerShell y, a continuación, seleccione Siguiente.
  7. En la página Resumen , revise las opciones que ha seleccionado y, a continuación, seleccione Finalizar y cierre el asistente cuando haya finalizado.
  8. En el Explorador de objetos, vaya a la carpeta Seguridad > Siempre claves cifradas> Claves de cifrado de columna y encuentre la clave de cifrado de columnas antigua que quiere quitar de la base de datos. Haga clic con el botón derecho en la clave y seleccione Eliminar.

Permisos para la rotación de las claves de cifrado de columna

La rotación de una clave de cifrado de columnas requiere los siguientes permisos de base de datos: ALTER ANY COLUMN MASTER KEY: es obligatorio si se usa una nueva clave de cifrado de columnas generada de forma automática (también se generará una nueva clave maestra de columna y sus metadatos nuevos). ALTER ANY COLUMN ENCRYPTION KEY: es necesario para agregar metadatos a la nueva clave de cifrado de columnas.

También necesita permisos de almacén de claves para poder acceder a las claves maestras de columna de las claves de cifrado de columna antigua y nueva. Para obtener información detallada sobre los permisos de almacén de claves necesarios para las operaciones de administración de claves, vaya a Creación y almacenamiento de claves maestras de columna para Always Encrypted y busque la sección correspondiente a su almacén de claves.