在平时的运维工作中,与权限有关的视图会经常用到。为不同的用户分配相应的权限,既能提高工作效率又能保护数据库的安全性。下面我来总结下经常用的几个权限视图。
1.DBA_XXX_PRIVS
DBA_XXX_PRIVS包括所有的系统权限、角色和对象。可以使用sys用户来查询我们想要查询的目标。
DBA_SYS_PRIVS
DBA_SYS_PRIVS describes system privileges granted to users and roles.
该视图包括了赋予所有用户和角色的系统权限。
ADMIN_OPTION为YES表示被赋予权限的用户可以将该权限赋予其他用户;NO则表示不可以赋予其他用户,也就是不能够传递权限。
例如,SCOTT用户的系统权限。
常用的CONNECT角色拥有的系统权限。
DBA_ROLE_PRIVS
DBA_ROLE_PRIVS describes the roles granted to all users and roles in the database.
该视图包含了赋予所有用户和角色的角色。
例如,SCOTT用户拥有的角色。
DBA_TAB_PRIVS
DBA_TAB_PRIVS describes all object grants in the database.
包含了所有赋予的对象权限。
GRANTABLE和ADMIN_OPTION的作用一样,表示该用户可以将自己拥有的权限授权给别人。
以下就是对象权限的内容。
例如,赋予SCOTT用户的对象权限。
2. USER_XXX_PRIVS
USER_XXX_PRIVS包含当前用户的系统权限、对象权限和角色。以下用Oracle默认的普通用户举例子。
USER_SYS_PRIVS
USER_SYS_PRIVS describes system privileges granted to the current user.
该视图包含了当前用户被赋予的系统权限。
USER_ROLE_PRIVS
USER_ROLE_PRIVS describes the roles granted to the current user.
包含了当前用户被赋予的角色。
USER_TAB_PRIVS
USER_TAB_PRIVS describes the object grants for which the current user is the object owner, grantor, or grantee. Its columns are the same as those in DBA_TAB_PRIVS.
包含了用户被赋予的对象权限。
3.ROLE_XXX_PRIVS
ROLE_XXX_PRIVS包含角色用有的系统权限、对象权限和角色。
ROLE_SYS_PRIVS
ROLE_SYS_PRIVS describes system privileges granted to roles. Information is provided only about roles to which the user has access.
包含了角色拥有的系统权限。
例如,角色CONNECT就拥有CREATE SESSION的系统权限。
ROLE_ROLE_PRIVS
ROLE_ROLE_PRIVS describes the roles granted to other roles. Information is provided only about roles to which the user has access.
包含了角色被赋予的角色。
例如,角色DBA被赋予的有哪些角色。
ROLE_TAB_PRIVS
ROLE_TAB_PRIVS describes table privileges granted to roles. Information is provided only about roles to which the user has access.
包含了角色被赋予的对象权限。
例如,角色ORDADMIN被赋予的对象权限。
4.总结
以DBA开头的视图包含了数据库内所有的系统权限、对象权限和角色。在登陆sys用户后,可以查看。如果想要查看某个用户或某个角色,那么需要GRANTEE条件。
以USER开头的视图包含了当前用户的系统权限、对象权限和角色。
以ROLE开头的视图包含了该角色拥有的系统权限、对象权限和角色。