免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3234 | 回复: 4
打印 上一主题 下一主题

用户能否不拥有对表的读写权限,但可通过存储过程访问该表记录? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-15 12:13 |只看该作者 |倒序浏览
以前我用过SYBASE,SYBASE允许用户对表table_a无操作权限,而对存储过程proc_b有执行权限,存储过程proc_b可以完成对table_a的访问。这样数据安全性较好,限制别人不能轻易将整个表的记录都select出来。
不知ORACLE有没有同样的实现方法?我初学ORACLE,没有头绪,半天没有结果,怀疑在这一点上ORACLE和SYBASE不一样。哪位高手知道的,请赐教,不胜感激。

论坛徽章:
0
2 [报告]
发表于 2005-08-15 13:21 |只看该作者

用户能否不拥有对表的读写权限,但可通过存储过程访问该表记录?

举个例子:存储过程属于a用户,a用户对表table_a有select权限,因此存储过程可以访问table_a,而b用户只有execute a用户的procedure的权限,那么b用户就只可以通过存储过程访问table_a,而不能直接访问table_a,不知道这样是否能符合你的应用需求!

论坛徽章:
0
3 [报告]
发表于 2005-08-15 13:32 |只看该作者

用户能否不拥有对表的读写权限,但可通过存储过程访问该表记录?

用 authid 子句

CREATE OR REPLACE
PROCEDURE procedure_name
   AUTHID  CURRENT_USER

这样,就可以了。

http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96624/08_subs.htm#15243

论坛徽章:
0
4 [报告]
发表于 2005-08-15 17:55 |只看该作者

用户能否不拥有对表的读写权限,但可通过存储过程访问该表记录?

txfy,我的要求正是这样的。公司有个网页用ASP查询ORACLE数据库,因为ASP安全性差,脚本里用户名密码又写得一清二楚,如果有人获得网页脚本就能登录到ORACLE操作整个表的数据。所以我将其从SQL语句对表直接查询改为存储过程查询,并新建一个用户仅具有对该存储过程的执行权限,希望能将表对用户屏蔽。这样会安全一点,执行效率也会提高。

具体情况如下:
用户名:cal,管理员权限,原有表和存储过程都是以cal建立的,因此很不安全
表:table_a,table_b,table_c等等
新建存储过程proc,可以读取上述几张表,并返回结果集
新建用户名readonly,希望其可以执行proc,但不能对任何表进行SQL操作。
运行页面脚本:
CMD.ActiveConnection=conn1
CMD.CommandText="proc"
CMD.CommandType=4
CMD.Parameters.Append CMD.CreateParameter("v_table",200,1,20,tbname)
set rs1=CMD.Execute()
系统报错:[Oracle][ODBC][Ora]ORA-04043: 对象 proc 不存在

rollingpig,执行您给的这个语句是否意味着所有用户都可以将该存储过程视为自己的对象?我执行了这个命令,但运行页面的时候还是提示我对象不存在,如果用户名改成存储过程的属主就能正常运行了。我将页面脚本从CMD.CommandText="proc"改成CMD.CommandText="cal.proc",系统就提示cal对象不存在。

论坛徽章:
0
5 [报告]
发表于 2005-08-16 12:00 |只看该作者

用户能否不拥有对表的读写权限,但可通过存储过程访问该表记录?

我又执行了一下同义词:
create synonym readonly.proc for cal.proc
执行成功,在PLSQL下看起来好的,但ASP还是给出错误提示:
[Oracle][ODBC][Ora]ORA-24328: 非法的属性值

郁闷。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP