数据库管理-第267期 23ai:Oracle Data Redaction演示(20241128)

数据库管理267期 2024-11-286

  • 数据库管理-第267期 23ai:Oracle Data Redaction演示(20241128)
    • 1 示例表及数据
    • 2 创建编校策略
      • 2.1 名字全编校
      • 2.2 电话部分编校
    • 3 DML演示
      • 3.1 场景1
      • 3.2 场景2
    • 总结

数据库管理-第267期 23ai:Oracle Data Redaction演示(20241128)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database(Oracle与MySQL)
PostgreSQL ACE Partner
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、年度墨力之星,ITPUB认证专家、专家百人团成员,数盟会长老会成员,OCM讲师,PolarDB开源社区技术顾问,HaloDB外聘技术顾问,OceanBase观察团成员,青学会MOP技术社区(青年数据库学习互助会)技术顾问
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭

在第256期对Oracle数据编校进行了介绍,本期对常见的数据脱敏展示场景进行演示。本次演示使用版本为23ai Free(RPM安装):
image.png

1 示例表及数据

针对姓名和电话号码进行脱敏展示。

export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
sqlplus / as sysdba
alter session set container=pdbprod1;
create user odr identified by odr;
grant dba to odr;
alter user odr default tablespace users quota unlimited on users;
conn odr/odr@127.0.0.1:1521/pdbprod1

drop table if exists customers;
create table customers (id number primary key,name varchar2(40),phonenumber number(13,0));
insert into customers values(1,'尹海文',13012345678);
insert into customers values(2,'胖头鱼',13023456789);
commit;

image.png
image.png

2 创建编校策略

2.1 名字全编校

conn / as sysdba
alter session set container=pdbprod1;
BEGIN
 DBMS_REDACT.ADD_POLICY(
   object_schema       => 'odr', 
   object_name         => 'customers', 
   column_name         => 'name',
   policy_name         => 'odr_customers_name_pol', 
   function_type       => DBMS_REDACT.FULL,
   expression          => '1=1');
END;
/

select * from odr.customers;

conn odr/odr@127.0.0.1:1521/pdbprod1
select * from customers;

image.png
这里可以看到在sys用户下,查询内容展示依然是未被编校的,而使用本用户则是内容展示已被编校,经测试拥有dba权限的用户不受编校策略影响。

2.2 电话部分编校

conn / as sysdba
alter session set container=pdbprod1;
BEGIN
 DBMS_REDACT.ADD_POLICY(
   object_schema       => 'odr', 
   object_name         => 'customers', 
   column_name         => 'phonenumber',
   policy_name         => 'odr_customers_phonenumber_pol', 
   function_type       => DBMS_REDACT.PARTIAL,
   expression          => '1=1',
   function_parameters => '0,4,8');
END;
/

image.png
在创建过程中发现该对象已经存在编校策略,因此需要删除原策略。

BEGIN
 DBMS_REDACT.drop_policy(
   object_name         => 'customers', 
   object_schema       => 'odr', 
   policy_name         => 'odr_customers_name_pol'
   );
END;
/

BEGIN
 DBMS_REDACT.ADD_POLICY(
   object_schema       => 'odr', 
   object_name         => 'customers', 
   column_name         => 'phonenumber',
   policy_name         => 'odr_customers_phonenumber_pol', 
   function_type       => DBMS_REDACT.PARTIAL,
   expression          => '1=1',
   function_parameters => '0,4,8');
END;
/

conn odr/odr@127.0.0.1:1521/pdbprod1
select * from customers;

image.png
image.png
由本测试也可以得出,Oracle数据编校策略的限制之一,就是一个对象只允许存在一个编校策略,目前我认为这限制了数据编校的使用场景。

3 DML演示

3.1 场景1

这里做一个数据使用数据编校后展示数据更新原数据的操作演示。

conn odr/odr@127.0.0.1:1521/pdbprod1
update customers set phonenumber=phonenumber where id=1;
commit;

conn / as sysdba
alter session set container=pdbprod1;
select * from odr.customers;

image.png
这种情况下对原数据无影响。

3.2 场景2

这里尝试用编校后查询结果更新已有数据。

conn odr/odr@127.0.0.1:1521/pdbprod1
update customers set phonenumber=(select phonenumber from customers where id=2) where id=1;

image.png
这里因为使用编校后数据,会提示权限不足,无法操作。经过测试拥有dba权限的用户因为不受编校策略影响也不会使用编校后的展示数据来更新已有数据。

由此可以看到当前版本以及本次操作的权限控制下,在有数据编校后的对象进行DML操作时,是不会因为数据编校后展示结果的改变而错误修改数据的。

总结

本期对Oracle Data Redaction的实际使用效果进行了展示。
老规矩,知道写了些啥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/926975.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

根据电池容量及功耗估算充电及放电时间

根据电池容量和功耗估算充电和放电时间的方法可以通过以下简单的公式进行: 1. 估算放电时间 放电时间是指电池在一定功耗下,能够持续供应电力的时间。可以使用以下公式: 解释: 电池容量:电池的容量一般以毫安时&…

【Maven】继承和聚合

5. Maven的继承和聚合 5.1 什么是继承 Maven 的依赖传递机制可以一定程度上简化 POM 的配置,但这仅限于存在依赖关系的项目或模块中。当一个项目的多个模块都依赖于相同 jar 包的相同版本,且这些模块之间不存在依赖关系,这就导致同一个依赖…

对抗攻击算法:FGSM和PGD

