hgdb数据编辑

时间:2022-12-02 17:11:06

瀚高数据库

目录

文档用途

详细信息


文档用途

数据编辑(Data Redaction)功能是一种动态数据脱敏机制,针对数据查询时的敏感数据进行动态的安全保护,通过设置策略对表的字段进行动态查询时动态修订。



详细信息

1. 介绍


数据编辑(Data Redaction)功能是一种动态数据脱敏机制,针对数据查询时的敏感数据进行动态的安全保护,通过设置策略对表的字段进行动态查询时动态修订。


一个完整的数据编辑策略由三部分组成:数据编辑函数、数据编辑策略应用 SQL命令、相应的权限配置。


  • 使用内置的数据编辑函数;
  • 通过绑定策略语句将函数与目标数据关联;
  • 数据编辑函数及策略仅可通过 SYSSSO 用户创建、修改、删除、禁用、启用、授权操作,普通用户和数据库管理员仅可查看管理视图


在启用数据编辑之前,需打开参数开关:redaction_policy。可通过命令行或直接修改 conf 文件进行修改。命令行格式如下:

alter system set redaction_policy to on;
select pg_reload_conf();


2. 创建编辑策略


语法:

CREATE REDACTION POLICY <name> ON <table_name>
[ ADD [ COLUMN ] <column_name>[,] USING <funcname_clause> ]
[, ...]
[ FOR ( <expression> ) ]
DISABLE/ENABLE;

解析:


  • name:当前策略的名称,
  • table_name:当前数据编辑策略作用为哪张表
  • column_name:策略应用于哪个列
  • funcname_clause:数据编辑函数名称,目前支持的脱敏函数见下文函数列表
  • expression:表达式,即对哪些用户执行数据编辑策略。比如 user=’u1’,就是对 u1
  • 用户执行数据编辑策略,其他用户不执行


不同测略通过不同的编辑函数实现,如


  • redact_bankcard  支持的数据类型有BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对信用卡格式的文本类数据)。示例 '4880-9898-4545-2525' 将会被脱敏为'xxxx-xxxx-xxxx-2525',该函数仅对后 4 位之前的数字进行脱敏。
  • redact_emailname 支持的数据类型有 BPCHAR, VARCHAR, NVARCHAR, TEXT (注:仅针对 email 格式的文本类型数据)。示例 'abcd@gmail.com' 将会被脱敏为'xxxx@gmail.com', 对出现第一个'@'之前的文本进行脱敏  
  • redact_phone 支持的数据类型有 BPCHAR, VARCHAR, NVARCHAR, TEXT (注:仅对电话号码码的文本类型数据)。示例 对电话号码进行脱敏。适用于手机号和固话号。保留前三位和后四位,对中间数字进行脱敏。如“13534556093” 脱敏为“135****6093”


详细策略参考 《瀚高安全版数据库系统V4.5-管理手册.pdf-6.5.6 数据编辑函数列表》


3. 其他操作

修改数据编辑策略

修改当前策略中,列 colname 使用的数据编辑函数

ALTER REDACTION POLICY policyname MODIFY COLUMN colname USING func_name;

删除数据编辑策略

DROP REDACTION POLICY policynamelist
例:
DROP REDACTION POLICY p1; --删除数据编辑策略 p1


4. 使用限制


限制

1、创建策略只能使用 syssso 进行设定,其他用户无权限。

2、一张表中只能创建一个策略

3、一个列只能指定一个数据编辑函数


5. 示例

创建表
\c highgo sysdba
create table test_redaction (id int,name varchar(22),salary int,hiredate timestamp,telephone text);
insert into test_redaction values (1,'aaa',20000,'2022-06-21 14:00:00','15512345678');

授权用户
create user test with password 'Hg#123456'; --创建一个新用户
grant select on test_redaction to test; --授权

开启编辑策略
alter system set redaction_policy to on;
select pg_reload_conf();
show redaction_policy;

创建编辑策略,多列
\c highgo syssso
create redaction policy p1 on test_redaction add column salary using redact_digits,add column telephone using redact_phone for (user = 'test');

使用屏蔽用户查询数据
\c highgo test
select * from test_redaction;

highgo=> select * from test_redaction ;
id | name | salary | hiredate | telephone
----+------+--------+---------------------+-------------
1 | aaa | 0 | 2022-06-21 14:00:00 | 155****5678
(1 row)