Oracle LiveLabs实验:DB Security - Data Masking and Subsetting (DMS)

概述

本实验介绍了适用于 Enterprise Manager 的 Oracle 数据屏蔽和子集 (DMS) 包的各种特性和功能。 它使用户有机会学习如何配置这些功能,以便在非生产环境中保护他们的敏感数据。

此实验申请地址在这里,时间为60分钟。

本实验也是DB Security Advanced研讨会的的第8个实验,即Lab 8: Data Masking and Subsetting (DMS)。此产品的中文名称为“数据脱敏与子集包”

实验帮助在这里。

本实验使用的产品为Oracle Enterprise Manager 13.5。

本实验只生成1个实例,既包括Enterprise Manager,也包括源数据库。我的特定环境为:

  • 158.101.1.3 DBSEC-LAB

登录OEM(Oracle Enterprise Manager 13c)的信息为:

  • URL:https://<DBSEC-LAB IP地址>:7803/em (即 https://158.101.1.3:7803/em)
  • 用户名:SYSMAN
  • 口令:Oracle123

Task 1: Import Schema Structure

登录OEM。

进入Enterprise > Quality Management > Application Data Modeling菜单。

简要回顾安全测试数据管理图表以熟悉该过程:
在这里插入图片描述

然后单击Create以增加新的ADM(Application Data Model),其属性如下:

  • ADM名称:Employee_ADM
  • 源数据库:cdb1_PDB1
  • Application Suite type:Custom Application Suite
  • Create One Application For Each Schema:选中
    在这里插入图片描述

注意,其也支持Oracle Enterprise Business Suite (EBS) 和 Fusion Applications应用类型。

单击Continue,如图,使用预定义用户DMS_ADMIN(口令为Oracle123)登录。注意:也可以使用 SYS用户。在生产环境中,您可以将 DMS_ADMIN 的权限限制为仅执行其职责所需的包。

为ADM选中EMPLOYEESEARCH_DEV schema。

在这里插入图片描述
单击Continue,单击Submit。提交任务(任务名METADATA_COLLECTION_85)。

任务的最初状态:
在这里插入图片描述

作业完成后,EMPLOYEE_ADM 将不再处于锁定、不可编辑状态。 通过刷新此页面(刷新图标)检查状态,并在 Employee_ADM 的最新工作状态为“Succeeded”时继续。
在这里插入图片描述

Task 2: Enhance the Meta-Model

选中ADM Employee_ADM并单击Edit。

Credential Name选中DMS_ADMIN后,单击Continue。

在 Edit Application Data Model 屏幕中,请注意 EMPLOYEESEARCH_DEV 的应用程序已基于模式创建。
在这里插入图片描述
现在通过单击Referential Relationships选项卡查看在 ADM 中捕获的参考关系。 现在 OEM知道外键,它会自动将相同的格式掩码应用于子表
在这里插入图片描述

如果数据库管理引用关系,ADM 将自动捕获这些。 如果这些由应用程序管理,您将需要手动定义这些。但此处就不演示了。

Task 3: Use Pre-Defined Sensitive Column Types

进入Enterprise > Quality Management > Application Data Modeling菜单。

展开Actions菜单,选择子菜单 Sensitive Column Types子菜单。

查看随DMS提供的默认的敏感列发现模板。
在这里插入图片描述
把鼠标放到列上,可以看到敏感列的默认定义。

注:

  • 此过程使用Oracle正则表达式,它与IEEE便携式操作系统接口(POSIX)正则表达式标准和Unicode联盟- 的Unicode正则表达式指南兼容
    在这种情况下,搜索类型已设置为Or条件,因此如果满足上述任何条件,将导致匹配

Task 4: Create a New Sensitive Column Type

单击Create,创建一个新的敏感列类型:
在这里插入图片描述

Task 5: Create a New Sensitive Column Type using Pre-Defined Templates

选择EMAL_ID,选择Create Like…。然后输入红框中的部分,其它都是自动显示的。
在这里插入图片描述

Task 6: Create a New Masking Format

进入菜单Enterprise > Quality Management > Data Masking Formats Library。查看默认的Data Masking Format:
在这里插入图片描述
单击Create,输入下图中上部信息后,再在右侧通过点击Add下拉框中选择Random Strings添加Format Entries。然后单击Go。通过2次添加,最终结果如下:
在这里插入图片描述

注:

  • EMAIL_ORA是之前创建的敏感列类型
  • 当您使用这种掩蔽算法时,它将用一个新值替换初始值,该值是由开头的6到8个字符的随机字符串拼接固定值@ercoal而成的。
  • 在底部,您可以看到将使用的新值的示例

Task 7: Manually Identify Sensitive Columns

进入菜单Enterprise > Quality Management > Application Data Modeling

选中ADM Employee_ADM后,单击Edit

数据库秘钥选择DMS_ADMIN。单击Continue

选择Sensitive Columns标签页。目前,没有发现敏感列,因此您必须启动搜索。单击Create Discovery Job…选项。

选中EMPLOYEESEARCH_DEV schema,列的话排除EMAIL_ID, ISBN_10, ISBN_13, and UNIVERSAL_PRODUCT_CODE 共4列。然后单击Continue。单击Submit。
在这里插入图片描述
任务完成后,单击Discover Results…,展开视图(View->Expand All),可以发现目前这些列的敏感状态为Undefined。
在这里插入图片描述
我们必须将所有要屏蔽的列的敏感状态设置为敏感。复选中以下列(格式为表名.列名):

  • DEMO_HR_SUPPLEMENATL_DATA.PAYMENT_ACCT_NO
  • DEMO_HR_EMPLOYEES.EMAIL
  • DEMO_HR_USERS.EMAIL
  • DEMO_HR_EMPLOYEES.FIRST_NAME
  • DEMO_HR_EMPLOYEES.LAST_NAME
  • DEMO_HR_SUPPLEMENATL_DATA.ROUTING_NUMBER

单击Set Sensitive Status。
在这里插入图片描述
注意到,状态变为sensitive了:
在这里插入图片描述
最终结果如下,总共有6个敏感列:
在这里插入图片描述
最后,单击Save and Return

Task 8: Create Data Masking Definitions

进入Enterprise > Quality Management > Data Masking Definitions菜单。单击Create创建数据脱敏定义。

如下图输入信息,选中ADM Employee_ADM。单击Add。
在这里插入图片描述
如果需要口令,请选择Named中的DMS_ADMIN,并点击Login。

单击Search,下方会显示之前标准的6个敏感列,选中所有,然后单击Add。

在这里插入图片描述
先点击OK保存以下,后续在定义脱敏格式。

Task 9: Format Columns Using the Format Library and Masking Primitive

接上一任务。接下来对敏感列定义脱敏格式:
在这里插入图片描述
要使用格式库中的现有格式,请单击[Import format]按钮,然后选择之前定义的Mask Oracle Corp Email
在这里插入图片描述
单击Sample下的图标可生成示例数据:
在这里插入图片描述
单击OK。

接下来用另一种方式操作第2列,可以看到第1列定义完后,图标也变了。
在这里插入图片描述
我们用新的方法,在线定义脱敏格式,如下图:
在这里插入图片描述
选择Shuffle,单击Add后,单击OK。

第3列DEMO_HR_EMPLOYEES.LASTNAME,也选择Shuffle。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
最后,点击OK保存。

Task 10: Generate Data Masking Scripts

在步骤 9 中定义所有数据屏蔽格式后,屏蔽定义的状态为“脚本未生成”(Script Not Generated)。
在这里插入图片描述

单击Generate Script生成脚本。秘钥仍选择DMS_ADMIN。

在Script Generation Options部分,选择Mask In-Database,这表示:通过用掩码数据替换数据库中的敏感数据来脱敏指定的数据库(通常从生产中复制)。
而另一个选项Mask In-Export表示:使用 Oracle 数据泵从指定的源数据库(通常是生产)导出屏蔽数据。

最后单击Submit。

在脚本生成过程中。状态会由Script Generation Job Scheduled,变为Generating Script,最终为Script Generated。

查看脚本:
在这里插入图片描述
如下:
在这里插入图片描述
说明:

  • Oracle Data Masking Pack 执行一系列验证步骤,以确保数据脱敏过程顺利完成且没有错误。它执行的一项检查是验证脱敏格式。这是数据脱敏过程中的必要步骤,以确保选择的脱敏格式满足数据库和应用程序完整性要求
  • 这些要求可能包括因为唯一性约束为被脱敏的列生成唯一值,或生成满足列长度或类型要求的值
  • 成功完成验证检查后,Oracle Data Masking Pack 会生成基于 PL/SQL 的脱敏脚本,该脚本会传输到目标数据库执行
  • Oracle Data Masking Pack 使用高效且稳健的机制来创建脱敏数据
  • Oracle Data Masking Pack 执行批量操作以使用包含脱敏数据的相同表快速替换包含敏感数据的表,同时保留原始数据库约束、引用完整性和相关访问结构(例如 INDEX 和 PARTITION)以及访问权限(例如 GRANT)
  • 与传统上因为执行表更新而速度较慢的屏蔽过程不同,Oracle Data Masking Pack 利用数据库中的内置优化来禁用数据库日志记录并并行执行以快速创建原始表的屏蔽替换
  • 包含敏感数据的原始表从数据库中完全删除,不再可访问

