Información general del libro de contabilidad

Se aplica a: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance

Establecer la confianza en torno a la integridad de los datos almacenados en los sistemas de base de datos ha sido un problema persistente para todas las organizaciones que administran datos financieros, médicos u otros datos confidenciales. La característica de libro de contabilidad proporciona funcionalidades de evidencia de alteración en la base de datos. Puede atestiguar criptográficamente a terceros, como auditores u otras partes interesadas de la empresa, que los documentos no se han modificado.

El libro de contabilidad ayuda a proteger los datos frente a cualquier atacante o usuario con privilegios elevados, incluidos los administradores de bases de datos, los administradores del sistema y los de la nube. Al igual que con un libro de contabilidad tradicional, la característica permite conservar los datos históricos. Si se actualiza una fila en la base de datos, su valor anterior se conserva y protege en una tabla de historial. El libro de contabilidad proporciona una crónica de todos los cambios realizados en la base de datos a lo largo del tiempo.

El libro de contabilidad y los datos históricos se administran de forma transparente, lo que ofrece protección sin cambios en la aplicación. La característica conserva los datos históricos en un formato relacional para admitir consultas SQL con fines de auditoría, análisis forense y otros fines. Proporciona garantías de integridad de los datos criptográficos al tiempo que mantiene la eficacia, flexibilidad y rendimiento de la base de datos SQL.

Diagram of the ledger table architecture.

Casos de uso del libro de contabilidad

Veamos algunas ventajas de usar el libro de contabilidad.

Simplificación de auditorías

El valor de cualquier sistema de producción se basa en la capacidad de confiar en los datos que el sistema consume y produce. Si un usuario malintencionado ha alterado los datos de la base de datos, esto puede tener resultados desastrosos en los procesos empresariales que dependen de esos datos.

Mantener la confianza en los datos requiere una combinación de habilitar los controles de seguridad adecuados para reducir los posibles ataques, las prácticas de copia de seguridad y restauración y los procedimientos exhaustivos de recuperación ante desastres. Las auditorías realizadas por terceros garantizan la aplicación de estas prácticas.

Los procesos de auditoría son actividades que consumen mucho tiempo. La auditoría requiere la inspección in situ de los procedimientos implementados, como revisar los registros de auditoría e inspeccionar los controles de autenticación y acceso. Aunque estos procesos manuales pueden sacar a la luz posibles brechas en la seguridad, lo que no pueden proporcionar es una prueba verificable de que los datos no se han modificado de forma malintencionada.

El libro de contabilidad proporciona a los auditores la prueba criptográfica de la integridad de los datos. Esta prueba puede ayudar a simplificar el proceso de auditoría. También proporciona una prueba de no rechazo con respecto a la integridad de los datos del sistema.

Procesos empresariales de varias partes

En algunos sistemas, como los sistemas de administración de una cadena de suministro, varias organizaciones deben compartir el estado de un proceso empresarial entre sí. Estos sistemas tienen dificultades con el desafío que supone compartir los datos y confiar en ellos. Muchas organizaciones están recurriendo a cadenas de bloques tradicionales, como Ethereum o Hyperledger Fabric, para transformar digitalmente sus procesos empresariales de varias partes.

La cadena de bloques es una excelente solución para redes de varias partes en las que la confianza es baja entre las partes que participan en la red. Muchas de estas redes son soluciones fundamentalmente centralizadas donde la confianza es importante, pero una infraestructura totalmente descentralizada es una solución de gran peso.

El libro de contabilidad proporciona una solución para estas redes. Los participantes pueden comprobar la integridad de los datos de forma centralizada, sin la complejidad y las implicaciones en materia de rendimiento que el consenso de la red introduce en una red de cadena de bloques.

Satisfacción del cliente

Almacenamiento fuera de la cadena de bloques de confianza

Cuando una red de cadena de bloques es necesaria para un proceso empresarial en el que participan varias partes, tener la capacidad de consultar los datos en la cadena de bloques sin sacrificar el rendimiento es un desafío.

Los patrones típicos para resolver este problema implican la replicación de datos de la cadena de bloques a un almacén fuera de la cadena, como una base de datos. Sin embargo, una vez que los datos se replican en la base de datos desde la cadena de bloques, la integridad de los datos garantiza la pérdida de una oferta de cadena de bloques. El libro de contabilidad proporciona la integridad de los datos para el almacenamiento fuera de la cadena de las redes de cadena de bloques, lo que garantiza la plena confianza en los datos en todo el sistema.

Funcionamiento

A las filas modificadas por una transacción de una tabla de libro de contabilidad se les aplica un hash SHA-256 criptográficamente mediante una estructura de datos de árbol Merkle que crea un hash raíz que representa todas las filas de la transacción. Después, también se aplica un hash SHA-256 a las transacciones procesadas por la base de datos mediante una estructura de datos en árbol de Merkle. El resultado es un hash raíz que forma un bloque. A continuación, se aplica un hash SHA-256 mediante el hash raíz del bloque junto con el hash raíz del bloque anterior como entrada a la función hash. Eso forma una cadena de bloques.

Los códigos hash raíz del libro de contabilidad de la base de datos, también denominados resúmenes de base de datos, contienen las transacciones con código hash criptográfico y representan el estado de la base de datos. Se pueden generar y almacenar periódicamente fuera de la base de datos en el almacenamiento a prueba de alteraciones, como Azure Blob Storage configurado con directivas de inmutabilidad, Azure Confidential Ledger o dispositivos de almacenamiento locales de una sola escritura y muchas lecturas (WORM). Los resúmenes de la base de datos se usan posteriormente para comprobar la integridad de la base de datos comparando el valor del hash del código con los hash calculados de la base de datos.

La funcionalidad del libro de contabilidad se introduce en las tablas de dos formas:

