Bases de datos

Proteja sus datos con Actian Vector, Parte 1

Martin Fuerderer

3 de diciembre de 2024

imagen que muestra a una persona asegurando datos con actian vector

La necesidad de proteger los datos de accesos no autorizados no es nueva. Hace tiempo que las leyes lo exigen cuando se maneja información personal identificable (IPI). Pero el creciente uso de servicios de datos en la nube para todo tipo de datos de propiedad que no son PII ahora hace que la seguridad de los datos sea una parte importante de la mayoría de las estrategias de datos.

Este es el comienzo de una serie de entradas de blog que analizan en detalle cómo se puede garantizar la seguridad de los datos con Actian Vector. El primer post explica el concepto básico de cifrado en reposo y cómo la funcionalidad de cifrado de base de datos de Actian Vector lo implementa.

Entendiendo la encriptación en reposo

El cifrado en reposo se refiere al cifrado de données au reposes decir, los datos que persisten, normalmente en disco o en almacenamiento en la nube. Este cifrado puede utilizarse en un sistema de base de datos que contenga principalmente datos de usuario en tablas e índices, pero que también incluya los métadonnées que describen la organización de los datos de usuario. El objetivo principal del cifrado en reposo es proteger los datos persistentes del acceso directo no autorizado en disco o en almacenamiento en la nube, es decir, sin conexión al sistema de base de datos.

El cifrado puede ser transparente para las aplicaciones de bases de datos. En este caso, el cifrado y el descifrado son gestionados por el administrador, normalmente a nivel de las bases de datos. La aplicación no necesita conocer el cifrado. Se conecta a la base de datos para acceder a los datos y trabajar con ellos como si no hubiera ningún tipo de cifrado. En Actian Vector, este tipo de cifrado en reposo se denomina cifrado de base de datos.

En cambio, el cifrado a nivel de aplicación requiere que la aplicación se encargue del cifrado y el descifrado. A menudo, esto significa que el usuario de la aplicación tiene que proporcionar una clave de cifrado tanto para el cifrado (por ejemplo, cuando se insertan los datos) como para el descifrado (por ejemplo, cuando se seleccionan los datos). Aunque es más complicado, proporciona más control a la aplicación y al usuario.

Por ejemplo, el cifrado puede aplicarse de forma más precisa a tablas específicas, columnas de tablas o incluso valores de registros individuales en columnas de tablas. Puede ser posible utilizar claves de cifrado individuales para valores de datos diferentes. Así, los usuarios pueden cifrar sus datos privados con su propia clave de cifrado y estar seguros de que sin tener esta clave de cifrado, ningún otro usuario puede ver los datos en texto claro. En Actian Vector, el cifrado a nivel de aplicación se denomina cifrado basado en funciones.

Uso de la encriptación de bases de datos en Actian Vector

En Actian Vector, el cifrado que es transparente para la aplicación funciona en el ámbito de una base de datos y, por lo tanto, se denomina cifrado de base de datos. Si una base de datos está encriptada o no se determina con la creación de la base de datos y no se puede cambiar más tarde. Cuando se crea una base de datos con cifrado de base de datos, se cifran todos los datos persistentes en tablas e índices, así como métadonnées de la base de datos.

El método de cifrado es AES de 256 bits, que requiere una clave de cifrado simétrica de 32 bytes. Simétrica significa que se utiliza la misma clave para cifrar y descifrar los datos. Esta clave se genera individualmente para cada base de datos cifrada y se denomina clave (de cifrado) de la base de datos.

Para que la clave de la base de datos esté disponible, se almacena en un fichero interno del sistema del servidor de bases de datos, donde está protegida por una frase de contraseña. Esta frase de contraseña la proporciona el usuario al crear la base de datos. Sin embargo, la clave de la base de datos no se utiliza para cifrar directamente los datos del usuario. En su lugar, se utiliza para cifrar, es decir, proteger, otro conjunto de claves de cifrado que, a su vez, se utilizan para cifrar los datos del usuario en las tablas y los índices. Este conjunto de claves de cifrado se denomina claves (de cifrado) de tabla.

Una vez creada la base de datos, el administrador puede utilizar la frase de contraseña elegida para "bloquear" la base de datos. Cuando la base de datos está bloqueada, no se puede acceder a los datos cifrados. Del mismo modo, el administrador también utiliza la frase de contraseña para "desbloquear" una base de datos bloqueada y, de este modo, volver a permitir el acceso a los datos cifrados. Cuando la base de datos está desbloqueada, el administrador puede cambiar la frase de contraseña. Si se desea, también es posible rotar la clave de la base de datos al cambiar la frase de contraseña.

