ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Toad下只查看table metadata却无法query data的权限

Toad下只查看table metadata却无法query data的权限

原创 Linux操作系统 作者:myownstars 时间:2013-05-23 02:11:16 0 删除 编辑
原帖
http://www.itpub.net/forum.php?mod=viewthread&tid=1791441&page=1#pid21431049

客户提了一个要求,具体如下:
创建用户A ,使用toad连接数据库,A可以查看用户B下表信息(表结构),却不能查询其数据;

刚开始执行grant select on B.tab to A,用户验证时说A登录可以查询B表的metadata(Toad),
但同时能查询B表数据(应该禁掉此功能) 

用户给出一个样例,该数据库下已有一个用户C,C便满足其要求,C权限如下
select PRIVILEGE from dba_sys_privs where GRANTEE='C'
PRIVILEGE
----------------------------------------
CREATE OPERATOR
CREATE DATABASE LINK
UNLIMITED TABLESPACE
CREATE INDEXTYPE
CREATE TRIGGER
CREATE SESSION
CREATE TABLE
CREATE TYPE
CREATE PROCEDURE
CREATE SEQUENCE
CREATE VIEW
ALTER SESSION
CREATE SYNONYM
CREATE MATERIALIZED VIEW
14 rows selected.
select GRANTED_ROLE from dba_role_privs where grantee='C'
GRANTED_ROLE
------------------------------
SELECT_CATALOG_ROLE
EXECUTE_CATALOG_ROLE
select PRIVILEGE,TABLE_NAME from dba_tab_privs where GRANTEE='C';
PRIVILEGE                                TABLE_NAME
---------------------------------------- ------------------------------
EXECUTE                                  DBMS_DEBUG
EXECUTE                                  FLUSH_BUFFER_CACHE

解决办法:
用户C登录数据库(sqlplus),执行desc B.tab,报ora-00942错误;
用户C登录数据库(Toad),同时10046跟踪,点击查看B.tab,可成功显示tab各种metadata且同时不能查看tab存储的数据(ora-00942);

其跟踪文件sql大致如下
Select a1.constraint_name,   c1.column_name, c1.position  from  sys.DBA_CONS_COL
UMNS C1, sys.DBA_CONSTRAINTS A1  where A1.table_name = C1.Table_name  And  A1.co
nstraint_name = C1.Constraint_Name  and A1.constraint_type = 'P'  and A1.table_n
ame =:TabName  and C1.owner = A1.Owner  and A1.owner =:Owner  ORDER BY 3

由此可见,Toad工具依靠查询数据字典完成metadata显示,则只需select_catalog_role即可

grant select_catalog_role to A
使用A登录数据库(Toad),果然查询成功

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15480802/viewspace-761798/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: OGG与supplemental log
请登录后发表评论 登录
全部评论

注册时间:2010-03-18

  • 博文量
    375
  • 访问量
    3320723