hgdb数据编辑

Posted 瀚高PG实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hgdb数据编辑相关的知识,希望对你有一定的参考价值。

瀚高数据库
目录
文档用途
详细信息
相关文档

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

详细信息

  1. 介绍

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

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

  1. 使用内置的数据编辑函数;

2.通过绑定策略语句将函数与目标数据关联;

3.数据编辑函数及策略仅可通过 SYSSSO 用户创建、修改、删除、禁用、启用、授权操作,普通用户和数据库管理员仅可查看管理视图

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

alter system set redaction_policy to on;

select pg_reload_conf();
  1. 创建编辑策略

语法:

CREATE REDACTION POLICY <name> ON <table_name>

[ ADD [ COLUMN ] <column_name>[,] USING <funcname_clause> ]

[, ...]

[ FOR ( <expression> ) ]

DISABLE/ENABLE;

解析:

  1. name:当前策略的名称,

  2. table_name:当前数据编辑策略作用为哪张表

  3. column_name:策略应用于哪个列

  4. funcname_clause:数据编辑函数名称,目前支持的脱敏函数见下文函数列表

  5. expression:表达式,即对哪些用户执行数据编辑策略。比如 user=’u1’,就是对 u1

用户执行数据编辑策略,其他用户不执行

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

  1. redact_bankcard 支持的数据类型有BPCHAR, VARCHAR, NVARCHAR, TEXT(注:仅针对信用卡格式的文本类数据)。示例 ‘4880-9898-4545-2525’ 将会被脱敏为’xxxx-xxxx-xxxx-2525’,该函数仅对后 4 位之前的数字进行脱敏。

  2. redact_emailname 支持的数据类型有 BPCHAR, VARCHAR, NVARCHAR, TEXT (注:仅针对 email 格式的文本类型数据)。示例 ‘abcd@gmail.com’ 将会被脱敏为’xxxx@gmail.com’, 对出现第一个’@'之前的文本进行脱敏

  3. redact_phone 支持的数据类型有 BPCHAR, VARCHAR, NVARCHAR, TEXT (注:仅对电话号码码的文本类型数据)。示例 对电话号码进行脱敏。适用于手机号和固话号。保留前三位和后四位,对中间数字进行脱敏。如“13534556093” 脱敏为“135****6093”

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

  1. 其他操作
修改数据编辑策略
修改当前策略中,列 colname 使用的数据编辑函数
ALTER REDACTION POLICY policyname MODIFY COLUMN colname USING func_name; 
删除数据编辑策略
DROP REDACTION POLICY policynamelist
例:
DROP REDACTION POLICY p1;   --删除数据编辑策略 p1
  1. 使用限制

限制

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

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

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

  1. 示例
创建表

\\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)

以上是关于hgdb数据编辑的主要内容,如果未能解决你的问题,请参考以下文章

HGDB之数据编辑

hgdb数据编辑

hgdb数据编辑

hgdb数据编辑

hgdb数据编辑

HGDB 创建只读用户