La rotación de la clave de la base de datos es opcional, porque significa que todo el contenedor de las claves de la tabla necesita ser descifrado con la antigua clave de la base de datos para luego volver a cifrarlo con la nueva clave de la base de datos. Dado que este contenedor de las claves de tabla también contiene otras métadonnées, puede ser bastante grande y, por tanto, la rotación de la clave de base de datos puede convertirse en una operación lenta y costosa desde el punto de vista computacional. Por lo tanto, la rotación de la clave de la base de datos sólo se recomienda si existe una sospecha razonable de que la clave de la base de datos ha sido comprometida. La mayoría de las veces, cambiar sólo la frase de contraseña debería ser sufficiente. Y se hace rápidamente.

Con Actian Vector también es posible rotar las claves de cifrado de las tablas. Esto se hace independientemente de cambiar la frase de contraseña y la clave de la base de datos, y se puede realizar en una base de datos completa así como en tablas individuales. Para cada clave que se rote, los datos deben descifrarse con la clave antigua y volverse a cifrar con la nueva. En este caso, se trata de los datos de usuario en tablas e índices. Si estos datos son muy grandes, la rotación de claves puede ser muy costosa y llevar mucho tiempo. Esto es especialmente cierto cuando se rotan todas las claves de las tablas de una base de datos.

Un workflow típico del uso del cifrado de bases de datos en Actian Vector:

  • Crear una base de datos cifrada:
      1. createdb -encrypt <database_name>

Este comando solicita al usuario dos veces la frase de contraseña y, a continuación, crea la base de datos con cifrado. La nueva base de datos permanece desbloqueada, es decir, es fácilmente accesible, hasta que se bloquea explícitamente o hasta que se apaga el sistema de base de datos.

Es importante que el creador de la base de datos recuerde la frase de contraseña proporcionada, ya que es necesaria para desbloquear la base de datos y hacerla accesible, por ejemplo, tras un reinicio del sistema de base de datos.

  • Bloquea la base de datos encriptada:
      1. Conéctese a la base de datos desbloqueada con el Terminal Monitor:
        sql <database_name>
      2. SQL para bloquear la base de datos:
        DISABLE PASSPHRASE '<user supplied passphrase>'; \g

La sentencia SQL bloquea la base de datos. Los nuevos intentos de conexión a la base de datos se rechazan con el error correspondiente. Las sesiones que se conectaron anteriormente pueden seguir accediendo a los datos hasta que se desconecten.

Para que el bloqueo de la base de datos también sea inmediatamente effectivo para las sesiones ya conectadas, emita adicionalmente la siguiente sentencia SQL:

      1. CALL X100(TERMINATE); \g
  • Desbloquea la base de datos encriptada:
      1. Conéctese a la base de datos bloqueada con el Monitor de Terminal y la opción "-no_x100":
        sql -no_x100 <database_name>
      2. SQL para desbloquear la base de datos:
        ENABLE PASSPHRASE '<user supplied passphrase>'; \g

La conexión con la opción "-no_x100" conecta sin acceso a los datos del almacén, pero permite que la sentencia SQL administrativa desbloquee la base de datos.

  • Cambia la frase de contraseña de la base de datos encriptada:
      1. Conéctese a la base de datos desbloqueada con el Terminal Monitor:
        sql <database_name>
      2. SQL para cambiar la frase de contraseña:
        ALTER PASSPHRASE '<old user supplied passphrase>' TO
        '<new passphrase>'; \g

De nuevo, es importante que el administrador recuerde la nueva contraseña.

Después de cambiar la frase de contraseña de una base de datos cifrada, se recomienda realizar una nueva copia de seguridad de la base de datos (también conocida como "punto de control de la base de datos") para garantizar que la base de datos se pueda recuperar por completo.

  • Cuando la base de datos ya no sea necesaria, destrúyela:
      1. destroydb <database_name>

Tenga en cuenta que la frase de contraseña de la base de datos cifrada no es necesaria para destruirla. El comando sólo puede ser ejecutado por usuarios con los privilegios adecuados, es decir, el propietario de la base de datos y los administradores.

Esta primera entrada del blog de la serie sobre seguridad de bases de datos explicaba el concepto de cifrado en reposo y cómo se utiliza el cifrado transparente, que en Actian Vector se denomina Cifrado de bases de datos.

La próxima entrada de blog de esta serie echará un vistazo al cifrado basado en funciones en Actian Vector.

Fotografía de Martin Fuerderer

Sobre Martin Fuerderer

Martin Fuerderer es ingeniero de software principal de HCLSoftware. Ha trabajado en muchas áreas diferentes del desarrollo de servidores de bases de datos durante los últimos 25 años. En los últimos años, se ha sumergido en el tema de la seguridad en servidores de bases de datos.