Información general de administración de claves de Always Encrypted

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Always Encrypted usa dos tipos de claves criptográficas para proteger los datos: una clave para cifrar los datos y otra clave para cifrar la clave que cifra los datos. La clave de cifrado de columnas cifra los datos, mientras que la clave maestra de columna cifra la clave de cifrado de columnas. En este artículo se proporciona información general detallada para administrar estas claves de cifrado.

Cuando se habla de las claves de Always Encrypted y la administración de claves, es importante comprender la diferencia entre las claves criptográficas reales y los objetos de metadatos que describen las claves. Los términos clave de cifrado de columnas y clave maestra de columna hacen referencia a las claves criptográficas reales, mientras que los términos metadatos de clave de cifrado de columnas y metadatos de clave maestra de columna hacen referencia a las descripciones de las claves de Always Encrypted en la base de datos.

  • Lasclaves de cifrado de columnas son las claves de cifrado de contenido que se usan para cifrar datos. Como su nombre indica, las claves de cifrado de columnas se usan para cifrar los datos de las columnas de la base de datos. Puede cifrar una o más columnas con la misma clave de cifrado de columnas, o puede usar varias claves de cifrado de columnas en función de los requisitos de la aplicación. Las claves de cifrado de columnas están a su vez cifradas, y en la base de datos solo se almacenan los valores cifrados de las claves de cifrado de columnas (como parte de los metadatos de clave de cifrado de columnas). Los metadatos de clave de cifrado de columnas se almacenan en las vistas de catálogo sys.column_encryption_keys (Transact-SQL) y sys.column_encryption_key_values (Transact-SQL) . Las claves de cifrado de columnas que se usan con el algoritmo AES-256 tienen una longitud de 256 bits.

  • Las claves maestras de columna protegen las claves usadas para cifrar las claves de cifrado de columnas. Las claves maestras de columna deben almacenarse en un almacén de claves de confianza, como el Almacén de certificados de Windows, el Almacén de claves de Azure o un módulo de seguridad de hardware. La base de datos solo contiene metadatos sobre las claves maestras de columna (el tipo de almacén de claves y la ubicación). Los metadatos de clave maestra de columna se almacenan en la vista de catálogo sys.column_master_keys (Transact-SQL) .

Los metadatos clave del sistema de bases de datos no contienen claves maestras de columna en texto no cifrado ni claves de cifrado de columna en texto no cifrado. La base de datos solo contiene información sobre el tipo y la ubicación de las claves maestras de columna y valores cifrados de las claves de cifrado de columnas. Esto significa que nunca se exponen claves de texto no cifrado al sistema de base de datos, lo que garantiza la seguridad de los datos protegidos mediante Always Encrypted, incluso si el sistema de base de datos está en peligro. Para asegurarse de que el sistema de base de datos no puede obtener acceso a las claves de texto no cifrado, asegúrese de ejecutar las herramientas de administración de claves en un equipo diferente al que hospeda la base de datos. Revise la sección Consideraciones de seguridad para la administración de claves a continuación para obtener más información.

Dado que la base de datos solo contiene datos cifrados (en columnas protegidas con Always Encrypted) y no puede obtener acceso a las claves de texto no cifrado, no puede descifrar los datos. Esto significa que la consulta de columnas Always Encrypted solo devolverá valores cifrados, por lo que las aplicaciones cliente que necesitan cifrar o descifrar datos protegidos deben tener acceso a la clave maestra de columna y a las correspondientes claves de cifrado de columnas. Para obtener detalles, vea Desarrollo de aplicaciones con Always Encrypted.

Tareas de administración de claves

El proceso de administración de claves se puede dividir en las siguientes tareas de alto nivel:

  • Aprovisionamiento de claves: crear las claves físicas en un almacén de claves de confianza (por ejemplo, en el almacén de certificados de Windows, Azure Key Vault o un módulo de seguridad de hardware), cifrar claves de cifrado de columnas con claves maestras de columna y crear metadatos para ambos tipos de claves en la base de datos.

  • Rotación de claves: reemplaza periódicamente una clave existente por una clave nueva. Es posible que tenga que rotar una clave si la clave se ha puesto en peligro o para cumplir con las directivas de su organización o las regulaciones de cumplimiento que exijan la rotación de las claves criptográficas.

Roles de administración de claves

