码迷,mamicode.com
首页 > 数据库 > 详细

oracle数据库权限之一——概念

时间:2016-07-05 12:31:34      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:oracle 权限

Oracle系统权限和角色权限都对用户的权限作了相应的限制,这也在一定程度上保护了数据库的访问安全。下面就让我们来一起了解一下。

Oracle系统权限

Oracle系统权限需要授予者有进行系统级活动的能力,如连接数据库,更改用户会话、建立表或建立用户等等。你可以在数据字典视图SYSTEM_PRIVILEGE_MAP上获得完整的系统权限。

对象权限

某一个用户可对其中的对象,直接授权给其它用户。

需注意的是,当某一个用户userA拥有查询其它用户userB下某个表tableA的视图viewA时,如userA用户需将viewA的查询权限授予userC,则必须同时将userB用户下tableA表的查询权限授予userC用户才可以。

对象权限和Oracle系统权限都通过GRANT语句授予用户或角色。需要注意的是在授予对象权限时语句应该是WITH GRANT OPTION子句,但在授予系统权象时语句是WITH ADMIN OPTION,所以在你试图授予系统权限时,使用语句WITH GRANT OPTION系统会报告一个错误:ONLY ADMIN OPTION can be specified。要特别注意这个语法和错误信息。

角色和角色权限

角色权限就是将属于用户的权限授予一个角色。任何权限都可以授予给一个角色。同时,一个角色可以授予另一个角色,但不能授予自己,也不能循环授权。

在会话期间通过SET ROLE语句授予或撤销角色权限。

在PL/SQL块中使用角色时,需要视其是否为匿名块、定义者权限还是调用者权限来决定。

1)在命名PL/SQL块(存储过程、函数、触发器)按照定义者权限进行执行时,所有角色都会失效。执行过程中查询SESSION_ROLES视图不会返回结果。

2)在命名PL/SQL块(存储过程、函数、触发器)按照调用者权限进行执行时,以及执行匿名PL/SQL块时,可以使用角色进行权限检查,也可以在块中使用动态SQL设置相应的角色(SET ROLE语句)。

授予和撤销权限

给用户或者角色授予权限使用GRANT 语句,GRANT语句的语法如下:

GRANT ROLE(或system privilege) TO user(role,Public) WITH ADMIN OPTION(可选)

对象权限被授予 WITH GRANT OPTION

涉及到权限的数据字典表主要有:

1、SYSTEM_PRIVILEGE_MAP

系统中所有的系统权限列表。

2、DBA_ROLES

系统中所有的角色列表。

3、数据库级权限列表

DBA_SYS_PRIVS

哪些用户或角色拥有哪些系统权限。

DBA_ROLE_PRIVS

哪些用户或角色拥有哪些角色。

DBA_TAB_PRIVS

哪些用户或角色拥有哪些对象的什么具体权限,对象包括表、视图、过程、函数、包、类型等。

DBA_COL_PRIVS

哪些用户或角色拥有哪些表的哪些列的什么权限,这些权限主要包括UPDATE、REFERENCES。

4、用户级权限列表

USER_SYS_PRIVS

当前用户拥有的系统权限。

USER_ROLE_PRIVS

当前用户拥有的角色权限。

USER_TAB_PRIVS

作为对象的拥有者、对象权限的授予者、对象权限的被授予者,当前用户涉及到的相关对象权限。

USER_TAB_PRIVS_MADE

作为对象的拥有者,当前用户涉及到的相关对象权限。

USER_TAB_PRIVS_RECD

作为对象权限的被授予者,当前用户涉及到的相关对象权限。

USER_COL_PRIVS

作为列对象的拥有者、列对象权限的授予者、列对象权限的被授予者,当前用户涉及到的相关列对象权限。

USER_COL_PRIVS_MADE

作为列对象的拥有者,当前用户涉及到的相关列对象权限。

USER_COL_PRIVS_RECD

作为列对象权限的被授予者,当前用户涉及到的相关列对象权限。

5、ALL级权限列表

ALL_TAB_PRIVS

1)作为对象的拥有者、对象权限的授予者、对象权限的被授予者,当前用户涉及到的相关对象权限。

2)当前用户的所属角色(包括PUBLIC角色)所拥有的对象权限。

ALL_TAB_PRIVS_MADE

作为对象的拥有者、对象权限的授予者,当前用户涉及到的相关对象权限。

ALL_TAB_PRIVS_RECD

1)作为对象权限的被授予者,当前用户涉及到的相关对象权限。

2)当前用户的所属角色(包括PUBLIC角色)所拥有的对象权限。

ALL_COL_PRIVS

1)作为列对象的拥有者、列对象权限的授予者、列对象权限的被授予者,当前用户涉及到的相关列对象权限。

2)当前用户的所属角色(包括PUBLIC角色)所拥有的列对象权限。

ALL_COL_PRIVS_MADE

作为列对象的拥有者、列对象权限的授予者,当前用户涉及到的相关列对象权限。

ALL_COL_PRIVS_RECD

1)作为列对象权限的被授予者,当前用户涉及到的相关列对象权限。

2)当前用户的所属角色(包括PUBLIC角色)所拥有的列对象权限。

6、角色级权限列表

ROLE_ROLE_PRIVS

当前用户下,哪些角色被授予了哪些角色。

ROLE_SYS_PRIVS

当前用户下,哪些角色被授予了哪些系统权限。

ROLE_TAB_PRIVS

当前用户下,哪些角色被授予了哪些对象权限。

7、会话级权限列表

SESSION_PRIVS

当前用户所拥有的系统权限。

SESSION_ROLES

当前用户所拥有的角色。

oracle数据库权限之一——概念

标签:oracle 权限

原文地址:http://laoxue.blog.51cto.com/2179224/1795842

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!