首页 > 数据库 > Oracle > 数据库安全之权限与角色
权限的种类:系统权限 和 对象权限
一、系统权限
所谓系统权限,就是oracle里已经写死的权限,这些权限,我们是不能自己去扩展的,比如select any table, create any table等。
1.1、系统权限种类
select count(*) from dba_sys_privs;
1.2、系统权限传递:
增加WITH ADMIN OPTION选项,则得到的权限可以传递。
grant XXX to XXX WITH ADMIN OPTION;
1.3、系统权限回收:系统权限只能由DBA用户回收,统权限收回的时候是不会级联收回的。
revoke XXX from XXX;
1.4、查看用户拥有的系统权限。
SQL> SELECT *
FROM DBA_SYS_PRIVS
WHERE GRANTEE = 'ETL'
UNION ALL
SELECT *
FROM DBA_SYS_PRIVS
WHERE GRANTEE IN
(SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'ETL');
二、对象权限
所谓对象权限,就是针对于特定的对象的权限,系统权限是限定了可以操作的功能,而object permission就更细化了,具体到了莫个对象你可以操作的功能的权限。
2.1、对象权限种类
select count(*) from dba_tab_privs;
2.1、对象权限传递:
增加with grant option选项,则得到的权限可以传递。
grant XXX to XXX with grant option;
2.2、对象权限回收:对象权限可以传递赋予,但是回收的时候是级联回收的。
revoke XXX from XXX;
2.4、查看用户拥有的对象权限。
SELECT *
FROM DBA_TAB_PRIVS
WHERE GRANTEE = 'P_INSERT_LOG'
UNION ALL
SELECT *
FROM DBA_TAB_PRIVS
WHERE GRANTEE IN
(SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'P_INSERT_LOG');
三、角色
所谓角色,就是一组权限的集合。
3.1、查看系统所有角色
SQL> select * from dba_roles;
3.2、 查看角色中包含的权限
SQL> select * from role_sys_privs where role in ('RESOURCE');
3.3、 创建角色并授权
SQL> create role andy_role;
Role created.
SQL> grant connect,resource to andy_role;
Grant succeeded.
3.4、 查看用户所拥有的角色。 (用被查询用户登录)
SQL> select * from USER_ROLE_PRIVS ;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31383567/viewspace-2132145/ ,如需转载,请注明出处,否则将追究法律责任。