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=>
相关推荐
用户9623779544817 小时前
VulnHub DC-3 靶机渗透测试笔记
安全
叶落阁主2 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
用户962377954484 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机4 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机4 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954484 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star4 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954484 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher6 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行9 天前
网络安全总结
安全·web安全