GaussDB 数据库架构师修炼(十三)安全管理(5)-动态数据脱敏

1 业务场景

数据隐私保护是数据库安全所需要具备的安全能力之一, 可以在一定程度上限制非授权用户对隐私数据的访问,保证隐私数据安全。

数据,个人敏感的数据,比如银行卡号,电子邮箱,手机号码,个人工资等等

2 动态数据脱敏定义

动态数据脱敏( Dynamic Data Masking),就是将敏感数据通过变形、屏蔽等方式处理以保护隐私数据信息,防止数据泄露和恶意窥探。

3 动态脱敏特性实现方式

动态数据脱敏机制是一种通过定制 化制定脱敏策略从而实现对隐私数据保护的一种技术,可以有效地在保留原始数据的前提下解决非授权用户对敏感信息的访问问题。

注:

1)动态数据脱敏策略需要由具备POLADMIN(策略管理员)属性的用户或初始用户 创建,普通用户没有访问安全策略系统表系****统视图的权限。

2)动态数据脱敏仅支持对SELECT查询到的数据进行脱敏

4 GaussDB预置的脱敏函数

预置的脱敏函数如下表所示, 用户也可以根据自己的业务场景通过自定义函数UDF创建脱敏规则。

|-------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 脱敏函数名 | 示例 |
| creditcardmasking | '4880-9898-4545-2525' 将会被脱敏为 'xxxx-xxxx-xxxx-2525',该函数仅对后4位之前的数字进行脱敏 |
| basicemailmasking | 'abcd@gmail.com' 将会被脱敏为'xxxx@gmail.com' ,对出现第一个'@'之前的文本进行脱敏 |
| fullemailmasking | 'abcd@gmail.com' 将会被脱敏为 'xxxx@xxxxx.com' ,对出现最后一个'.'之前的文本(除'@'符外)进行脱敏 |
| alldigitsmasking | 'alex123alex' 将会被脱敏为 'alex000alex' ,仅对文本中的数字进行脱敏 |
| shufflemasking | hello word' 将会被随机打乱顺序脱敏为 'hlwoeor dl',该函数通过字符乱序排列的 方式实现, 属于弱脱敏函数,语义较强的字符串不建议使用该函数脱敏 |
| randommasking | 'hello word' 将会被脱敏为 'ad5f5ghdf5' ,将文本按字符随机脱敏 |
| regexpmasking | 需要用户顺序输入 四个参数, reg为被替换的字符串 , replace_text为替换后的字 符串, pos为目标字符串开始替换的初始位置,为整数类型, reg_len为替换长度,为整数类型。 reg 、replace_text可以用正则表达,pos如果不指定则默认为0 ,reg_len如果不指定则默认为-1,即pos后所有字符串。如果用户输入参数与参数 类型不一致,则会使用maskall方式脱敏。 CREATE MASKING POLICY msk_creditcard regexpmasking('[\d+]', 'x', 5, 9 ) ON LABEL(label_for_creditcard);'4880-9898-4545-2525' 将会被脱敏为 '4880-xxxx-xxxx-2525' 。 |
| maskall | '4880-9898-4545-2525' 将会被脱敏为 'xxxxxxxxxxxxxxxxxxx' |

5 脱敏策略举例

1)动态数据脱敏机制基于资源标签 进行脱敏策略的定****制化 ,可根据实际场景 选择特定的脱敏方式,也可以针对某些特定用户制定脱敏策略。

2)使用动态数据脱敏首先需要开启安全策略开关,设置GUC参数enable_security_policy =on,脱敏策略才可以****生效

3)完全举证:

步骤1: 确实enable_security_policy安全策略开关是否开启

复制代码
gaussdb=> show enable_security_policy;
 enable_security_policy
------------------------
 off
(1 row)

gaussdb=>

执行GUC命令开启安全策略开关

复制代码
[Ruby@dtest1 ~]$ gs_guc set -Z datanode -I all -N all -c "enable_security_policy='on'";
The gs_guc run with the following arguments: [gs_guc -Z datanode -I all -N all -c enable_security_policy='on' set ].
Begin to perform the total nodes: 3.
Popen count is 3, Popen success count is 3, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 3, Command success count is 3, Command failure count is 0.

Total instances: 3. Failed instances: 0.
ALL: Success to perform gs_guc!


gaussdb=>  show enable_security_policy;
 enable_security_policy
------------------------
 on
(1 row)

**步骤2:**埋点数据,创建table1表

复制代码
[Ruby@dtest1 ~]$ gsql -dcsdn -p8000 -U csdn -W '******' -ar
gsql ((GaussDB Kernel 505.2.1 build 159cea95) compiled at 2024-12-27 09:22:44 commit 10161 last mr 21504 release)
SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)
Type "help" for help.

csdn=>
csdn=>
csdn=> set search_path=csdn;
SET
csdn=>
csdn=>
csdn=> create table table1(name varchar2(64),credicart varchar2(128));
CREATE TABLE
csdn=>
csdn=>
csdn=> insert into table1 values('李大慧','4880-9898-4545-2525');
INSERT 0 1

**步骤3:**为table1.credicart、table1.name添加资源标签

复制代码
csdn=> create resource label label_for_credicart add column(csdn.table1.credicart);
CREATE RESOURCE LABEL
csdn=> create resource label label_for_name add column(csdn.table1.name);
CREATE RESOURCE LABEL
csdn=>

步骤4: 使用预置函数 creditcardmasking 和 randommasking进行脱敏

复制代码
csdn=> create masking policy msk_creditcard creditcardmasking ON LABEL(label_for_credicart);
CREATE MASKING POLICY
csdn=>

**步骤5:**验证结果

复制代码
csdn=> select * from table1;
  name  |      credicart
--------+---------------------
 李大慧 | xxxx-xxxx-xxxx-2525
(1 row)

csdn=>
相关推荐
lingggggaaaa3 小时前
小迪安全v2023学习笔记(六十二讲)—— PHP框架反序列化
笔记·学习·安全·web安全·网络安全·php·反序列化
黑客影儿7 小时前
Kali Linux 环境中的系统配置文件与用户配置文件大全
linux·运维·程序人生·安全·网络安全·系统安全·学习方法
三年呀9 小时前
标题:移动端安全加固:发散创新,筑牢安全防线引言:随着移动互联网
网络·python·安全
小韩博12 小时前
网络安全(Java语言)脚本 汇总(二)
java·安全·web安全
网络研究院15 小时前
网络安全和基础设施安全局 (CISA) 表示微分段不再是可选的
网络·安全·web安全·零信任·微分段
小云数据库服务专线18 小时前
GaussDB数据库架构师修炼(十六) 如何选择磁盘
数据库·数据库架构·gaussdb
小云数据库服务专线18 小时前
GaussDB 数据库架构师修炼(十三)安全管理(5)-全密态数据库
安全·数据库架构·gaussdb
柑木19 小时前
密码学-基础理论-DiffieHellman密钥交换
后端·安全
wanhengidc1 天前
当云手机出现卡顿怎么办?
运维·服务器·安全·智能手机