云服务器内容精选

  • GS_GLOBAL_CHAIN GS_GLOBAL_CHAIN系统表记录用户对防篡改用户表的修改操作信息,每条记录对应一次表级修改操作。具有审计管理员权限的用户可以查询此系统表,所有用户均不允许修改此系统表。 表1 GS_GLOBAL_CHAIN字段 名称 类型 描述 blocknum bigint 区块号,当前用户操作在账本中记录的序号。 dbname name 数据库名称,被修改的防篡改用户表所属的database。 username name 用户名,执行用户表修改操作的用户名。 starttime timestamp with time zone 用户执行操作的时间。 relid oid 用户表oid,被修改的防篡改用户表oid。 relnsp name 模式名,被修改的防篡改用户表所属的模式名。 relname name 用户表名,被修改的防篡改用户表名。 relhash hash16 操作产生的表级哈希变化量。 globalhash hash32 全局摘要,由当前行信息与前一行globalhash计算而来,将整个表串联起来,用于验证GS_GLOBAL_CHAIN数据完整性。 txcommand text 记录操作的SQL语句。 父主题: 账本数据库
  • GS_GLOBAL_CHAIN GS_GLOBAL_CHAIN系统表记录用户对防篡改用户表的修改操作信息,每条记录对应一次表级修改操作。具有审计管理员权限的用户可以查询此系统表,所有用户均不允许修改此系统表。 表1 GS_GLOBAL_CHAIN字段 名称 类型 描述 blocknum bigint 区块号,当前用户操作在账本中记录的序号。 dbname name 数据库名称。被修改的防篡改用户表所属的database。 username name 用户名,执行用户表修改操作的用户名。 starttime timestamp with time zone 用户执行操作的时间。 relid oid 用户表oid,被修改的防篡改用户表oid。 relnsp name 模式名,被修改的防篡改用户表所属的模式名。 relname name 用户表名,被修改的防篡改用户表名。 relhash hash16 当前操作产生的表级别hash变化量。 globalhash hash32 全局摘要,由当前行信息与前一行globalhash计算而来,将整个表串联起来,用于验证GS_GLOBAL_CHAIN数据完整性。 txcommand text 被记录操作的SQL语句。 父主题: 账本数据库
  • 操作步骤 校验防篡改用户表ledgernsp.usertable与其对应的历史表是否一致。 1 gaussdb=# SELECT pg_catalog.ledger_hist_check('ledgernsp', 'usertable'); 查询结果如下: ledger_hist_check ------------------- t (1 row) 该结果表明防篡改用户表和用户历史表中记录的结果能够一一对应,保持一致。 查询防篡改用户表ledgernsp.usertable与其对应的历史表以及全局区块表中关于该表的记录是否一致。 1 gaussdb=# SELECT pg_catalog.ledger_gchain_check('ledgernsp', 'usertable'); 查询结果如下: ledger_gchain_check --------------------- t (1 row) 查询结果显示,上述三表中关于ledgernsp.usertable的记录保持一致,未发生篡改行为。
  • 背景信息 账本数据库校验功能目前提供两种校验接口,分别为: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。
  • 背景信息 账本数据库归档功能目前提供两种校验接口,分别为:ledger_hist_archive(text, text)和ledger_gchain_archive(text, text)。账本数据库接口仅审计管理员可以调用。 归档用户历史表的接口为pg_catalog.ledger_hist_archive,操作为: SELECT pg_catalog.ledger_hist_archive(schema_name text,table_name text); 如果归档成功,函数返回t,反之则提示失败原因并返回f。 归档全局区块表的接口为pg_catalog.ledger_gchain_archive,操作为: SELECT pg_catalog.ledger_gchain_archive(); 如果归档成功,函数返回t,反之则提示失败原因并返回f。
  • 操作步骤 对指定用户历史表进行归档操作。 1 gaussdb=# SELECT pg_catalog.ledger_hist_archive('ledgernsp', 'usertable'); 执行结果如下: ledger_hist_archive --------------------- t (1 row) 用户历史表将归档为一条数据: gaussdb=# SELECT * FROM blockchain.ledgernsp_usertable_hist; rec_num | hash_ins | hash_del | pre_hash ---------+------------------+------------------+---------------------------------- 3 | e78e75b00d396899 | 8fcd74a8a6a4b484 | fd61cb772033da297d10c4e658e898d7 (1 row) 该结果表明当前节点用户历史表导出成功。 执行全局区块表导出操作。 1 gaussdb=# SELECT pg_catalog.ledger_gchain_archive(); 执行结果如下: ledger_gchain_archive ----------------------- t (1 row) 全局历史表将以用户表为单位归档为N(用户表数量)条数据: gaussdb=# SELECT * FROM gs_global_chain; blocknum | dbname | username | starttime | relid | relnsp | relname | relhash | globalhash | txcommand ----------+----------+----------+-------------------------------+-------+-----------+-----------+------------------+----------------------------------+----------- 1 | testdb | libc | 2021-05-10 19:59:38.619472+08 | 16388 | ledgernsp | usertable | 57c101076694b415 | be82f98ee68b2bc4e375f69209345406 | Archived. (1 row) 该结果表明,当前节点全局区块表导出成功。