Hay dos roles distintos de los usuarios que administran claves de Always Encrypted; administradores de seguridad y administradores de bases de datos (DBA):

  • Administrador de seguridad: genera claves de cifrado de columna y claves maestras de columna y administra almacenes de claves que contienen las claves maestras de columna. Para realizar estas tareas, un administrador de seguridad debe poder acceder a las claves y al almacén de claves, pero no necesita acceso a la base de datos.
  • DBA: administra los metadatos sobre las claves de la base de datos. Para realizar tareas de administración de claves, el DBA debe poder administrar los metadatos de clave en la base de datos, pero no necesita tener acceso a las claves o al almacén de claves que contiene las claves maestras de columna.

Teniendo en cuenta los roles anteriores, hay dos maneras de realizar tareas de administración de claves para Always Encrypted: con separación de rolesy sin separación de roles. Según las necesidades de la organización, puede seleccionar el proceso de administración de claves que mejor se adapte a sus requisitos.

Gestión de claves con separación de roles

Cuando las claves de Always Encrypted se administran con separación de roles, diferentes personas de una organización asumen los roles de administrador de seguridad y DBA. Un proceso de administración de claves con separación de roles garantiza que los DBA no tengan acceso a las claves o almacenes de claves que contienen las claves reales y los administradores de seguridad no tienen acceso a la base de datos que contiene datos confidenciales. Se recomienda que use la administración de claves con separación de roles si su objetivo es asegurarse de que los DBA de la organización no tengan acceso a información confidencial.

Note

Los administradores de seguridad generan y trabajan con las claves de texto no cifrado, por lo que no deben realizar sus tareas en los mismos equipos que hospedan un sistema de base de datos o equipos a los que puedan acceder los DBA o cualquier otra persona que pueda ser posible adversario.

Administración de claves sin separación de roles

Cuando las claves de Always Encrypted se administran sin separación de roles, una sola persona puede asumir roles de administrador de seguridad y DBA, lo que significa que la persona debe tener acceso y administrar los almacenes de claves y los metadatos de clave. La administración de claves sin separación de roles se recomienda para las organizaciones que usan el modelo de DevOps, o si la base de datos está hospedada en la nube y el objetivo principal es restringir a los administradores de la nube (pero no a los DBA locales), desde el acceso a datos confidenciales.

Herramientas para administrar claves de Always Encrypted

Las claves de Always Encrypted se pueden administrar mediante SQL Server Management Studio (SSMS) y PowerShell:

Consideraciones de seguridad para la administración de claves

El objetivo principal de Always Encrypted es garantizar la seguridad de la información confidencial almacenada en una base de datos, incluso si el sistema de base de datos o su entorno de hospedaje están en peligro. A continuación se incluyen algunos ejemplos de ataques de seguridad en los que Always Encrypted puede ayudar a impedir pérdidas de información confidencial:

  • Un usuario malintencionado de base de datos con un alto nivel de privilegios, como un DBA, consulta columnas con información confidencial.
  • Un administrador no autorizado de un equipo que hospeda una instancia de SQL Server examina la memoria de un proceso de SQL Server o los archivos de volcado de memoria del proceso de SQL Server.
  • Un operador malintencionado de un centro de datos consulta una base de datos de clientes, examina los archivos de volcado de memoria de SQL Server o examina la memoria de un equipo que hospeda los datos de clientes en la nube.
  • Un software malicioso se ejecuta en un equipo que hospeda la base de datos.

Para asegurarse de que Always Encrypted impida eficazmente estos ataques, el proceso de administración de claves debe garantizar que nunca se revelen a un posible atacante las claves maestras de columna y las claves de cifrado de columnas, así como las credenciales de un almacén de claves que contiene las claves maestras de columna. Estas son algunas instrucciones que debe seguir:

  • No genere nunca claves maestras de columna ni claves de cifrado de columnas en un equipo que hospede la base de datos. En su lugar, genere las claves en un equipo independiente que sea exclusivo para la administración de claves o en un equipo que hospede las aplicaciones que necesitarán tener acceso a las claves. Esto significa que nunca debe ejecutar las herramientas usadas para generar las claves en el equipo en el que se hospeda la base de datos, porque si un atacante accede a un equipo que se usa para aprovisionar o mantener las claves de Always Encrypted podrá obtener las claves, incluso si estas solo aparecen brevemente en la memoria de la herramienta.
  • Para asegurarse de que el proceso de administración de claves no revele accidentalmente las claves maestras de columna o las claves de cifrado de columnas, es fundamental que identifique los posibles adversarios y las amenazas de seguridad antes de definir e implementar un proceso de administración de claves. Por ejemplo, si su objetivo es garantizar que los DBA no tengan acceso a información confidencial, el responsable de generar las claves no puede ser un DBA. Pero un DBA puede administrar los metadatos de clave de la base de datos, ya que los metadatos no contienen las claves de texto no cifrado.