FGSM 传送门 FGSM 利用了梯度上升的思想,通过损失函数相对于输入图像的梯度来找到 最容易 迷惑网络的方向,并沿着这个方向对图像进行微小的扰动。 FGSM 的基本想法是,沿着这个梯度的符号方向对图像进行微调,以最大化损失函数。具…

Matlab mex- setup报错—错误使用 mex,未检测到支持的编译器...

错误日志: 在使用mex编译时报错提示:错误使用 mex,未检测到支持的编译器。您可以安装免费提供的 MinGW-w64 C/C 编译器;请参阅安装 MinGW-w64 编译器。有关更多选项,请访问https://www.mathworks.com/support/compile…

内网穿透步骤

步骤 第一次需要验证token window和linux的方法不同。 然后 启动 cpolar 服务: 在命令窗口中输入 cpolar.exe htttp 8080,启动内网穿透服务。确保命令窗口保持开启状态,以维持穿透效果。 cpolar.exe hhttp 8080 成功后 注意事项 命令窗口…

系统架构:MVVM

引言 MVVM 全称 Model-View-ViewModel,是在 MVP(Model-View-Presenter)架构模式基础上的进一步演进与优化。MVVM 与 MVP 的基本架构相似,但 MVVM 独特地引入了数据双向绑定机制。这一创新机制有效解决了 MVP 模式中 Model 与 Vie…

网络协议(TCP/IP模型)

目录 网络初识 网络协议 协议分层 协议拆分 分层 协议分层的优势 1.封装效果 2.解耦合 TCP/IP五层模型 协议之间配合工作(详解) 网络初识 网络核心概念: 局域网:若干电脑连接在一起,通过路由器进行组网。 …

网络安全之IP伪造

眼下非常多站点的涉及存在一些安全漏洞,黑客easy使用ip伪造、session劫持、xss攻击、session注入等手段危害站点安全。在纪录片《互联网之子》(建议搞IT的都要看下)中。亚伦斯沃茨(真实人物,神一般的存在)涉…

软件工程之静态建模

静态模型:有助于设计包、类名、属性和方法特征标记(但不是方法体)的定义,例如UML类图。 用例的关系: 扩展关系: 扩展关系允许一个用例(可选)扩展另一个用例(基用例&…

JS听到了爆燃的回响

Window对象 BOM(浏览器对象模型) BOM是浏览器对象模型 Window对象是一个全局对象,也可以说是JS中的顶级对象 像是document、alert()、console.log()都是window的属性 所有通过var定义在全局作用域的变量、函数都会变成window对象的属性和…

【Linux】死锁、读写锁、自旋锁

文章目录 1. 死锁1.1 概念1.2 死锁形成的四个必要条件1.3 避免死锁 2. 读者写者问题与读写锁2.1 读者写者问题2.2 读写锁的使用2.3 读写策略 3. 自旋锁3.1 概念3.2 原理3.3 自旋锁的使用3.4 优点与缺点 1. 死锁 1.1 概念 死锁是指在⼀组进程中的各个进程均占有不会释放的资源…

单片机学习笔记 15. 串口通信(理论)

更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…

MyBatis异常体系中ErrorContext和ExceptionFactory原理分析

🎮 作者主页:点击 🎁 完整专栏和代码:点击 🏡 博客主页:点击 文章目录 exceptions包分包设计ExceptionFactory类介绍为什么使用工厂不是直接new呢?【统一的异常处理机制】【异常的封装与转化】【…

【Canvas与雷达】点鼠标可暂停金边蓝屏雷达显示屏

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>点鼠标可暂停金边蓝屏雷达显示屏 Draft1</title><style typ…

Spark Optimization —— Reducing Shuffle

Spark Optimization : Reducing Shuffle “Shuffling is the only thing which Nature cannot undo.” — Arthur Eddington Shuffle Shuffle Shuffle I used to see people playing cards and using the word “Shuffle” even before I knew how to play it. Shuffling in c…

数据结构 (22)哈夫曼树及其应用

前言 哈夫曼树&#xff08;Huffman Tree&#xff09;&#xff0c;又称最优二叉树或最优树&#xff0c;是一种特殊的二叉树结构&#xff0c;其带权路径长度&#xff08;WPL&#xff09;最短。 一、哈夫曼树的基本概念 定义&#xff1a;给定N个权值作为N个叶子结点&#xff0c;构…

Android Studio安装TalkX AI编程助手

文章目录 TalkX简介编程场景 TalkX安装TalkX编程使用ai编程助手相关文章 TalkX简介 TalkX是一款将OpenAI的GPT 3.5/4模型集成到IDE的AI编程插件。它免费提供特定场景的AI编程指导&#xff0c;帮助开发人员提高工作效率约38%&#xff0c;甚至在解决编程问题的效率上提升超过2倍…

泷羽sec-shell脚本(全) 学习笔记

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

开发者如何使用GCC提升开发效率IMG操作

看此篇前请先阅读https://blog.csdn.net/qq_20330595/article/details/144134160?spm1001.2014.3001.5502 stb_image库配置 https://github.com/nothings/stb 代码 #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" #define STB_IMAGE_WRITE_IMPLEM…

vue3【实战】面包屑【组件封装】Breadcrumb (根据菜单自动生成,实时响应路由变化,添加顺滑的过渡动画)

效果预览 技术方案 vue3 ( vite | TS | vueUse | AutoImport ) Element Plus UnoCSS 技术要点 根据当前路由查询所有父级路由 /*** 从树状列表中获取指定节点的所有父节点** param treeList 树状列表&#xff0c;包含多个节点* param value 目标节点的路径值* param parents…