本教程的目的是使用 Oracle 标签安全性基于标签策略设置安全性。
大约 30 分钟
本教程包括下列主题:
概述 | ||
情景 | ||
前提条件 | ||
创建策略 | ||
设置用户授权 | ||
将策略应用于表 | ||
为数据中添加标签 | ||
测试策略实施 | ||
重置环境 | ||
总结 | ||
相关信息 |
将光标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)
注意:此外,还可以在下列步骤中将光标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。
可以使用 Oracle 标签安全性在使用敏感性标签的现有应用程序中实施更细粒度的安全性。由于大量信息存储在单个数据库中,因此数据库整合和互联网已经使细粒度访问控制变得非常重要。
本教程使用示例模式表 HR.LOCATIONS 和 HR.JOB_HISTORY。Oracle 标签安全性为 LOCATIONS 和 JOB_HISTORY 表中的数据行分配敏感性标签。亚洲地区中的三个位置被分配了 SENSITIVE::ASIA 敏感性标签。美国的某个位置被分配了 HIGHLY_SENSITIVE::UNITED_STATES 敏感性标签。所有剩余位置被分配了 PUBLIC 敏感性标签。
JOB_HISTORY 表中 END_DATE 大于五年的数据行被分配了 SENSITIVE 敏感性标签。END_DATE 小于或等于五年的数据行被分配了 CONFIDENTIAL 敏感性标签。
应用程序所有者 HR 有权读取和写入 JOB_HISTORY 和 LOCATIONS 中的所有数据行。
MYCO_MGR 应用程序用户有权查看标记为 SENSITIVE 和比 SENSITIVE 低并拥有 US、ASIA 或 EUROPE 组的 LOCATIONS 表中的所有数据。MYCO_PLANNING 应用程序用户有权查看标记为 HIGHLY SENSITIVE 和比 HIGHLY SENSITIVE 低并拥有 GLOBAL 组的 LOCATIONS 表中的所有数据。请注意,US、ASIA 和 EUROPE 组为 GLOBAL 组的下级。
创建了两个 Oracle 标签安全性策略:
FACILITY | 指定的安全列为 FACLAB |
PRIVACY | 指定的安全列为 PRIVLAB |
这两个列的安全列在创建策略时标记为 HIDDEN。
开始学习本教程之前,您应已经:
1. |
完成了教程:使用真正应用集群 (RAC) 和自动存储管理 (ASM) 在 Windows 上安装 Oracle 数据库 10g。 或者 完成了教程:在 Linux 上安装 Oracle 数据库 10g。
|
2. |
下载 ls.zip 并将其解压缩到工作目录中 (/home/oracle/wkdir)
|
在本教程中,您将创建三个用户:MYCO_EMP、MYCO_MGR 和 MYCO_PLANNING。您还将授予他们对 HR 模式中的 JOB_HISTORY 和 LOCATIONS 表的访问权限。
1. |
打开一个终端窗口。将目录更改为 /home/oracle/wkdir。使用 /nolog 选项启动 SQL*Plus。在 SQL*Plus 会话中,执行以下脚本: @ols_setup.sql Prompt ***********************************************************************
|
您将添加两个策略,即 FACILITY 和 PRIVACY。对于 FACILITY 策略,您将创建三个敏感性级别和四个组。对于 PRIVACY 策略,您将创建两个敏感性级别。使用 SQL*Plus 创建策略,然后使用 Oracle Policy Manager 查看这些策略。执行以下操作:
1. |
从 SQL*Plus 会话中,执行以下脚本来创建策略及其组件: @ols_create_policies.sql Prompt 您现在可以在 Oracle Policy Manager 中查看策略。
|
|
2. |
在终端窗口中,输入以下命令: oemapp opm 以 lbacsys/lbacsys@<sid> 的身份直接登录到数据库。然后单击 OK。
|
|
3. |
展开 Oracle Label Security Policies 以查看 FACILITY 和 PRIVACY 策略。展开 FACILITY 和 Labels。然后,单击 Components。在本示例中,这些级别将指示敏感性级别。单击 Groups 选项卡。
|
|
4. |
组指示各种将用于分配标签的位置。组 US、ASIA 和 EUROPE 为 GLOBAL 组的下级。这样,您便可以向 GLOBAL 组分配标签,该标签随后将应用于其所有下级组。现在,您可以单击 Data Labels 查看已创建的标签。
|
|
5. |
本示例中创建了五个标签。您将稍后应用这些标签。展开 PRIVACY 查看它的标签。
|
|
6. |
您已经为 PRIVACY 策略创建了两个敏感性级别。没有为该策略创建组。单击 Data Labels 查看已创建的数据标签。
|
|
7. |
已经为每个级别创建了一个标签。 此时,您已准备创建用户授权。最小化 Oracle Policy Manager。
|
稍后,将通过把前面创建的标签应用于数据来限制数据访问权限。在此之前,需要对用户进行授权并授予用户对策略的权限,以便定义与这些用户匹配的访问权限。
HR 用户需要数据的完全读写访问权限(“FULL”),并且必须能够将会话标签和会话权限更改为其他用户的会话标签和会话权限(“PROFILE_ACCESS”)。执行以下操作:
1. |
从 SQL*Plus 会话中,执行以下脚本来创建用户标签授权: @ols_set_user_auth.sql Prompt
|
|
2. |
最大化 Oracle Policy Manager。在 FACILITY 策略下,展开 Authorizations,然后展开 Users。您将看到三个刚刚授权的用户。单击 MYCO_EMP。您已经授予该用户 Public 授权。
|
|
3. |
单击 MYCO_MGR。已经授予该用户 SENSITIVE 级别的授权。
|
|
4. |
单击 MYCO_PLANNING。已经授予该用户 HIGHLY_SENSITIVE 级别的授权。
|
|
5. |
在 PRIVACY 策略下,展开 Authorizations,然后展开 Users。单击 MYCO_MGR。已经授予该用户 CONFIDENTIAL 级别的授权。 此时,您可以将这些策略应用于表。
|
可以将 Oracle 标签安全性策略应用于整个应用程序方案或应用于单个应用程序表。您将把它应用于 LOCATIONS 和 JOB_HISTORY 表。执行以下操作:
1. |
从 SQL*Plus 会话中,执行以下脚本将 FACILITY 策略应用于 LOCATIONS 表,并将 PRIVACY 策略应用于 JOB_HISTORY 表: @ols_apply_policy_to_table.sql Prompt End; /
|
|
2. |
在 FACILITY 策略下,依次展开 Protected Objects、Tables 和 HR。单击 LOCATIONS 表。然后,单击 Options 选项卡。注意对 LOCATIONS 表执行该策略的方式。
|
|
4. |
在 PRIVACY 策略下,依次展开 Protected Objects、Tables 和 HR。单击 JOB_HISTORY 表。然后,单击 Options 选项卡。
|
在测试策略前,必须通过执行以下操作为数据添加标签:
1. |
从 SQL*Plus 中,执行以下脚本: @ols_add_labels_to_data.sql SPOOL ols_add_labels_to_data.log
|
建立应用于表和用户的策略并为数据添加标签后,现在就可以通过执行以下操作对它们进行测试:
1. |
要加载每个用户的数据,执行以下脚本: @ols_test_facility.sql spool ols_test_facility.log 请注意,用户 MYCO_EMP 被赋予公共访问权限,并返回了包含 19 行的结果集。 MYCO_MGR 用户被赋予 SENSITIVE 级别,因此收到 SINGAPORE、BEIJING 和 TOKYO 三个附加行。 最终,MYCO_PLANNING 被赋予 HIGHLY-SENSITIVE 授权,并另外收到一个 SOUTH SAN FRANCISCO 行。
|
|
2. |
现在,可以通过执行以下脚本测试 PRIVACY 策略: @ols_test_privacy.sql set linesize 180 请注意,MYCO_EMP 看不到任何数据。 MYCO_MGR 只能看到 END_DATE 小于等于 5 年的数据。 HR 用户便可以看到所有数据。
|
现在,您已经测试了策略,接下来您可以通过执行以下步骤删除用户和策略:
1. |
执行以下脚本: @ols_cleanup.sql Prompt ***************************************************************
|
在本教程中,您学习了如何执行下列任务:
创建策略 | ||
设置用户授权 | ||
将策略应用于表 | ||
为数据中添加标签 | ||
测试策略 |
要了解关于 Oracle 数据库 10g 的更多信息,请参考 OTN 网站上的其他 OBE。 | ||
有关本 OBE 教程的问题,请在 OBE Discussion Forum 上发布查询。 |