GaussDB-账本数据库机制
GaussDB-账本数据库机制
可获得性
本特性自V500R002C00版本开始引入。
特性简介
账本数据库特性,对用户指定的防篡改表增加校验信息,并记录用户对防篡改表中数据的修改历史,通过数据和修改历史的一致性校验来识别用户数据是否被恶意篡改。在用户对防篡改表执行DML操作时,系统对防篡改表追加少量行级校验信息,同时记录操作的SQL语句和数据的变化历史。通过特性提供的校验接口,用户可以方便的校验防篡改表中的数据是否与系统记录的操作信息是否一致。
客户价值
账本数据库提供对用户数据的操作记录、数据历史变化记录以及易用的一致性的校验接口,方便用户随时校验数据库中的敏感信息是否被恶意篡改,有效提高数据库防篡改能力。
特性描述
账本数据库采用账本Schema对普通表和防篡改用户表进行隔离。用户在账本Schema中创建的行存表具有防篡改属性,即为防篡改用户表。用户向防篡改用户表中插入数据时,系统会自动生成少量行级校验信息。当用户执行DML时,系统会在全局区块表(GS_GLOBAL_CHAIN)中记录用户的操作、同时在用户表对应的历史表中记录数据的更改等信息,操作记录、数据变化记录和用户表中的数据三者严格保持一致。账本数据库提供高性能校验接口,能够供用户方便的校验数据的一致性,如果一致性校验失败,则说明数据可能发生篡改,需要及时联系审计管理员回溯操作记录历史。
防篡改表在创建时,支持以下数据类型:
char, abstime, bigint, boolean, bytea, character varying, character, date, double precision, int2vector, integer, interval, money, name, numeric, nvarchar2, oid, oidvector, raw, real, reltime, smalldatetime, smallint, text, time with time zone, time without time zone, timestamp with time zone, timestamp without time zone, tinyint, uuid, clob。
特性增强
无。
特性约束
- 防篡改模式下的行存表具有防篡改属性,而临时表、UNLOGGED表等均不具有防篡改属性。升级过程中需要在特定schema中创建表的情况下,不建议在升级前将该schema设置为防篡改属性。
- 不允许修改防篡改用户表的结构,不允许truncate防篡改相关表,不允许将防篡改用户表切换到普通的Schema中,不允许将非防篡改表切换到防篡改Schema中。
- 防篡改表如果为分区表,则不支持exchange partition、drop partition、truncate partition等操作。
- 分布式场景下,不支持使用函数、存储过程、TRIGGER修改防篡改用户表数据,允许操作类型为SELECT的存储过程执行,不支持通过EXECUTE DIRECT ON的方式直接修改DN节点的防篡改表。
- 防篡改用户表使用CREATE TABLE LIKE语句,源表为防篡改用户表,新表继承源表中所有字段名(包含检验列),会执行失败,不支持用户主动修改校验列的值以及对该列创建索引。
- 普通用户调用篡改校验接口只能校验自己有权查询的表。
- 只允许审计管理员、系统管理员和初始用户查询全局区块表和BLOCKCHAIN模式中的表,普通用户无权访问,所有用户均无权修改。
- 扩容后,校验数据可能会不一致,此时可执行账本数据库在线修复功能保证后续篡改校验功能的正常执行。
- CN剔除修复后,会丢失部分全局区块表中的数据,需要使用全局区块表修复功能,保证后续的账本数据库的正常使用。
- 根据用户历史表命名规则,若待创建表的Schema或表名以'_'结尾或开头,可能会出现对应历史表名与已有表名冲突的情况,需要重新命名。
- 账本数据库目前针对用户行级数据的hash摘要仅用来保证数据的一致性,无法保证密码学完整性,且当前能力暂时无法防止攻击用户直接对数据文件的篡改。
- 创建防篡改schema以及更改普通schema为防篡改schema,需设置enable_ledger参数为on。enable_ledger参数默认值为off。
- 基于防篡改表创建的定时任务对防篡改表有数据更改操作,将执行失败。
- 不允许基于防篡改表创建RULE。
- 对防篡改表执行闪回表操作,历史表和全局区块表无法自动进行数据同步,为保持数据一致,需对历史表执行闪回表操作,使用ledger_gchain_repair修复全局区块表。
- 由于在CTE或者子计划中修改表,会存在一个嵌套插入,导致无法记录整体的防篡改表修改,因此当前不支持使用CTE或者子计划修改防篡改表。
- 集群运行异常造成账本数据库校验函数返回不一致时,需要使用账本数据库修复函数对不一致的历史表或全局区块表进行修复。
依赖关系
无。

浙公网安备 33010602011771号