小技巧:

  • 该脚本可以在具有完全相同schema结构的其他目标上执行
  • 您可以通过单击 [Save Script] 在本地保存脚本

Task 11: Execute the Data Masking Scripts

要执行 Data Masking 脚本,您需要一个 SSH 密钥对,不要使用 putty 密钥对,而是按照以下说明创建一个 RSA 密钥对。

cd ~
ssh-keygen -b 2048 -t rsa
cd .ssh
cat id_rsa >/tmp/rsa_priv
cat id_rsa.pub >>authorized_keys

使用新的 SSH 密钥更新命名凭据(Named Credentials)。

进入Enterprise > Quality Management > Data Masking Definitions菜单。单击EMPLOYEE_DATA_MASK,选择Edit进行更新。
此略,其实就是设置oracle用户通过private key登录。

进入Enterprise > Quality Management > Data Masking Definitions菜单。选中 EMPLOYEE_DATA_MASK,单击Schedule Job。

选中Mask In-Databas。并勾选The selected target is not a production database.。

脚本目录和脚本名称设为如下:

  • /home/oracle/DBSecLab/livelabs/dms
  • mask_empdata_in-db_20220522.sql

Host Credentials部分,选择Named以及之前设置的OS_ORACLE_SSH。
数据库的秘钥仍选择DMS_ADMIN。
在这里插入图片描述
单击Submit,最后确定任务成功,如下图:
在这里插入图片描述

Task 12: Compare the Pre-Masked Data vs. the Post-Masked Data

作业成功完成后,在开发和生产环境中查询脱敏数据进行前后对比。

Task 13: Create Data Subsetting Definitions

Task 14: Execute Data Subsetting Scripts

Task 15: Compare the Pre-Subsetted Data vs. the Post-Subsetted Data

Task 16: (Optional) Reset the Labs Environment

Appendix: About the Product

概述

Oracle Data Masking Pack for Enterprise Manager 是 Oracle 全面的数据库安全解决方案组合的一部分,可帮助组织遵守数据隐私和保护要求,例如 Sarbanes-Oxley (SOX)、支付卡行业 (PCI) 数据安全标准 (DSS)、健康 保险流通与责任法案 (HIPAA)、欧盟通用数据保护条例 (GDPR) 和即将出台的加州消费者隐私法案 (CCPA),以及许多限制使用实际客户数据的法律。

使用 Oracle Data Masking,信用卡或社会保险号等敏感信息可以替换为实际值,从而允许生产数据安全地用于开发、测试或与外包或离岸合作伙伴共享以用于其他非生产目的。 Oracle Data Masking 使用模板库和格式规则,一致地转换数据以保持应用程序的引用完整性

数据屏蔽(也称为数据加扰和数据匿名化)是使用基于屏蔽规则的真实但经过清理的数据替换从生产数据库复制到测试或非生产数据库的敏感信息的过程。 数据屏蔽几乎适用于所有需要与其他非生产用户共享机密或受监管数据的情况; 例如,内部用户(如应用程序开发人员)或外部业务合作伙伴(如离岸测试公司或供应商和客户)。 这些非生产用户需要访问一些原始数据,但不需要查看每个表的每一列,尤其是在信息受到政府法规保护的情况下。

数据屏蔽允许组织生成具有与原始数据相似特征的真实且功能齐全的数据,以替换敏感或机密信息。这与加密或Virtual Private Database形成对比,后者只是隐藏数据,允许使用适当的访问权限或密钥检索原始数据。通过数据屏蔽,无法检索或访问原始敏感数据。姓名、地址、电话号码和信用卡详细信息是需要保护信息内容免受不当可见性的数据示例。实时生产数据库环境包含有价值的机密数据——对这些信息的访问受到严格控制。但是,**每个生产系统通常都有复制的开发副本,并且对此类测试环境的控制不那么严格。这大大增加了数据可能被不当使用的风险。**数据屏蔽可以修改敏感的数据库记录,使它们保持可用,但不包含机密或个人身份信息。然而,脱敏的测试数据在外观上与原始数据相似,以确保应用程序的完整性。

在这里插入图片描述

为什么需要数据屏蔽?

