本教程演示了如何使用数据库角色实现口令保护的角色和安全的应用程序角色。
大约 30 分钟
本教程包括下列主题:
| 概述 | ||
| 情景 | ||
| 前提条件 | ||
| 创建用户并设置表访问权限 | ||
| 使用安全的应用程序角色 | ||
| 总结 | ||
将鼠标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:此操作会同时加载所有屏幕截图,网速较慢时,响应时间可能会比较长。)
注意:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。
角色是一种用于在 Oracle 数据库中管理权限的强大方法。可以将角色授予用户和其他角色。将角色授予用户后,角色可以被设置为默认角色,当用户成功地通过数据库访问权限验证时将激活与角色关联的权限。如果未将角色设置为默认角色,可以使用“set_role”命令调用它。
在本教程中,您将学习如何使用“安全的应用程序角色”防止将角色授予未授权用户。
本教程介绍了 OSRD 的两位员工(即 Karen Partners 和 Louise Doran)如何尝试获取 oe.orders 表中的信息。角色“ots_role”中定义了该表的访问权限。由于 Karen 是 Louise 的经理,因此 Karen 将能够访问 oe.orders 中的信息,而 Louise 却不能。
开始本教程之前,您应该:
| 1. |
可以访问或已经安装了 Oracle 数据库 10g 第 1 版或更高版本。
|
| 2. |
可以访问或已经安装了示例模式。本教程使用 Oracle 数据库 10g 中包含的 OE 模式。
|
| 3. | 下载 approles.zip 文件并将其解压缩到工作目录
|
在开始创建并分配角色之前,需要创建用户并设置相应表的访问权限。执行以下操作:
| 1. |
打开一个终端窗口,执行以下命令和脚本: cd wkdir sqlplus /nolog @sec_approles_create_users @sec_approles_create_users 脚本包含以下命令: connect system/ drop user "LOUISE.DORAN@OSRD.COM" cascade; create user "LOUISE.DORAN@OSRD.COM" identified by welcome1; grant create session to "LOUISE.DORAN@OSRD.COM"; connect hr/hr
|
| 2. |
现在,您可以设置将在本教程中使用的表的访问权限。执行以下脚本: @sec_approles_set_access @sec_approles_set_access 脚本包含以下命令: connect oe/oe connect hr/hr
|
| 1. |
您首先需要创建角色。从终端窗口中执行以下 SQL 脚本: @sec_approles_create_role @sec_approles_create_role 脚本包含以下命令: connect system/oracle
|
| 2. |
接下来,您需要授予 oe.orders 和 oe.customers 的 select 访问权限。然后,向每个用户授予此角色并将他们的配置文件设置为 none。从终端窗口中执行以下 SQL 脚本: @sec_approles_grant_role @sec_approles_grant_role 脚本包含以下命令: connect oe/oe connect system/oracle grant ots_role to "LOUISE.DORAN@OSRD.COM";
|
| 3. |
您现在可以设置 Karen 的角色并对 oe.orders 表执行 select。从终端窗口中执行以下 SQL 脚本: @sec_approles_test_role_karen @sec_approles_test_role_karen 脚本包含以下命令: connect "KAREN.PARTNERS@OSRD.COM"/welcome1;
|
| 4. | 请注意如果在执行 select 之前不设置角色将会发生什么情况。执行以下 SQL 脚本: @sec_approles_test_wo_role_louise @sec_approles_test_wo_role_louise 脚本包含以下命令: connect "LOUISE.DORAN@OSRD.COM"/welcome1;
|
| 5. | 由于 Louise 未被授予“ots_role”,因此她没有该角色中定义的表的访问权限。但她只需知道该角色的名称 ('ots_role') 和命令“set role”便可以自行解决此“问题”。换言之,她非常轻松地获得了她不应知道的信息的访问权限。运行以下脚本: @sec_approles_test_w_role_louise @sec_approles_test_wo_role_louise 脚本包含以下命令: set role ots_role;
|
在本主题中,您将创建并使用一个安全的应用程序角色。执行以下步骤:
| 1. | 您首先需要创建角色。从终端窗口中执行以下 SQL 脚本: @sec_approles_sar_create_role @sec_approles_sar_create_role 脚本包含以下命令: connect system/oracle
|
| 2. | 接下来,您需要授予 oe.orders 和 oe.customers 的 select 访问权限。然后,向每个用户授予此角色并将他们的配置文件设置为 none。从终端窗口中执行以下 SQL 脚本: @sec_approles_grant_role @sec_approles_grant_role 脚本包含以下命令: connect oe/oe connect system/oracle grant ots_role to "LOUISE.DORAN@OSRD.COM";
|
| 3. | 现在,您可以创建安全性应用程序角色过程。从终端窗口中,执行以下 SQL 脚本;注意,此过程可以执行所有类型的安全性检查。在本示例中,您首先将“session_user”与 hr.employees 表中的电子邮件地址进行比较。然后,检查员工的 manager_id。仅当 manager_id=100 时,该过程才设置用户的角色,否则将不设置角色。 @sec_approles_sar_create_proc @sec_approles_sar_create_proc 脚本包含以下命令: connect system/oracle
|
| 4. | 您需要授予此过程的执行权限。从终端窗口中执行以下 SQL 脚本;在本示例中,OSRD 的内部安全性策略可以确定是否将此过程的执行权限授予所有员工: @sec_approles_sar_grant_proc @sec_approles_sar_grant_proc 脚本包含以下命令: connect system/oracle
|
| 5. | 现在,您可以测试 Karen 的访问权限。执行以下 SQL 脚本: @sec_approles_sar_test_role_karen @sec_approles_sar_test_role_karen 脚本包含以下命令: connect "KAREN.PARTNERS@OSRD.COM"/welcome1;
|
| 6. | 现在,您可以测试 Louise 的访问权限。执行以下 SQL 脚本: @sec_approles_sar_test_role_louise @sec_approles_sar_test_role_louise 脚本包含以下命令: connect "LOUISE.DORAN@OSRD.COM"/welcome1;
|
在本教程中,您学习了如何:
| 使用数据库角色 | ||
| 使用安全的应用程序角色 | ||