首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

海量智库第28期 | 防篡改利器——账本数据库

为了保障数据库长期稳定的运行、定期验证数据的完整性,Vastbase支持账本数据库,有效的实现防篡改功能。

账本数据库融合了区块链思想,将用户的操作记录到用户历史表全局区块表两种历史表中,与用户创建的具有防篡改属性的“防篡改用户表”,进行校验。

若三者保持一致,则说明数据没有被篡改,以此来保护数据的安全。

账本数据库简介

当用户在账本Schema中,创建“防篡改用户表”时,系统将自动为该表添加一个hash列来保存每行数据的hash摘要信息。用户对“防篡改用户表”的修改行为将记录至全局区块表中。

同时,blockchain模式下会创建一张用户历史表记录对应用户表中每条数据的变更行为

由于历史表具有只可追加不可修改的特点,因此历史表记录串联起来便形成了用户对“防篡改用户表”的修改历史

如何实现防篡改?

用户在“防篡改用户表”中插入数据时,系统会自动生成少量行级校验信息;用户执行DML时,系统会在全局区块表(GS_GLOBAL_CHAIN)中记录用户的操作;在用户表相应的用户历史表中记录数据的变化。

操作记录、数据变化记录和“防篡改用户表”中的数据,三者严格保持一致。

账本数据库提供高性能校验接口,用户可以十分方便的校验数据一致性。如果一致性校验失败,则说明数据可能发生篡改,需要及时联系审计管理员回溯操作记录历史。

用户历史表命名和结构

用户历史表blockchain.__hist所包含的字段

hash_ins与hash_del场景对应关系

实例操作

下面以表mvsschema.mvstable为例,查看相应的历史表中记录数据的更改等信息

1

创建防篡改模式

创建防篡改模式mvsschema

2

在防篡改模式下创建防篡改用户表

创建防篡改用户表mvsschema.mvstable

查看防篡改用户表结构及其对应的用户历史表结构

注:

1、dbe_perf和snapshot两个模式不能ALTER为blockchain属性,如:ALTER SCHEMA dbe_perf WITH BLOCKCHAIN;

2、系统模式不能 ALTER 为blockchain属性,如:ALTER SCHEMA pg_catalog WITH BLOCKCHAIN;

3、包含表的SCHEMA不能通过ALTER SCHEMA语句修改属性为blockchain。

3

修改防篡改用户表数据

对防篡改用户表执行INSERT/UPDATE/DELETE

4

用户历史表

在用户历史表blockchain.mvsschema_mvstable_hist中,记录对应用户表中每条数据的变更行为

5

查询全局区块表

用户对防篡改用户表的一次修改行为将记录至全局区块表中。查询全局区块表命令是直接查询gs_global_chain表,执行select * from gs_global_chain可以看到修改记录:

如何校验账本数据的一致性?

账本数据库校验功能目前提供两种校验接口:

ledger_hist_check(text, text)

ledger_gchain_check(text, text)

普通用户调用校验接口,仅能校验自己有权限访问的表。

校验防篡改用户表和用户历史表的接口为pg_catalog.ledger_hist_check,操作为:

SELECT pg_catalog.ledger_hist_check(schema_name text,table_name text);

如果校验通过,函数返回t,反之则返回f。

校验防篡改用户表、用户历史表和全局区块表三者是否一致的接口为pg_catalog.ledger_gchain_check,操作为:

SELECT pg_catalog.ledger_gchain_check(schema_name text, table_name text);

如果校验通过,函数返回t,反之则返回f。

实例操作

以防篡改属性的test_schema 与防篡改用户表test_table为例:

1

创建一个带有防篡改属性的test_schema

2

创建测试表

在具有防篡改属性的schema test_schema中创建测试表,并执行DML操作

3

校验“防篡改用户表”和“历史表”的一致性

校验防篡改用户表test_schema.test_table与其对应的历史表是否一致

该结果表明防篡改用户表和用户历史表中记录的结果能够一一对应,保持一致。

4

校验三者的一致性

查询防篡改用户表test_schema.test_table与其对应的历史表以及全局区块表中关于该表的记录是否一致

查询结果显示,上述三表中关于test_schema.test_table的记录保持一致,未发生篡改行为。

账本数据库融合区块链原理,篡改数据会导致“链”断开,以此来保障数据的完整性和安全性,是Vastbase防篡改不可或缺的一部分。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ONtTlZ-MQKwaCSIR2roaCZ9g0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券