您需要它有几个原因,基于以下挑战:

  • 个人可识别和敏感数据正在与开发和测试组中没有业务需要了解的各方共享。
  • 使用包含个人信息或任何其他敏感信息的操作数据库用于测试目的。 所有已识别的敏感细节和内容在使用前都应删除或修改到无法辨识。
  • 在分发到开发和 QA 环境之前,在敏感生产数据的脱敏和清理方面没有既定的、记录在案的程序和数据清理标准的执行。
  • 为开发和 QA 环境提供正确脱敏的数据所需的步骤和过程非常耗时、手动且不一致。

实现使用 DMS 的好处

  • 通过屏蔽敏感信息实现数据的商业价值最大化
  • 通过不扩散敏感的生产信息来最小化合规边界
  • 通过子集数据降低测试和开发环境的存储成本
  • 自动发现敏感数据和父子关系
  • 提供全面的屏蔽格式、屏蔽转换、子集技术和选择应用程序模板
  • 在数据库中或在文件上(通过从源数据库中提取数据)执行数据脱敏和子集
  • 脱敏与数据子集支持Oracle 和非 Oracle 数据库
  • 脱敏和子集托管在 Oracle 云上的 Oracle 数据库
  • 在脱敏和子集化期间保持数据完整性,并提供更多独特功能
  • 与选定的 Oracle 测试、安全和集成产品集成。

Want to Learn More?

文档:Oracle Data Masking & Subsetting Pack 12.2

视频:Oracle Data Masking & Subsetting - Advanced Use Cases (June 2019)

Acknowledgements

作者为Hakim Loumi,数据库安全的PM。贡献者为Rene Fontcha。

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

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

相关文章

无惧黑暗强光,纯视觉导航也能全天候作业

对于一台激光导航扫地机器人而言&#xff0c;全天候作业并非难事&#xff0c;那么纯视觉导航扫地机器人能做到吗&#xff1f; 无论对于人&#xff0c;还是机器人&#xff0c;光线环境的变化对“眼睛”的影响都是致命的。由于视觉传感器对于光线十分敏感&#xff0c;在家庭场景…

linux入门---软硬链接

软链接 使用指令ln -s 被链接的文件 生成的软链接文件 便可以创建软连接文件&#xff0c;ln是link的简写表明当前要创建链接文件&#xff0c;s是soft的简写表明当前创建的链接文件为软链接文件&#xff0c;然后加上被链接的文件&#xff0c;最后写上生成的链接文件的文件名比如…

使用 ArcGIS Pro 进行土地利用分类的机器学习和深度学习

随着技术进步,尤其是地理信息系统 (GIS)工具的进步,可以更有效地对土地利用进行分类。分类的使用可用于识别植被覆盖变化、非法采矿区和植被抑制区域,这些只是土地利用分类的众多示例中的一部分。 分类的一大困难是确定要解决的问题的级别。我分类的目的是什么?分类是否需…

【科普知识】电机的10种工作制说明:S1~S10

如今&#xff0c;在我们的生活中&#xff0c;电机几乎无处不在&#xff0c;从国防、工农、运输、临床器械、通讯到生活中的洗衣机、风扇、吸尘器、电动机器人等&#xff0c;都在应用着各式各样的电动机。 电机作为一种能够将电能转换成机械能的装置&#xff0c;是现代工业生产和…

【搭建私有云盘】无公网IP,在外远程访问本地微力同步

文章目录 1.前言2. 微力同步网站搭建2.1 微力同步下载和安装2.2 微力同步网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 私有云盘作为云存储概念的延伸&#xff0c;虽然谈不上多么新颖&#xff0c;但是其…

快速上手非关系型数据库Redis

一、Redis介绍 1.非关系型数据库&#xff0c;纯内存操作&#xff0c;key-value存储&#xff0c;性能很高&#xff0c;可持久化&#xff08;内存---->保存到硬盘上&#xff09; 2.缓存&#xff0c;计数器&#xff0c;验证码&#xff0c;geo地理位置信息&#xff0c;发布订阅…

RocketMq windows 安装

RocketMq安装步骤&#xff1a; 1、直接在官网下载。也可以从这里自取 https://rocketmq.apache.org/download/ 2、修改bin目录下的文件 runserver.cmd 和 runbroker.cmd文件。主要修改所占用内存的大小。 runserver.cmd 修改如下&#xff1a; runbroker.cmd 修改如下&#xff…

【人脸检测】——Sample and Computation Redistribution for Efficient Face Detection论文简读

