`
mikixiyou
  • 浏览: 1087423 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:349741
社区版块
存档分类
最新评论

如何实现Oracle中用户B只能访问用户A的视图

阅读更多

我们有这样一个需求:在数据库中建立两个用户,用户 A 用于创建一些视图,直接访问自己数据库中一个模式下的表,以及通过数据库链路访问其他数据库中的表;另一个用户 B 能访问到这个用户 A 中的视图,并且只能访问视图,且访问连接数有限制。

 

miki 西游的文档,原文链接 http://mikixiyou.iteye.com/blog/1543530

 

这个用户 B 是用来给其他系统访问的,因此对权限和资源使用都需要有限制条件。

这种需求在很多行业的应用中都很常见。假如这是一道面试题,您该如何去回答呢?

我采用下面的方法来回答这个问题。

 

第一步,创建新用户 A B

这里用户名称分别为 ryd_interface_src  ryd_interface ,对这两个用户都授予非常有限的权限。

drop user ryd_interface_src cascade;

create user ryd_interface_src identified by ryd_interface_src;

grant connect,create view to ryd_interface_src;

 

drop user ryd_interface cascade;

create user ryd_interface identified by ryd_interface;

grant connect,create synonym to ryd_interface;

 

第二步,登录数据库一个模式中,授权给用户 A ,使得用户 A 能创建视图

conn xxyyclient/xxyyclient

grant select on INVEST_CLOCK  to ryd_interface_src with grant option;

grant select on INVEST_LOG   to ryd_interface_src with grant option;

这里授权方法加了一个 with grant option ,请注意。

 

第三步,登录数据库用户 A 中,创建视图

conn ryd_interface_src/ryd_interface_src

create or replace view run_views as

select id as doc_id, title,fbsj as upload_date,'' as branch_code from xxyy.runs_lantern@CLIENT_XXYYWEB

where EXT1='1' and sysdate >  START_TIME

and sysdate < SOLID_TIME

union

select a.doc_id,a.title,a.upload_date,a.branch_code  from xxyy.cms_doc_single_attr@CLIENT_XXYYWEB a

left   join xxyy.cms_doc_category_map@CLIENT_XXYYWEB b on a.doc_id=b.doc_id

where

a.state =1 and a.is_delete =0

and  a.upload_date> sysdate-90

and  b.cat_id=4;

 

create or replace view INVEST_CLOCK_VIEWS as

select  *  from  xxyyclient.INVEST_CLOCK;

 

create or replace view INVEST_LOG_VIEWS as

select  *  from  xxyyclient.INVEST_LOG;

 

第四步,在数据库用户 A 中,将视图查询权限授予给用户 B

因为在步骤二中,加了 with grant option ,所以这里视图查询权限可以成功授予。

grant select on INVEST_CLOCK_views to ryd_interface;

grant select on INVEST_LOG_views to ryd_interface;

grant select on run_views to ryd_interface;

 

第五步,在数据库用户 B 中,检查视图能否查询得到,再创建同义词。

conn ryd_interface/ryd_interface

select count(*) from ryd_interface_src.run_views;

select count(*) from ryd_interface_src.INVEST_CLOCK_views;

select count(*) from ryd_interface_src.INVEST_LOG_views;

 

create synonym  run_views for  ryd_interface_src.run_views;

create synonym  INVEST_CLOCK_views for  ryd_interface_src.INVEST_CLOCK_views;

create synonym  INVEST_log_views for  ryd_interface_src.INVEST_log_views;

第三方的系统直接通过这个同义词就可以访问到用户 A 中的视图。这也是对系统安全的一种保护措施。第三方系统登录后,只能看到其同义词,其他的都不会访问得到。

 

第六步,限制资源使用

因为用户 B 是给第三方系统使用,我们无法控制第三方应用的质量,为了防止在应用出现异常连接时数据库会话数暴涨导致数据库整体服务出现故障,所以我们对该用户的数据库会

话数做一个限制。

这里采用 profile sessions_per_user 功能,实现单个用户会话数的限制。

conn / as sysdba

alter system set resource_limite=true scope=both sid='*';

新建 profile, 初始限制为 1 ,用于测试。

create profile third_user limit SESSIONS_PER_USER 1 FAILED_LOGIN_ATTEMPTS unlimited;

alter user ryd_interface profile third_user;

将会话数调整到 30

alter profile third_user limit SESSIONS_PER_USER 30;

 

通过以上操作,我们就可以实现这个需求了。

 

再想一下,这个实现方法真的完全满足要求了吗?

请见下文: Oracle用户访问权限与 PUBLIC角色的关系 http://mikixiyou.iteye.com/blog/1546581

 

本文链接 : http://mikixiyou.iteye.com/blog/1543530 欢迎转载,请注明出处和作者,谢谢合作。

 

5
4
分享到:
评论
6 楼 datawarehouse 2012-07-26  
不错,感谢分享。
5 楼 mikixiyou 2012-05-29  
bullet100 写道
这样的需求我也遇到过,不错!

呵呵,谢谢鼓励!
4 楼 bullet100 2012-05-29  
这样的需求我也遇到过,不错!
3 楼 mikixiyou 2012-05-29  
wukele 写道
不错。为什么需要同义词。b用户不是只能访问指定的视图了吗

让用户B访问时,不用输入用户A.视图名称。
等于将用户A隐藏起来,减少一些技术还不熟练的好奇者的窥视。
2 楼 mikixiyou 2012-05-29  
让用户B访问时,不用输入用户A.视图名称。
等于将用户A隐藏起来,减少一些技术还不熟练的好奇者的窥视。
1 楼 wukele 2012-05-29  
不错。为什么需要同义词。b用户不是只能访问指定的视图了吗

相关推荐

    Oracle创建视图(View)

    WITH READ ONLY :默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不...

    Oracle中的数据字典技术和动态性能视图

    b:数据字典视图只有在数据库opn的情况下才可以访问,而部分动态性能视图可以数据库非open状态下使用。 c:数据字典视图里看到的列信息一般都是大写,而动态性能视图里看到的一般都是小写。 d:数据字典视图里的信息...

    数据库系统管理与维护(Oracle)第三次作业.doc

    题目1、系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为 ( A)。 选择一项: a. 后台进程 b. 单进程 c. 用户进程 d. 例程 题目2、在创建用户的命令中,下列哪个关键字是限制用户可以使用...

    oracle数据库经典题目

    1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。 2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。 3.在需要滤除查询结果中重复的行时,必须...

    Oracle DBA workshop1 (中文版)

    访问Oracle Enterprise Manager 4-6 数据库主页4-7 使用SQL*Plus 和iSQL*Plus 访问数据库4-8 使用iSQL*Plus 4-9 为了以SYSDBA 和SYSOPER 身份进行访问而设置iSQL*Plus 4-10 使用SQL*Plus 4-12 从Shell 脚本调用SQL*...

    oracle10g课堂练习I(1)

    访问 Oracle Enterprise Manager 4-6 数据库主页 4-7 使用 SQL*Plus 和 iSQL*Plus 访问数据库 4-8 使用 iSQL*Plus 4-9 为了以 SYSDBA 和 SYSOPER 身份进行访问而设置 iSQL*Plus 4-10 使用 SQL*Plus 4-12 从 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    说明:用于连接到oracle数据库,也可实现用户的切换 用法:conn 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户连接时,必须带上sysdba或sysoper 例子: 3. 断开连接(disc) 说明:断开与当前数据库的连接 ...

    oracle动态性能表

     按照OracleDocument中的描述,v$sysstat存储自数据库实例运行那刻起就开始累计全实例(instance-wide)的资源使用情况。 类似于v$sesstat,该视图存储下列的统计信息: 1&gt;.事件发生次数的统计(如:user commits) 2&gt;...

    ORACLE9i_优化设计与系统调整

    第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...

    Oracle.11g.从入门到精通 (2/2)

    作 者:钱慎一,张素智 编 出 版 社:中国水利水电出版社 ISBN:9787508468303 出版时间:2009-09-01 版 次:1 页 数:468 装 帧:平装 开 本:16开 所属分类:图书 &gt; 计算机与...附录B 0facle 11g选件概述

    Oracle.11g.从入门到精通 (1/2)

    作 者:钱慎一,张素智 编 出 版 社:中国水利水电出版社 ISBN:9787508468303 出版时间:2009-09-01 版 次:1 页 数:468 装 帧:平装 开 本:16开 所属分类:图书 &gt; 计算机与...附录B 0facle 11g选件概述

    最全的oracle常用命令大全.txt

    要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle&gt;svrmgrl SVRMGR&gt;connect internal SVRMGR&gt;startup SVRMGR&gt;quit b、关闭ORACLE系统 oracle&gt;svrmgrl SVRMGR&gt;connect...

    ORACLE_优化设计与系统调整(doc)

    第21章 Oracle系统运行中的资源竞争 277 第22章 各种锁和完整性 292 第23章 调整回滚段竞争 310 第24章 调整共享服务器 316 第25章 操作系统与网络调整 323 第27章 数据库关闭/启动工作 335 第48章 调整实例恢复性能...

    数据库安全性设计.doc

    比如某公司有A、B两个部门,A部门只能访问本部门的在建、历史项目数据;其他项 目的数据对其是不可见的。可以为A项目建立"部门人力资源视图",从数据库"部门人力 资源信息表"查看A项目的人员情况。 2.4 使用存储...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

     Oracle 数据库中的SQL是当今市场上功能最强大的SQL实现之一,而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握SQL呢?Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习...

    Oracle索引(B*tree与Bitmap)的学习总结

    在Oracle中,索引基本分为以下几种:B*Tree索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引等,其中最常用的是B*Tree索引和Bitmap索引。(1)、与索引相关视图查询DBA_INDEXES视图可得到表中所有...

    Oracle事例

    select * from ( select rownum row_id,b.* from (select a.* from sys_oper a) b ) where row_id between 15 and 20 15、对公共授予访问权 grant select on 表名 to public; create public synonym 同义词名 ...

Global site tag (gtag.js) - Google Analytics