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 当前用户所拥有的角色。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |