当前位置: 首页 > news >正文

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' ,仅对文本中的数字进行脱敏
shufflemaskinghello 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=>


http://www.dtcms.com/a/335915.html

相关文章:

  • 发票识别工具,合并PDF提取信息
  • Go语言并发编程 ------ 临界区
  • 【SpringBoot】Swagger 接口工具
  • Python使用数据类dataclasses管理数据对象
  • Docker-14.项目部署-DockerCompose
  • RabbitMQ面试精讲 Day 25:异常处理与重试机制
  • Opencv 形态学与梯度运算
  • 小白成长之路-k8s部署discuz论坛
  • 云原生俱乐部-RH134知识点总结(3)
  • 【网络运维】Playbook进阶: FACTS变量
  • 原子操作(Atomic Operation):指在执行过程中不会被中断的操作
  • 【力扣热题100】双指针—— 三数之和
  • 记一次安装OpenStack(Stein)-nova报错问题解决
  • 19.训练模式、评估模式
  • 基于遗传编程的自动程序生成
  • JAVA面试汇总(四)JVM(二)
  • pytorch线性回归
  • 7 索引的监控
  • 数学建模 14 中心对数比变换
  • 定时器中断点灯
  • Redux搭档Next.js的简明使用教程
  • 安卓开发中遇到Medium Phone API 36.0 is already running as process XXX.
  • 突破Python性能墙:关键模块C++化的爬虫优化指南
  • 【牛客刷题】字符串按索引二进制1个数奇偶性转换大小写
  • 编程算法实例-整数分解质因数
  • Vue3 + Element Plus 人员列表搜索功能实现
  • UE5多人MOBA+GAS 48、制作闪现技能
  • 第三十九天(WebPack构建打包Mode映射DevTool源码泄漏识别还原)
  • 软件开发 - foreground 与 background
  • 电容,三极管,场效应管