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

news2024/11/28 4:47:26

概述

本实验介绍了适用于 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。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

String AOP

AOP AOP(Aspect Object programmar) 面向切面编程&#xff0c;它是对某一类问题的统一处理&#xff0c;而StringAOP就是AOP思想的一种具体实现就像Ioc和DI。 AOP组成 切面(Aspect) 切⾯&#xff08;Aspect&#xff09;由切点&#xff08;Pointcut&#xff09;和通知&#x…

论文阅读笔记《Grounded Action Transformation for Robot Learning in Simulation》

Grounded Action Transformation for Robot Learning in Simulation 发表于AAAI 2017 仿真机器人学习中的接地动作变换 Hanna J, Stone P. Grounded action transformation for robot learning in simulation[C]//Proceedings of the AAAI Conference on Artificial Intellig…

Linux中的阻塞机制

我们知道在字符设备驱动中&#xff0c;应用层调用read、write等系统调用终会调到驱动中对应的接口。 可以当应用层调用read要去读硬件的数据时&#xff0c;硬件的数据未准备好&#xff0c;那我们该怎么做&#xff1f; 一种办法是直接返回并报错&#xff0c;但是这样应用层要获得…

linux通配符和正则表达式深层解析...

目录&#xff1a; (一)了解通配符和正则的作用 (二)通配符的使用 (三)正则表达式的使用 (四)扩展正则表达式的使用 (一)了解通配符和正则的作用 (1.1)在我们日常的工作中&#xff0c;我们都会使用到通配符或者正则表达式。通配符是一种特殊语句&#xff0c;主要有星号(*)和问号…

交换机和路由器到底有什么区别???

我&#xff1a;度娘度娘&#xff0c;交换机和路由器的区别是什么呢&#xff1f; 度娘&#xff1a;一个工作在第二层数据链路层&#xff0c;一个工作在第三层网络层。 我&#xff1a;哈&#xff1f;那工作在不同层会有什么区别&#xff1f;为什么要工作在不同层&#xff1f; …

2023五一数学建模A题完整思路

已更新五一数学建模A题思路&#xff0c;文章末尾获取&#xff01; A题完整思路&#xff1a; A题是一个动力学问题&#xff0c;需要我们将物理学概念运用到实际生活中&#xff0c;我们可以先看题目 问题1&#xff1a; 假设无人机以平行于水平面的方式飞行&#xff0c;在空中投…

Windows11安装sqlserver2012失败后解决方案

首先卸载 WinR打开运行输入services.msc查看所有服务/或者我的电脑管理找到服务列表/任务管理器进入服务列表&#xff0c;停止所有与Sql Server有关的服务&#xff0c;如下&#xff1a; 打开控制面板-卸载sqlserver所有相关软件&#xff1b; 删除SQL Server相关注册表&#…

【观察】中国软件行业进入“重构期”,看浪潮海岳如何“开新局”

众所周知&#xff0c;改开四十多来年&#xff0c;中国软件产业在经历了萌芽与低谷、摸索与转型后&#xff0c;逐步进入了快速发展期。特别是过去几年&#xff0c;在新的发展格局&#xff0c;信创替代的进程中&#xff0c;整个中国软件业更是加速进入了全新的“重构期”。 在此过…

Unity API详解——Quaternion类

Quaternion类又称四元数&#xff0c;由x、y、z和w这4个分量组成&#xff0c;属于struct类型。在Unity中&#xff0c;用Quaternion来存储和表示对象的旋转角度。Quaternion的变换比较复杂&#xff0c;对于GameObject一般的旋转及移动&#xff0c;可以用Transform中的相关方法实现…

CH32V307环境参数在线监测系统(一)

CH32V307环境参数在线监测系统是以CH32V307VCT6为核心&#xff0c;由ESP8266模块、DHT11温湿度传感器模块、TFT LCD显示屏组成。系统实物图如下所示&#xff1a; 系统功能主要有RTC实时时钟、WIFI网络授时、DHT11温度测量、温湿度数据实时上传到onenet平台、屏幕定时刷新等功能…

在Docker上安装和运行MySQL容器(纯步骤)

在Docker上安装和运行MySQL步骤 本文章只有操作步骤&#xff0c;没有原理解释&#xff0c;只是在学习当中提醒自己安装步骤。 第一步&#xff1a;从远程仓库拉取MySQL镜像 1.从远程仓库搜索mysql镜像 docker search mysql2.pull拉取镜像 这里我选择的是mysql的5.7版本 docker…

盘点 5 个 yyds 的 AI 绘画辅助工具

国外著名的 AI 作图工具 Midjourney、Stable Diiffusion 都可以根据你输入的指令生成一张图片。 如果你想输出高质量的图片&#xff0c;需要掌握一些 prompt 指令技巧。本文章便盘点了 5 个 GitHub 上的开源项目&#xff0c;引领你更好的上手 AI 作图。 本期推荐开源项目目录&…

软件杯龙源风电赛题培训!千万分钟数据和全流程基线等你来战

‍‍ “中国软件杯”大学生软件设计大赛是一项面向中国在校学生的公益性赛事&#xff0c;大赛由国家工业和信息化部、教育部、江苏省人民政府共同主办&#xff0c;是全国软件行业规格最高、最具影响力的国家级一类赛事。其中&#xff0c;作为重点赛题的龙源风电赛&#xff0c;上…

我们分析了9.12亿篇博客文章,得出了11条内容营销发现

我们分析了 9.12 亿篇博客文章&#xff0c;想要更好地了解目前的内容营销领域。 具体来说&#xff0c;我们研究了这些文章的内容格式、字数和标题等因素与社交媒体分享和反向链接的关联性。 在我们的数据合作伙伴BuzzSumo的帮助下&#xff0c;我们有了一些非常有趣的发现。 …

Dex-Net使用手册————GQCNN网络

1. Dex-Net Package GitHub - BerkeleyAutomation/dex-net &#x1f388;dex-net Python 包用于打开、读取和编写 HDF5 数据库的 3D 对象模型、平行下颚抓取和掌握鲁棒性指标。 &#x1f388;HDF5数据库还可用于生成大量数据集&#xff0c;将点云和抓取的元组与二进制抓取鲁棒…

【Python】【进阶篇】12、搭建Django开发环境

目录 搭建Django开发环境1. 安装Python解释器2. 安装MySQL数据库3. 安装Python包管理器4. 安装 Pycharm IDE 搭建Django开发环境 上一章我们介绍了 Django 框架的重要组件&#xff0c;常言道“工欲善其事&#xff0c;必先利其器”&#xff0c;在正式创建 Django 项目之前&…

AI绘画——Lora模型Niji-Expressive V2 launch(灵动优雅,张力尽显)

目录 Niji-Expressive V2 launch!! 灵动优雅&#xff0c;张力尽显 Vivid and elegant, full of tension 模型演示&#xff08;多图预警&#xff09; Niji-Expressive V2 launch!! 灵动优雅&#xff0c;张力尽显 本次升级泛用性&#xff0c;能在更多模型和采样方式上适用 …

《一文带你读懂:云原生时代业务监控》

点击上方蓝字关注我们&#xff01; 对业务来说&#xff0c;完备的应用健康性和数据指标的监控非常重要&#xff0c;通过采集准确的监控指标、配置合理的告警机制&#xff0c;我们能够提前或者尽早发现问题&#xff0c;并做出响应、解决问题&#xff0c;进而保证产品的稳定性&am…

vue性能优化之虚拟列表滚动

一、前言 前端的性能瓶颈那就是页面的卡顿&#xff0c;当然这种页面的卡顿包含了多种原因。 例如HTTP请求过多导致数据加载变慢&#xff0c;下载的静态文件非常大导致页面加载时间很长&#xff0c;js中一些算法响应的时间过长等。很多前端工程师都花费很多的精力在dom渲染上来…

Java 入门 - 语法基础

hello world public class Hello {public static void main(String[] args) {System.out.println("hello world");} } 复制代码 public: 是关键字&#xff1b;表示公开的class: 是关键字&#xff1b;用来定义类Hello: 是类名&#xff1b;大小写敏感&#xff1b;命名…