Saltar al contenido

Agregar una Columna Cifrada a una Tabla

El cifrado a nivel de aplicación se puede utilizar para proteger los datos confidenciales almacenados en las columnas de la tabla. El cifrado y descifrado se llevan a cabo dentro del motor empresarial de Vinyl. En consecuencia, el cifrado a nivel de aplicación es independiente del proveedor: Vinyl admite el cifrado de columnas a nivel de aplicación en todos los proveedores de RDBMS.

Para agregar una columna cifrada a una tabla, comience iniciando sesión en Vinyl como administrador.

  1. Navegue hasta App Workbench
  2. Haga clic en el ficha Tablas
  3. Identifique la tabla a la que agregar la columna y haga clic en el icono Abrir registro correspondiente.
  4. En el panel Columnas, haga clic en el botón + Columna
  5. Proporcione la columna Nombre y seleccione las siguientes opciones:
    • Tipo de datos lógicos: Cadena
    • Tipo de datos físicos: Texto cifrado
  6. Haga clic en el botón Guardar
  7. Haga clic en el icono Cerrar (X) para cerrar la ventana emergente.

Cualquier valor escrito en la columna se cifrará automáticamente. Los valores leídos de la columna se descifrarán automáticamente.

Si tiene acceso directo a la base de datos, puede confirmar que los datos estén cifrados. Comience cifrando un valor:

  1. En el panel Tabla, ubique la tabla y haga clic en el ícono Resultados para ver los datos de la tabla.
  2. Haga clic en el icono Editar para modificar una fila existente.
  3. Proporcione un valor para la columna cifrada.
  4. Haga clic en el ícono Guardar

Conéctese a la base de datos utilizando una herramienta como * SQL Server Management Studio*. Seleccione los datos de la tabla. Los datos cifrados tendrán como prefijo la secuencia de bytes 0x09F0.

Usar una Columna de Tabla Cifrada

Las columnas cifradas se pueden utilizar de varias formas. Normalmente, un desarrollador creará un objeto de datos que selecciona la columna cifrada de la tabla de destino. Al utilizar la seguridad basada en roles, el desarrollador puede limitar el acceso al objeto de datos. Luego, el desarrollador puede vincular un panel al objeto de datos y un control de Texto o Contraseña a la columna cifrada. En ese momento, los usuarios con permiso para el objeto de datos podrán ver y modificar el valor de texto sin formato.

Además de vincular controles a columnas cifradas, también es posible crear reglas comerciales CRUD que copian datos hacia y desde columnas cifradas. Las reglas de negocio CRUD se pueden utilizar para:

  • Migrar datos de columnas no cifradas a columnas cifradas (o viceversa).
  • Introducir o sacar datos confidenciales de un sistema de externo.
  • Pasar datos confidenciales a un extremo de servicio web REST u OData.
  • Finalmente, los complementos pueden utilizar columnas cifradas. Sin embargo, la compatibilidad con columnas cifradas varía según el complemento. Consulte la documentación del complemento para obtener información adicional.

Claves de Cifrado de Datos

Los datos de la columna se cifran con una clave de cifrado de datos (DEK). Cada fuente de datos tiene su propio conjunto de claves móviles. Aunque se puede utilizar cualquier clave para descifrar datos, solo se utiliza una clave para el cifrado en un momento dado. Se crea un nuevo DEK cada 90 días.

Los DEK están vinculados a los siguientes atributos en el modelo lógico de Vinyl:

  • DataSourceId: el identificador de la fuente de datos aísla las claves.
  • TableId: el identificador de la tabla se utiliza para crear una clave derivada para la tabla.
  • ColumnId: el identificador de columna se utiliza para crear una clave derivada para la columna.

Advertencia

Si el DataSourceId, TableId o ColumnId cambio, los valores cifrados existentes no se pueden descifrar.

Además, cada valor de columna tiene un vector de inicialización único. Como resultado, el mismo valor de texto sin formato tendrá un texto cifrado binario diferente en diferentes filas.

Visualización de Claves de Cifrado de Datos

Debido a que las DEK se utilizan para cifrar datos dentro de la base de datos, el material de la clave criptográfica no se puede almacenar en la base de datos. Por este motivo, las DEK se almacenan en una de varias ubicaciones configurables. Consulte Configuración de cifrado de datos para obtener más información.

Aunque el material clave en sí no se almacena en la base de datos, los atributos clave son visibles desde el Vinyl. Para obtener los detalles de la clave de cifrado de una fuente de datos, comience iniciando sesión en Vinyl como administrador.

  1. Navegue hasta App Workbench
  2. Haga clic en el ficha Fuentes de datos
  3. Seleccione la base de datos relacional en el panel Fuente de datos.
  4. Haga clic en el botón Claves de cifrado

La página Claves de cifrado de datos enumerará las propiedades de las claves existentes:

  • Fecha de creación: la fecha y hora en que se generó la clave.
  • Fecha de activación: la fecha y hora en que se utilizó la clave para cifrar los datos de la columna.
  • Fecha de vencimiento: la fecha y hora en que la clave ya no se utilizó para cifrar datos.

Nota

Dado que las claves de cifrado de datos se crean a pedido, una fuente de datos no tendrá ninguna clave de cifrado de datos hasta que los datos se cifren por primera vez.

Algoritmos de Cifrado y Validación

El cifrado proporciona confidencialidad; validación, autenticidad (también conocida como protección contra manipulaciones).

Vinyl cifra los datos utilizando AES-256 en el modo de cifrado de bloques CBC con relleno PKCS #7.

Vinyl garantiza la integridad de los datos cifrados utilizando HMAC-SHA256.

Problemas Conocidos y Limitaciones

La siguiente lista describe problemas conocidos y limitaciones con la despliegue de cifrado a nivel de columna de Vinyl.

  • Sólo el tipo de datos lógico String admite cifrado.
  • Sólo los proveedores de datos RDBMS admiten el cifrado.
  • Una columna no se puede convertir al tipo de datos de almacenamiento cifrado.
  • Una columna no se puede convertir del tipo de datos de almacenamiento cifrado a otro tipo de datos.
  • Las columnas cifradas no admiten filtro, búsqueda ni clasificación.
  • Los controles como páginas, paneles y listas no se pueden vincular a una columna cifrada.
  • Las columnas cifradas no admiten traducción.
  • Vinyl no migra automáticamente los valores cifrados con claves antiguas: corresponde al desarrollador volver a cifrar los datos periódicamente.
  • Los datos no se pueden migrar hacia/desde columnas cifradas mediante una regla de migración. Los desarrolladores deben utilizar reglas comerciales CRUD para mover datos hacia y desde columnas cifradas.
  • Los datos no se pueden copiar hacia/desde columnas cifradas utilizando reglas de base de datos CRUD. Los desarrolladores deben utilizar reglas comerciales CRUD para mover datos hacia y desde columnas cifradas.
  • Las expresiones mvSQL solo pueden hacer referencia al texto cifrado binario, no al valor de texto sin formato de una columna cifrada.
  • Si un valor cifrado no se puede descifrar, no se muestra ningún error: el valor parece ser NULL.