使用数据屏蔽包替换敏感数据

本教程将介绍如何识别敏感数据、为敏感字段选择相应的屏蔽格式、应用屏蔽,然后在生产版本中替换敏感字段。

大约 1 个小时

主题

本教程包括下列主题:

将鼠标置于此图标上可以加载和查看本教程的所有屏幕截图。 (警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。

概述

针对数据库的数据屏蔽包可以帮助组织按照隐私和保密政策共享生产数据,方法是根据屏蔽规则将敏感数据替换为真实但经净化的数据。

有 2 个针对数据屏蔽包的主要使用案例。第一个,DBA 希望复制生产数据库以用于测试目的并使用数据屏蔽包将所有敏感数据替换为无害但真实的信息,然后将该数据库提供给开发人员。第二个,组织希望与第三方共享生产数据,同时隐藏敏感或可以识别个人的信息。

在本教程中,您将在临时的中间环境中查看 HR 模式以识别敏感数据,然后为敏感数据选择相应的屏蔽格式。创建屏蔽后,您将继续应用屏蔽,并根据以前指定的屏蔽规则将生产数据库中的敏感字段替换为真实但经净化的数据。

返回主题列表

开始本教程之前,您应该:

1.

安装 Oracle 数据库 10gR2 或 Oracle 数据库 11gR1。

 

2.

安装随 Oracle 数据库 10gR2 或 Oracle 数据库 11gR1 一同提供的示例模式。

 

3.

使用 10.2.0.4 补丁集将您的 Oracle 企业管理器 10gR2 安装升级到 Oracle 企业管理器网格控制 10gR4。

 

4.

下载 datamask.zip 文件并将其解压缩到您的工作目录中。

 

5.

本教程假设您已在 EM 信息库中创建了一些屏蔽格式。要加载屏蔽格式,从您的工作目录打开一个 SQL*Plus 会话并执行以下脚本:

@dm_rule_setup

注:系统将提示您提供 EM 网格控制用户。

 
        
6.

您还需要对默认的 HR 模式进行一些其他更改以支持本教程中的数据屏蔽情形。从 SQL*Plus 会话中,以您的 HR 用户身份执行以下脚本。

@dm_changes

注:如果您希望在本教程之后刷新您的 HR 用户模式,需要运行默认的演示模式创建脚本,即 $ORACLE_HOME/demo/schema 目录中的 mksample.sql

 

返回主题列表

数据屏蔽包赋予安全管理员维护常见屏蔽格式的集中化定义的能力。这一集中化的定义确保 DBA 在整个企业中应用相同的屏蔽规则,无论敏感数据驻留在数据库的什么位置。这样,组织和企业可以确保敏感数据的屏蔽方式一致,且符合既有的数据共享标准。

在本主题中,您将为加利福尼亚司机驾照号创建一个屏蔽格式。它们的格式以 A、B、C 或 D 开头,后跟一个随机的 7 位数字。执行以下步骤:

1.

打开浏览器,输入以下 URL 登录到 Oracle Enterprise Manager 10g(将 <主机名> 更改为 localhost 或您指定的主机名)。

http://<主机名>:4889/em

 

2.

以您安装 Oracle 企业管理器时创建的用户身份登录,单击 Login

 

3.

单击 Targets 选项卡。

 

4.

单击 Databases 选项卡。

 

5.

从列表中选择您的数据库或输入搜索条件,单击 Go

 

6.

从列表中选择您的数据库(如果您在上一步中输入了搜索条件)。

 

7.

单击 Administration 选项卡。

 

8.

向下滚动页面,在 Data Masking 下选择 Definitions

 

9.

在 Format Library 下,选择 Format Library 链接。

 

10.

格式库包含一组集中的数据屏蔽格式,用于屏蔽常用的敏感数据。例如,有针对电话号码、社会保险号码、信用卡号码和虚假名字和姓氏的屏蔽格式。安全管理员可以定义这些屏蔽格式并在格式库中维护它们,以供 DBA 在整个企业中使用。选择 Bay Area Phone Number 屏蔽。

 

11.

注意,电话号码格式是使用三种类型的屏蔽基元创建的。首先,数组表包含一组区号,后跟一个固定的字符串,然后是一个 4 位随机数字。数据屏蔽包提供了用于字符、数字和日期的屏蔽基元,以允许管理员轻松快速地构建任何类型的屏蔽格式。单击 Return

 

12.

现在,您将创建一个新的屏蔽格式。在 Format Library 页面中,单击 Create

 

13.

输入一个名称,在本例中为 01_CR_DR_LICENSE。确保已从下拉列表中选择 Array List,然后单击 Go

 

14.

在 List of Values 中输入 A,B,C,D,单击 OK

 

15.

Array List 类型已创建。选择 Random Digits,然后单击 Go

 

16.

在 Start Length 中输入 7,在 End Length 中输入 7,然后单击 OK

 

17.

Random Digits 类型已创建。注意,这些类型用于生成定义格式的一些示例。单击 OK

 

18.

针对加利福尼亚驾照的屏蔽定义已经创建完毕。单击 Database 路径式导航栏返回 Administration 页。

 

返回主题列表

您希望确保您的数据得到适当的屏蔽。 这是因为关系数据库中的数据通过一个主键-外键关系彼此相关联。例如,EMPLOYEE 表中的 EMPLOYEE_ID 与 CUSTOMERS 表中的 SALES_REP_ID 相关。 要识别要屏蔽的敏感数据,执行以下步骤:

1.

在您的数据库的 Administration 选项卡的 Schema:Database Objects 下,选择 Tables

 

2.

如果未设置首选证书,您将看到登录窗口。以 SYSTEM 用户身份登录。

 

3.

在 Schema 中输入您的 HR 用户,在 Object Name 中输入 EMPLOYEE,然后单击 Go

 

4.

要查看数据,从下拉列表框中选择 View Data,然后单击 Go

 

5. 数据随即显示。您要屏蔽的机密数据源有多个,例如 EMPLOYEE_ID、FIRST NAMES、LAST NAMES 和 SALARY。在下一主题中,您将为这些数据定义屏蔽规则。

 

返回主题列表

数据屏蔽定义是一系列模式中的表和列与屏蔽格式的关联。数据屏蔽定义包含应用程序表中的一系列敏感列,例如,员工社会保险号码及其与数据屏蔽格式的相应关联,例如,伪社会保险号码生成器。

Peoplesoft 等应用产品不在数据库中存储主键-外键关系以独立于数据库;它们在应用程序中执行。在这些情况下,数据屏蔽包为管理员提供了注册这些关系的能力,这样,相关表中的列(如 EMPLOYEE_ID、MGR_ID)已使用相同的屏蔽规则得到相同的屏蔽。

在本主题中,您将使表中的敏感列与一种屏蔽格式相关联。执行以下步骤:

1.

因为要在应用数据屏蔽定义后能够比较数据,因此您希望保留该窗口打开的状态并在您的浏览器中打开另一个选项卡或窗口。右键单击 Database 路径式导航栏,选择 Open Link in New Window(或针对支持选项卡的浏览器选择 Open Link in New Tab)。

 

2.

在您的数据库的 Administration 选项卡的 Data Masking 下,选择 Definitions

 

3.

在 Masking Definitions 页面中,单击 Mask

 

4.

您需要选择希望包含在该屏蔽定义中的列。输入一个名称,然后在 Columns 下单击 Add

 

5.

可以通过多种方式识别敏感数据。建议的一种方法是,通过将相关的敏感列标记为关键字(如 MASK)来识别敏感数据。 在 Schema 中输入您的 HR 用户,在 Comment Name 中输入 MASK%,然后单击 Search

 

6.

将显示 COMMENTS 字段中包含 MASK 的列。选择 EMPLOYEE_ID 列,然后单击 Add

 

7.

在本例中,有一个名为 MANAGERS 的自定义表,它是 HR 应用程序的一部分,但是它的包含外键关系在内的约束在该应用程序中实施。MANAGERS 表使用 EMPLOYEE_ID 作为其 driver(司机)表,但是该关系未在数据库中注册为一个约束,因此,您需要在 EMPLOYEE_ID 列上添加一个从属列。单击 Dependent Columns 的 Add 下的 EMPLOYEE_ID 列的 +

 

8.

在 Schema 中输入您的 HR 用户,在 Table Name 中输入 MANAGERS,然后单击 Search

 

9.

从列表中选择 MGR_ID 列,然后单击 Add

 

10.

从属列已添加完毕。现在,您可以定义 EMPLOYEE_ID 列的屏蔽格式了。单击 Format 图标

 

11.

从 Add 下拉列表中选择 Random Numbers,然后单击 Go

 

12.

在 Start Value 中输入 100000000,在 End Value 中输入 999999999,然后单击 OK

 

13.

单击 OK

 

14.

您希望再屏蔽几列。在 Columns 下,单击 Add

 

15.

这次,在 Schema 中输入 HR 用户,在 Table Name 中输入 EMPLOYEES,然后单击 Search

 

16.

注意,这次列出了 EMPLOYEES 表中的所有列,而不只是包含名称中带 MASK 的 COMMENT 的列。从列表中选择以下列,单击 Add

FIRST_NAME
LAST_NAME
PHONE_NUMBER
SALARY

 

17.

选择 LAST_NAME 的 Format 图标。

 

18.

您可以再次使用已经 在格式库中定义的格式。利用格式库,管理员可以维护标准屏蔽格式的集中定义,这样 DBA 可以在整个企业中使用它们。单击 Import from Library

 

19.

选择 Anglo American Last Name,然后单击 Import

 

20.

单击 OK

 

21.

选择 FIRST_NAME 的 Format 图标。

 

22.

该列已经有一个定义好的格式。您可以从库导入它。单击 Import from Library

 

23.

选择 Anglo American First Name,然后单击 Import

 

24.

单击 OK

 

25.

选择 PHONE_NUMBER 的 Format 图标。

 

26.

单击 Import from Library

 

27.

选择 Bay Area Phone Number,然后单击 Import

 

28.

单击 OK

 

29.

选择 SALARY 的 Format 图标。

 

30.

对于该列,您希望随机移动原始的列数据。从 Add 下拉列表中选择 Shuffle,然后单击 OK。注:您不能将使用该格式类型的列与其他格式类型(如 Random Numbers 或 Random Strings)组合在一起。

 

31.

您已经定义了希望屏蔽其数据的所有列。单击 Next

 

32.

将显示一个窗口,指明屏蔽脚本已生成。

 

33.

查看警告和空间检查消息,单击 Next

 

34.

输入一个作业名称,单击 Next

 

35.

通过在单选按钮间切换,查看脚本概述和脚本的全部内容。 注意,您还可以保存脚本。 完成后,单击 Submit

 

36.

作业已成功提交。单击 View Job Details

 

37.

作业已成功完成。现在,您可以将屏蔽后的数据与表中先前的数据进行比较。单击 Targets,然后选择您的数据库。单击 Administration 选项卡,然后单击 Database Objects 下的 Tables 链接。

 

38.

在 Schema 中输入 HR,在 Object Name 中输入 EMPLOYEES,单击 Go。对照您以前打开的其他窗口比较数据。注意,您定义了屏蔽的列的数据现在已经发生了变化。

 

返回主题列表

现在,您可以将定义导出到 XML,创建另一个与其类似的定义并应用到另一个数据库,或使用该定义继续完成数据屏蔽过程。执行以下步骤:

1.

导航到您的数据库的 Administration 页面。在 Data Masking 下,选择 Definitions

 

2.

从 Search 下拉列表中选择 Masking Definition,输入识别您的定义的搜索条件,然后单击 Go

 

3.

选择您的屏蔽定义,单击 Export

 

4.

单击 Export

 

5. 保存文件并查看内容。

 

返回主题列表

在上一主题中,您将屏蔽定义导出到了 XML。XML 定义用于两个目的:

在本主题中,您将导入一个存储在 XML 中的外部定义,然后您可以使用它继续完成数据屏蔽过程。执行以下步骤:

1.

在文本编辑器中打开 HR_MASK.xml 文件,更改以下元素:

DEFINITION_NAME:<您的屏蔽定义的名称>(例如 HR mask in XML)
TARGET_NAME:<您的数据库>
OWNER:<您的 HR 用户>(您需要为每个屏蔽列都进行更改)

 

2.

切换到 Enterprise Manager,在 Masking Definition 页面中,单击 Import

 

3.

输入 XML 文件的位置,单击 Continue

 

4.

选择导入屏蔽定义,单击 View

 

5. 将显示该定义。您可以查看格式。单击 PHONE_NUMBER 旁边的眼镜图标。

 

6. 将显示 PHONE_NUMBER 的格式。

 

返回主题列表

当应用程序或业务有很特殊的要求时,用户定义的屏蔽很有用。执行以下步骤:

1.

您希望导航到 EMPLOYEES 表并查看数据。

 

2.

右键单击 Database 路径式导航栏,选择打开一个新窗口或新选项卡。这使您可以本主题结束时将该数据与标记后的数据进行比较。

 

3.

在 Schema 中输入 HR 用户,在 Object Name 中输入 EMAIL_MASK,然后单击 Go

 

4.

您用于本主题的函数已载入前提条件脚本中。选择 Function EMAIL_MASK,单击 View

 

5. 该用户定义的函数根据姓名生成假的电子邮件地址,用于将实际的电子邮件地址替换为假的电子邮件地址,以验证应用程序生成的警报到达用户指定的地址。单击 Database 路径式导航栏。

 

6. 在 Data Masking 下,选择 Definitions

 

7. 您希望创建一个新定义,使用 EMAIL_MASK 这一用户定义的函数。单击 Mask

 

8. 输入屏蔽定义名称,在 Columns 下单击 Add.

 

9. 在 Schema 中输入您的 HR 用户,在 Object Name 中输入 EMPLOYEES,然后单击 Search

 

10. 选中 EMAIL 列复选框,然后单击 Add

 

11. 单击 EMAIL 列的 Format 图标。

 

12. 从 Add 下拉列表中选择 User Defined Function,单击 Go

 

13. 在 User Defined Function 中输入 <HR 用户>.EMAIL_MASK,然后单击 OK

 

14. 注意为 EMAIL 生成的屏蔽格式。单击 OK

 

15. 定义已完成,单击 Next

 

16. 将显示一个窗口,指明屏蔽脚本已生成。

 

17.

查看警告和空间检查消息,单击 Next

 

18.

输入一个作业名称,单击 Next

 

19.

单击 Submit

 

20.

作业已成功提交。单击 View Job Details

 

21.

作业已成功完成。现在,您可以将屏蔽后的数据与表中以前的数据进行比较。单击 Targets,然后选择您的数据库。单击 Administration 选项卡,然后单击 Database Objects 下的 Tables 链接。

 

22.

在 Schema 中输入 HR,在 Object Name 中输入 EMPLOYEES,单击 Go。对照您以前打开的其他窗口比较数据。注意,email 列的数据已发生变化。

 

返回主题列表

在本教程中,您学习了如何:

管理数据屏蔽格式库
为您的应用程序模式创建数据屏蔽定义
导出和导入屏蔽定义
创建并应用用户定义的屏蔽

返回主题列表

将鼠标置于该图标上可以隐藏所有的屏幕截图。