oracle的安全管理不仅可以通过对不同用户进行权限授予与撤销(revoke命令),但是在涉及到多张表和多个用户时,这样操作会造成工具量剧增;此外,一旦为用户授予某一权限则该用户在所有环境中均具有该权限,无法限制在特定环境中授予用户活动状态的权限。因此,oracle还提供了角色管理,角色是一组系统权限和对象权限,可以对一个用户进行批量权限授予。
使用以下命令可以创建一个角色:
SQL> create role db_mgr1; 角色已创建。
可以通过以下命令为角色授予特定的对象权限(即对某一些用户所拥有模式对象的CRUD操作权限):
SQL> grant select on scott.emp to db_mgr1; 授权成功。
表明db_mgr1角色将具有scott.emp表对象的select权限,随后将这个角色授予给一个特定的用户:yanh;
SQL> grant db_mgr1 to yanh; 授权成功。 SQL> conn yanh/oracle@orcl; 已连接。 SQL> select * from scott.emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-12月-80 3388 20
此时,使用yanh账户连接数据库将可以对scott.emp表进行查询操作,若执行insert、update、delete(DML)操作,则会出现权限不足的情况:
SQL> edit; 已写入 file afiedt.buf 1 insert into scott.emp(empno,ename,job,sal,hiredate) 2* values('1234','helen','Mgr','8000',sysdate) SQL> / insert into scott.emp(empno,ename,job,sal,hiredate) * 第 1 行出现错误: ORA-01031: 权限不足
在oracle数据库中,拥有很多预先定义的角色,常见的有:
1)connect,在oracle11g中,这个角色只拥有Create session权限,其存在仅仅是为了向后兼容,先前版本中还具有创建数据存储对象的系统权限。
2)resource,这个角色具有创建数据对象(表、视图、索引等)和过程对象(PL/SQL程序片段),还具有unlimited tablespace权限。
3)dba,拥有大多数系统权限,包含多个对象权限和角色,授予dba角色的用户可以管理数据库的大部分功能。
4)select_catalog_role,拥有针对数据字典对象的多个对象权限,没有系统权限也没有针对用户数据的权限。
5)schedule_admin,拥有用于管理调度服务的调度程序作业所需的系统权限。
6)public,数据库预定义的角色,在每一个用户创建时都会授予该权限。如果将某一个对象的对象权限授予给public角色,如:
SQL> grant select on scott.dept to public; 授权成功。
则所有用户都能查询到scott.dept表。
可以使用以下SQL查询某个用户具有的角色权限:
SQL> select * from dba_role_privs where grantee='YANH'; GRANTEE GRANTED_ROLE ADM DEF ------------------------------ ------------------------------ --- --- YANH DB_MGR1 NO YES
以上结果表明,用户yanh在登录数据库服务器时即启用db_mgr1角色,拥有该角色的一切管理职能。可以使用alter命令来更改特定用户的登录启用角色:
SQL> grant connect to yanh; 授权成功。 SQL> alter user yanh default role connect; 用户已更改。 SQL> select * from dba_role_privs where grantee='YANH'; GRANTEE GRANTED_ROLE ADM DEF ------------------------------ ------------------------------ --- --- YANH DB_MGR1 NO NO YANH CONNECT NO YES
此时,用户yanh在登录时会启用connect角色,并不具有db_mgr1角色下的表数据管理职能。通过set role命令可以指定用户的角色,这样还不算安全,因为用户可以选择手动执行该命令:
SQL> select * from scott.emp; select * from scott.emp * 第 1 行出现错误: ORA-00942: 表或视图不存在 SQL> set role db_mgr1; 角色集 SQL> select * from scott.emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-12月-80 3388 20
若使用以下语法来创建角色:
SQL> create role db_mgr identified using time_chk; 角色已创建。
这表明db_mgr角色在启动时,必须调用time_chk存储过程,在这个过程调用中可以执行多次安全检查:例如时间合法性校验、网段校验等等,示例的存储过程代码如下:
create or replace procedure time_chk(errcd out varchar2) is invalid_time exception; begin if to_char(sysdate,'HH24') not in('08','09','10','11','12','13','14','15','16','17','18') then errcd:='not work time!'; raise invalid_time; end if; exception when invalid_time then RAISE_APPLICATION_ERROR(-20001,errcd); when others then RAISE_APPLICATION_ERROR(-20001,'other error'); end time_chk;
相关推荐
oracle角色管理教会你分配角色管理员。
10 oracle管理权限和角色 PPT 10 oracle管理权限和角色 PPT
1.有意从事oracle 数据库工作,担任dba角色的人员; 2. Oracle数据库设计、开发和备份等管理人员; 四、课程内容: 第一讲:Oracle体系结构 第二讲:Oracle实例中内存结构 第三讲:Oracle实例中后台进程管理 第四...
Oracle用户、权限、角色管理
oracle 用户、权限和角色管理,oracle 人员必看。
oraclePPT 用户管理,角色权限管理。教学的帮手,很详细啊。
ORACLE用户管理 ORACLE权限管理 ORACLE角色管理 用户的资源控制/管理
Oracle 权限设置 一、权限分类: 系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。 实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。 二、系统权限管理: 1、...
OracleMembershipProvider asp.net角色管理的oracle版本
oracle数据库中的角色管理.pdforacle数据库中的角色管理.pdforacle数据库中的角色管理.pdforacle数据库中的角色管理.pdforacle数据库中的角色管理.pdf
从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员),有两个内容你必须去弄清楚。第一个内容是如何成为一个Oracle Applications DBA(Oracle应用程序...
1、 安装Oracle9.0.2 (1) 创建数据库: 操作方法:根据提示安装,一般的步骤点击下一步即可,在创建数据库时输入数据库名称,例如dbhouse; (2) 创建用户: 操作方法:安装结束后进入OEM,数据用户名system,使用...
第4部分:数据库的安全,介绍建立安全策略、管理用户和资源、管理用户的权限和角色、审计数据库的使用。第5部分:数据库资源管理,讲述数据库资源管理器的使用。第6部分:分布式数据库的管理,重点介绍分布式...
熟悉Oracle中权限分类和设置,理解系统提供用户的角色和权限5.熟练使用建立用户、角色,为用户授权、授予角色的命令 【实验内容】1.创建一个TESTUSER用户,密码为test,默认表空间为users表空间2.创建用户后为其授予...
技术分享:Oracle用户角色及权限管理
Oracle数据库中的角色管理.pdf
Oracle 数据库管理与应用 Oracle数据安全性可分为2类...SYS:具有dba角色的管理帐户,sys方案中的任何表和视图不能由任何其他数据库管理员操作 SYSTEM /manager:执行管理任务 SYSMAN:企业管理器执行数据库管理的帐户
ORACLE数据库和数据库的物理结构,就如同人的身体结构一样,展现了一个人的外部特征,ORACLE实例如同人的神经...第十四章 管理角色 第十五章 管理权限 第十六章 审计 第十七章 ORACLE NET 体系架构 第十八章 共享服务器