是否有某种可以完成以下操作的预建表格(我已经使用过dba_tab_privs,但它是有限的,不能满足我的所有需求),如果没有人对下面的回答有疑问?
列出分配了特定角色的所有用户?
列出授予用户的所有角色?
列出授予用户的所有特权?
列出某个角色赋予SELECT访问权限的表?
列出用户可以从中选择的所有表列出所有可以在特定表上进行SELECT的用户(通过授予相关角色或通过直接授予(即,可以在joe上进行授予选择))?该查询的结果还应显示用户通过哪个角色拥有此访问权限,或者它是否是直接授予的权限。
#1 楼
列出已分配了特定角色的所有用户-- Change 'DBA' to the required role
select * from dba_role_privs where granted_role = 'DBA'
列出分配给用户的所有角色
-- Change 'PHIL@ to the required user
select * from dba_role_privs where grantee = 'PHIL';
列出授予用户的所有特权
select
lpad(' ', 2*level) || granted_role "User, his roles and privileges"
from
(
/* THE USERS */
select
null grantee,
username granted_role
from
dba_users
where
username like upper('%&enter_username%')
/* THE ROLES TO ROLES RELATIONS */
union
select
grantee,
granted_role
from
dba_role_privs
/* THE ROLES TO PRIVILEGE RELATIONS */
union
select
grantee,
privilege
from
dba_sys_privs
)
start with grantee is null
connect by grantee = prior granted_role;
注意:摘自http://www.adp-gmbh.ch/ora/misc/recursively_list_privilege.html
列出某个角色赋予SELECT访问权限的表?
-- Change 'DBA' to the required role.
select * from role_tab_privs where role='DBA' and privilege = 'SELECT';
列出用户可以从中选择的所有表?
--Change 'PHIL' to the required user
select * from dba_tab_privs where GRANTEE ='PHIL' and privilege = 'SELECT';
列出可以在特定表上进行SELECT的所有用户(通过授予相关角色或通过直接授予(即,可以选择joe进行授予))?该查询的结果还应显示用户通过哪个角色具有此访问权限,或者它是否是直接授予的权限。
-- Change 'TABLENAME' below
select Grantee,'Granted Through Role' as Grant_Type, role, table_name
from role_tab_privs rtp, dba_role_privs drp
where rtp.role = drp.granted_role
and table_name = 'TABLENAME'
union
select Grantee,'Direct Grant' as Grant_type, null as role, table_name
from dba_tab_privs
where table_name = 'TABLENAME' ;
#2 楼
有很多方法可以使用所需的信息:数据字典视图
oracle中存在。
您可以查询视图并检索详细信息:
例如:
从DBA_COL_PRIVS中选择*;从
从ALL_COL_PRIVS中选择*;
从USER_COL_PRIVS中选择*;
这告诉您:
DBA视图描述了数据库中所有列对象的授予。 ALL视图
描述当前用户或
PUBLIC是对象所有者,授予者或被授予者的所有列对象授予。 USER视图描述了
列对象授予,当前用户是该对象的对象所有者,授予者或授予者。
有关更多信息,请查看
/>
希望有帮助。
评论
这似乎没有回答问题:DBA如何找出特定的任意用户可以访问的内容?
–万事通
2014年6月11日下午16:26
评论
这是一个好的开始,但是#3不包含对象特权,#5不包括由于角色而可用的SELECT特权,而#6则缺失。
–雷·里菲尔(Leigh Riffel)
2012年3月13日15:17
运算,需要一些CONNECT BY .. PRIOR for#6
–Philᵀᴹ
2012年3月13日15:54
您对#5的答案是否包括用户可以通过分配的角色选择的表?
– dgf
2012年3月15日上午10:06
如果用户从被授予其他角色的角色中获得特权,这是否可行?
– jpmc26
17年8月9日在20:34