在 Oracle 中有一个名为 role_tab_privs 的视图,其中详细说明了授予角色的表权限。它有这样的行(并非所有列都显示):
Table Role Privilege
table1 role1 SELECT
table1 role1 UPDATE
table2 role1 INSERT
我希望能够将其显示为矩阵,如下所示:
Role: role1
Table SELECT INSERT UPDATE DELETE ALTER EXECUTE
table1 YES YES YES NO NO NO
table2 YES NO NO NO NO NO
etc.
我不确定如何在 sql 中执行此操作。
更复杂的情况是角色授予可以是分层的,因此如果将 ROLE B 授予 ROLE A,则角色 B 具有 ROLE A 的所有权限。在上述报告的上下文中,要获得完整的列表,必须递归遍历角色层次结构。