Tanto las tablas de libro de contabilidad actualizables como las tablas de libro de contabilidad de solo anexión proporcionan funcionalidades de evidencia de alteración y análisis forense digital.

Tablas de libro de contabilidad actualizables

Las tablas de libro de contabilidad actualizables son idóneas para los patrones de aplicación que esperan emitir actualizaciones y eliminaciones en las tablas de la base de datos, como las aplicaciones del sistema de registro (SOR). Los patrones de datos existentes de la aplicación no necesitan cambiar para habilitar la funcionalidad de libro de contabilidad.

Las tablas de libro de contabilidad actualizables realizan un seguimiento del historial de cambios de todas las filas de la base de datos cuando se producen transacciones que realizan actualizaciones o eliminaciones. Una tabla de libro de contabilidad actualizable es una tabla con versiones del sistema que contiene una referencia a otra tabla con un esquema reflejado.

La otra tabla se denomina tabla de historial. El sistema usa esta tabla para almacenar automáticamente la versión anterior de una fila de la tabla de libro de contabilidad cada vez que esta fila se actualiza o elimina. La tabla de historial se genera automáticamente cuando se crea una tabla de libro de contabilidad actualizable.

Los valores de la tabla de libro de contabilidad actualizable y su tabla de historial correspondiente proporcionan una crónica de los valores de la base de datos a lo largo del tiempo. Para consultar fácilmente esta crónica de la base de datos, se crea una vista de libro de contabilidad generada por el sistema, que une la tabla de libro de contabilidad actualizable y la tabla de historial.

Para más información sobre las tablas de libro de contabilidad actualizables, consulte Creación y uso de tablas actualizables del libro de contabilidad.

Tablas de libro de contabilidad de solo anexión

Las tablas de libro de contabilidad de solo anexión son idóneas para los patrones de aplicación que son de solo inserción, como las aplicaciones de administración de eventos e información de seguridad (SIEM). Las tablas de libro de contabilidad de solo anexión bloquean las actualizaciones y eliminaciones en el nivel de API. Este bloqueo proporciona más protección contra alteraciones de usuarios con privilegios, como administradores del sistema y de la base de datos.

Puesto que solo se permiten inserciones en el sistema, las tablas de libro de contabilidad de solo anexión no tienen una tabla de historial correspondiente, ya que no hay ningún historial que capturar. Al igual que con las tablas de libro de contabilidad actualizables, una vista de libro de contabilidad proporciona información sobre la transacción que insertó filas en la tabla de solo anexión y el usuario que realizó la inserción.

Para más información sobre las tablas de libro de contabilidad de solo anexión, consulte Creación y uso de tablas de libro de contabilidad de solo anexión.

Base de datos de libro de contabilidad

Las bases de datos de libro de contabilidad proporcionan una solución sencilla para las aplicaciones que requieren que se proteja la integridad de todos los datos durante todo el ciclo de vida de la base de datos. Una base de datos de libro de contabilidad solo puede contener tablas de libro de contabilidad. No se admite la creación de tablas convencionales (que no son tablas de libro de contabilidad). De forma predeterminada, cada tabla se crea como una tabla de libro de contabilidad actualizable con la configuración predeterminada, lo que facilita la creación de estas tablas muy fácilmente. Puede configurar una base de datos como una base de datos de libro de contabilidad en la creación. Una vez creada, una base de datos de libro de contabilidad no se puede convertir en una base de datos convencional. Para más información, consulte Configuración de una base de datos de libro de contabilidad.

Resúmenes de base de datos

El hash del bloque más reciente del libro de contabilidad de base de datos se denomina resumen de la base de datos. Representa el estado de todas las tablas del libro de contabilidad de la base de datos en el momento en que se generó el bloque.

Cuando se forma un bloque, su resumen de base de datos asociado se publica y almacena fuera de la base de datos en un almacenamiento a prueba de alteraciones. Puesto que los resúmenes de base de datos representan el estado de la base de datos en el momento en que se generaron, es fundamental proteger los resúmenes de la alteración. Un atacante que tenga acceso para modificar los resúmenes podría:

  1. Alterar los datos de la base de datos.
  2. Generar los hashes que representan la base de datos con esos cambios.
  3. Modifique los resúmenes para representar el hash actualizado de las transacciones del bloque .

El libro de contabilidad proporciona la capacidad de generar y almacenar automáticamente los resúmenes de base de datos en un almacenamiento inmutable o en Azure Confidential Ledger para evitar la alteración. Como alternativa, los usuarios pueden generar manualmente resúmenes de base de datos y almacenarlos en la ubicación que prefieran. Los resúmenes de base de datos se usan para comprobar posteriormente que los datos almacenados en tablas de libro de contabilidad no se han alterado.

Verificación del libro de contabilidad

La característica de libro de contabilidad no permite modificar el contenido de las vistas del sistema de libro de contabilidad, las tablas de solo anexión y las tablas de historial. Sin embargo, un atacante o administrador del sistema que tenga el control de la máquina puede omitir todas las comprobaciones del sistema y alterar directamente los datos. Por ejemplo, un atacante o administrador del sistema puede editar los archivos de base de datos en el almacenamiento. Ledger no puede evitar estos ataques, pero garantiza que se detectará cualquier alteración cuando se comprueban los datos del libro de contabilidad.

El proceso de comprobación del libro de contabilidad toma como entrada uno o varios resúmenes de base de datos generados previamente y vuelve a compilar los hash almacenados en el libro de contabilidad de base de datos, en función del estado actual de las tablas del libro de contabilidad. Si los hash calculados no coinciden con los resúmenes de entrada, se produce un error en la comprobación, lo que indica que los datos se han alterado. A continuación, el libro de contabilidad notifica todas las incoherencias que ha detectado.

Consulte también