人脸检测 摘要 在非受控人脸检测方面已经取得了巨大的进步&#xff0c;但低计算成本和高精度的高效人脸检测仍然是一个开放的挑战。作者提出了两种简单而有效的方法&#xff1a;样本再分配&#xff08;SR&#xff09;和计算再分配&#xff08;CR&#xff09;。在WIDER FACE上进…

AI失业潮来袭,某些部门裁员过半

历史的车轮滚滚向前&#xff0c;每次生产力的大幅跃进&#xff0c;都会造成一批失业潮。想当年&#xff0c;纺纱机的出现让无数手工作坊的织布师傅失业。如今&#xff0c;在AI技术的催化下&#xff0c;同样的事正在互联网行业的各个领域重演。 疯狂的裁员浪潮 “AI15秒做的&am…

np.convolve(x,h, mode=‘##‘)的使用

用法&#xff1a; np.convolve(a,v,mode) a代表卷积数据&#xff0c;v卷积核大小&#xff0c;mode卷积方式&#xff0c;mode卷积方式有三种 same full valid mode可能的三种取值情况&#xff1a; full’ 默认值&#xff0c;返回每一个卷积值&#xff0c;长度是NM-1,在卷积的…

【策略设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 策略模式&#xff08;Strategy Pattern&#xff09;属于行为型设计模式。将每一个算法封装到具有共同接口的独立类中&#xff0c;根据需要来绑定策略&#xff0c;使得具体实现和策略解耦。 当你想使用对象中各种不同的算法变体&#xff0c;使用if...else 所带来的复杂和…

Python入门教程+项目实战-11.5节: 程序实战-选择排序算法

目录 11.5.1 排序算法简介 11.5.2 选择排序算法 11.5.3 系统学习python 11.5.1 排序算法简介 所谓排序&#xff0c;是指将数据集合中的元素按从小到大的顺序进行排列&#xff0c;或按从大到小的顺序进行排列。前者称为升序排序&#xff0c;后者称为降序排序。在数据结构与算…

【Java笔试强训 7】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;Fibona…

( 哈希表) 594. 最长和谐子序列 ——【Leetcode每日一题】

❓594. 最长和谐子序列 难度&#xff1a;简单 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 现在&#xff0c;给你一个整数数组 nums &#xff0c;请你在所有可能的子序列中找到最长的和谐子序列的长度。 数组的子序列是一个由数组派生出来的序列&am…

AWSFireLens轻松实现容器日志处理

applog应用程序和fluent-bit共享磁盘&#xff0c;日志内容是json格式数据&#xff0c;输出到S3也是JSON格式 applog应用部分在applog目录&#xff1a; Dockerfile文件内容 FROM alpine RUN mkdir -p /data/logs/ COPY testlog.sh /bin/ RUN chmod 777 /bin/testlog.sh ENTRYP…

MySQL知识学习01

1、什么是关系型数据库? 顾名思义&#xff0c;关系型数据库&#xff08;RDBMS&#xff0c;Relational Database Management System&#xff09;就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系&#xff08;一对一、一对多、多对多&am…

宏基因组组装 | 就现在!做出改变!!

微生态研究的核心难点是什么&#xff01; 基因组组装&#xff01; 从宏基因组数据中组装获得细菌的完整基因组&#xff08;complete MAGs&#xff09;是微生物组研究的长期目标&#xff0c;但基于NGS的宏基因组测序和组装方法是无法实现完整的细菌基因组组装的。即便是红极一…

【五一创作】Apollo(入门)

Apollo(入门) Quick Start 配置中心是一种统一管理各种应用配置的基础服务组件 Apollo&#xff08;阿波罗&#xff09;是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理应用不同环境、不同集群的配置&#xff0c;配置修改后能够实时推送到应用端&#xff0c;并且…

使用pands.rolling方法实现移动窗口的聚合计算

一个问题举例 假设有一个5天的收益数据&#xff0c;需要每3天求出一次平均值来达成某个需求&#xff1a; daterevenue2023-05-01102023-05-02202023-05-03302023-05-04402023-05-0550 1号、2号和3号的数据求一次平均值&#xff0c;2号、3号和4号的数据求一次平均值&#xff…

5.4.1树的存储结构 5.4.2树和森林的遍历

回忆一下树的逻辑结构&#xff1a; 双亲表示法&#xff08;顺序存储&#xff09; 如果增加一个结点M&#xff0c;L。毋须按照逻辑上的次序存储。 如果是删除元素&#xff1a; 方案一&#xff1a;比如说删除元素为G,设置其双亲结点为-1。 方案二&#xff1a; 把尾部的结点提上…