角色管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第11章角色管理
【本章内容】
介绍角色的概念和作用,讨论了系统的常用预定义角色,最后是如何创建和使用用户自定义角色。
【本章要点】
•角色创建和维护
•如何使用系统预定义角色
•获取角色信息
【关键术语】
Role 角色 Enabling role 角色生效
Disabling role 角色失效 Predefined roles 预定义角色
Application roles 应用角色 Default roles 默认角色
11.1 角色概述
11.1.1角色的作用
我们知道,当建立用户时,用户没有任何权限,不能执行任何操作。为了使得用户可以连接到数据库并执行各种操作,必须为其授予相应的系统权限或对象权限。假定要使用户A、B、C能够连接到数据库,并具有创建表的权限和可以在SCOTT.EMP表上执行INSERT、UPDATE 操作,那么需要进行12次授权操作。如图11-1所示。
A B C
CREATE CREATE INSERT ON UPDATE ON
SESSION TABLE SCOTT.EMP SCOTT.EMP
图11-1
如果将来要收回用户A、B、C的INSERT ON SCOTT.EMP权限,则分别需要从每个用户处收回该权限,共需要三次收回权限的操作。
因为用户A,B,C具有相似的权限需求,那么是否可以简化它们的授权和回收权限的操
作呢?回答是肯定的,通过角色可以简化授权和收权操作的次数。角色是一组权限的命名。假定使用角色,首先可以将这四种权限授予角色OE,然后将该角色分别授予A,B,C用户,只需要进行7次授权操作,显然可以降低授权次数。如图11-2所示。
A B C
CREATE CREATE INSERT ON UPDATE ON
SESSION TABLE SCOTT.EMP SCOTT.EMP
图11-2
如果要回收用户A、B、C的INSERT ON SCOTT.EMP,那么只需要从角色OE处收回INSERT ON SCOTT.EMP对象权限就可以了。
所以,角色使得权限的授予和回收变得方便和简化了。
11.1.2系统预定义角色
角色是一组相关权限的命名集合,使用角色最主要的目的是简化权限管理。当建立数据库、安装了数据字典和PL/SQL包之后,Oracle会自动建立一些预定义角色。下面介绍一些Oracle常用的预定义角色:
1.CONNECT角色
CONNECT角色是在建立数据库时Oracle执行脚本SQL.BSQ自动建立的角色,该角色包含以下一些系统权限:ALTER SESSION、CREATE CLUSTER、CREATE DATABASE LINK、CREATE SEQUENCE、CREATE SESSION、CREATE SYNONYM、CREATE TABLE、
CREATE VIEW。
2.RESOURCE角色
RESOURCE角色是在建立数据库时Oracle执行脚本SQL.BSQ自动建立的角色,该角色包含以下一些系统权限:CREATE CLUSTER、CREATE INDEXTYPE、CREATE OPERATOR、CREATE PROCEDURE、CREATE SEQUENCE、CREATE TABLE、CREATE TRIGGER、CREATE TYPE。RESOURCE 角色隐含具有UNLIMITEDTABLESPACE权限。
3.DBA角色
DBA是在建立数据库时Oracle执行脚本SQL.BSQ自动建立的角色,该角色具有所有系统权限以及WITH ADMIN OPTION选项。
要注意的是,CONNECT、RESOURCE、DBA三种角色是为与先前版本兼容而保留的,在将来版本中可能不会自动建立。
4.EXP_FULL_DATABASE角色
EXP_FULL_DATABASE角色是在安装数据字典时执行CATEXP.SQL脚本建立的角色,
该角色用于执行数据库的完全导出和增量导出操作,并且它包含以下一些权限和角色:系统权限SELECT ANY TABLE、BACKUP ANY TABLE、EXECUTE ANY PROCEDURE、EXECUTE ANY TYPE、ADMINISTER RESOURCE MANAGER,在表SYS.INCVID、SYS.INCFIL以及SYS.INCEXP上的INSERT、DELETE和UPDATE对象权限,以及EXECUTE_CATALOG_ROLE和SELECT_CATALOG_ROLE 角色。
5.IMP_FULL_DATABASE角色
IMP_FULL_DATABASE角色也是在安装数据字典时执行CATEXP.SQL脚本建立的角色,该角色用于执行完全数据库导人操作,它包含了EXECUTE CATALOG ROLE和SELECT_CATALOG_ROLE角色以及大量系统权限(查询DBA_ SYS_ PRIVS)。
6.DELETE_CATALOG_ROLE角色
DELETE_CATALOG_ROLE是在建立数据库时Oracle执行SQL.BSQ自动建立的角色,该角色提供了在系统审计表SYS.AUD$上的DELETE对象权限。
7.EXECUTE_CATALOG_ROLE角色
EXECUTE_CATALOG_ROLE是在建立数据库时Oracle执行SQL.BSQ自动建立的角色,该角色提供了对所有系统PL/SQL包的EXECUTE对象权限。
8.SELECT_CATALOG_ROLE角色
SELECT_CATALOG_ROLE是在建立数据库时Oracle执行SQLBSQ自动建立的角色,该角色提供了在所有数据字典上的SELECT对象权限。
11.2 创建和使用角色
11.2.1创建角色
尽管在设计应用时可以直接使用预定义角色,但出于安全考虑,Oracle,建议使用自定义角色。建立角色是使用命令CREATE ROLE,由DBA来完成的,但如果要以其他用户身份建立角色,那么要求该用户必须具有CREATE ROLE系统权限。
1.建立角色:不验证
采用不验证方式建立的角色,只是在数据字典中存放角色名称的信息,并且在使角色生效时不需要进行任何检查。
【训练11-1】创建不需要验证的角色oe_clerk。
1)以管理员身份登录,创建角色
SQL> conn sys/oracle as sysdba
Connected.
SQL> create role r_1;
Role created.
与用户类似,角色也可以进行验证,以确保角色的安全性。
2.建立角色:数据库验证
数据库验证是指使用数据库检查角色及其口令的方式。当采用这种方式时,角色名及口令是存放在数据库中的。当使角色生效时,必须提供口令。
【训练11-2】创建数据库验证的角色hr_clerk。