与角色权限相关的视图

与角色相关的视图包括 ROLE_ROLE_PRIVS, ROLE_SYS_PRIVS, ROLE_TAB_PRIVS, DBA_ROLES, DBA_ROLE_PRIVS,SESSION_ROLES这六个视图。

1.ROLE_ROLE_PRIVS:表示角色授予其他角色,主要提供来自role的role的权限信息

SQL> create role superxxx;

角色已创建。
SQL> grant dba to superxxx;

授权成功。

SQL> select * from role_role_privs where granted_role='DBA';

ROLE                           GRANTED_ROLE                   ADM
------------------------------ ------------------------------ ---
SUPERXXX                       DBA                            NO

在这里可以查看到SUPERXXX被授予了DBA角色。在DBA_ROLE_PRIVS视图中也可以查到这条信息

SQL> select * from dba_role_privs where GRANTEE='SUPERXXX';

GRANTEE                        GRANTED_ROLE                   ADM DEF
------------------------------ ------------------------------ --- ---
SUPERXXX                       DBA                            NO  YES


SQL> desc dba_role_privs;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- -------------
 GRANTEE                                            VARCHAR2(30)
 GRANTED_ROLE                              NOT NULL VARCHAR2(30)
 ADMIN_OPTION                                       VARCHAR2(3)
 DEFAULT_ROLE                                       VARCHAR2(3)

SQL> desc role_role_privs;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- -------------
 ROLE                                      NOT NULL VARCHAR2(30)
 GRANTED_ROLE                              NOT NULL VARCHAR2(30)
 ADMIN_OPTION                                       VARCHAR2(3)

grantee可能是用户名或角色,而role只是角色名,所以dba_role_privs包含了role_role_privs的信息

select role,granted_role,admin_option from role_role_privs
intersect
select grantee,granted_role,admin_option from dba_role_privs;

和select * from role_role_privs;执行所产生的记录是一样的。

再进一步,执行set autotrace traceonly explain,查询role_role_privs,会发现有SYS."X$KZDOS"这张表(Represent an os role as defined by the operating system

2.ROLE_SYS_PRIVS:描述了角色的系统权限,它可以查看某个角色所包含的系统权限

SQL> select * from role_sys_privs where role='SUPERXXX';

ROLE                           PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
SUPERXXX                       UNLIMITED TABLESPACE                     NO

3.ROLE_TAB_PRIVS:描述了角色的对象权限,可以查看某个表、视图等

SQL> conn xxx/owen@orcl
已连接。

SQL> select count(*) from scott.emp;
select count(*) from scott.emp
                           *
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> conn system/owen@orcl
已连接。
SQL> grant select on scott.emp to superxxx;

授权成功。
SQL> CONN XXX/owen@orcl
已连接。


SQL> select count(*) from scott.emp;

  COUNT(*)
----------
        14
SQL> select * from role_tab_privs where role='SUPERXXX';

ROLE                           OWNER      TABLE_NAME      COLUMN_NAME                    PRIVILEGE                        GRA
------------------------------ ---------- --------------- ------------------------------ ---------------------------------------- -
SUPERXXX                       SCOTT      EMP                                            SELECT                           NO

已选择 1 行。

4.DBA_ROLES:显示在数据库里所有的角色

SQL> desc dba_roles;
 名称                          是否为空? 类型
 ----------------------------- -------- ---------------
 ROLE                          NOT NULL VARCHAR2(30)
 PASSWORD_REQUIRED                      VARCHAR2(8)
 AUTHENTICATION_TYPE                    VARCHAR2(11)

PASSWORD表示创建角色时是否有密码,当使用了以下AUTHENTICATION_TYPE模式时,该列被废弃。AUTHENTICATION_TYPE指示身份的验证机制,分为

  • NONE - CREATE ROLE role1;

  • EXTERNAL - CREATE ROLE role2 IDENTIFIED EXTERNALLY;

  • GLOBAL - CREATE ROLE role3 IDENTIFIED GLOBALLY;

  • APPLICATION - CREATE ROLE role4 IDENTIFIED USINGschema.package;

  • PASSWORD - CREATE ROLE role5 IDENTIFIED BY role5;

SQL> select * from dba_roles where role='SUPERXXX';

ROLE                           PASSWORD AUTHENTICAT
------------------------------ -------- -----------
SUPERXXX                       YES      PASSWORD

已选择 1 行。

5.DBA_ROLE_PRIVS:描述了角色与被授予角色和用户之间的关系

6.SESSION_ROLES:显示当前会话中用户所拥有的角色

SQL> conn xxx/owen@orcl
已连接。
SQL> select * from session_roles;

ROLE
------------------------------
CONNECT
RESOURCE

已选择2行。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值