Saltar al contenido

Agregar una Columna Cifrada a una Tabla

El cifrado a nivel de aplicación se puede utilizar para proteger datos confidenciales almacenados en columnas de tablas. El cifrado y el descifrado se realizan dentro de la App Builder motor de negocios. En consecuencia, el cifrado a nivel de aplicación es independiente del proveedor: App Builder admite el cifrado de columnas a nivel de aplicación en todos los proveedores RDBMS.

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

  1. Vaya al App Workbench
  2. Haga clic en el ficha Tablas
  3. Identifique la tabla a la que desea agregar la columna y haga clic en el ícono 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 ícono Cerrar (X) para cerrar la ventana emergente.

Todos los valores escritos en la columna se cifrarán automáticamente. Los valores leídos desde 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 icono Guardar

Conéctese a la base de datos mediante 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.

Uso de 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. Mediante la seguridad basada en roles, el desarrollador puede limitar el acceso al objeto de datos. A continuación, 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 de negocio CRUD que copien 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).
  • Copiar datos confidenciales dentro o fuera de un sistema de externo.
  • Pasar datos confidenciales a un extremo de servicio web REST u OData.
  • Por último, 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 las columnas se cifran con una clave de cifrado de datos (DEK). Cada fuente de datos tiene su propio conjunto de claves rotativas. Aunque se puede utilizar cualquier clave para descifrar datos, solo se utiliza una clave para el cifrado en un momento determinado. Se crea una nueva DEK cada 90 días.

Las DEK están vinculadas a los siguientes atributos en el App Builder modelo lógico:

  • 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 la columna se utiliza para crear una clave derivada para la columna.

Advertencia

Si el DataSourceId, TableId o ColumnId si se modifican los valores cifrados existentes, no se podrán 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 distintas filas.

Visualización de Claves de Cifrado de Datos

Dado 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 dentro de la base de datos. App Builder para obtener los detalles de la clave de cifrado de una fuente de datos, comience iniciando sesión en App Builder como administrador.

  1. Vaya al 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 clave 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 expiración: 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 primero.

Algoritmos de Cifrado y Validación

El cifrado proporciona confidencialidad, validación y autenticidad (es decir, protección contra manipulaciones).

App Builder encripta datos usando AES-256 en el modo de cifrado de bloques CBC con relleno PKCS #7.

App Builder garantiza la integridad de los datos cifrados mediante HMAC-SHA256.

Problemas y Limitaciones Conocidos

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

  • Sólo el tipo de datos lógicos String admite el 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 filtros, búsquedas ni ordenamientos.
  • Los controles como páginas, paneles y listas no se pueden vincular a una columna cifrada.
  • Las columnas cifradas no admiten traducción.
  • App Builder no migra automáticamente los valores cifrados con claves antiguas: queda en manos del desarrollador volver a cifrar los datos periódicamente.
  • No es posible migrar datos hacia o desde columnas cifradas mediante una regla de migración. Los desarrolladores deben usar reglas de negocio CRUD para mover datos hacia o desde columnas cifradas.
  • No es posible copiar datos hacia o desde columnas cifradas mediante reglas de base de datos CRUD. Los desarrolladores deben usar reglas comerciales CRUD para mover datos hacia o desde columnas cifradas.
  • Las expresiones mvSQL solo pueden hacer referencia al texto cifrado binario, no al valor de texto simple de una columna cifrada.
  • Si un valor cifrado no se puede descifrar, no se muestra ningún error: el valor parece ser NULL.