角色管理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档