随着社会的分工与合作越来越密切,同一台服务器里可能会运行几家公司不同的服务产品,
有时候服务之间需要互相提供数据,以实现经济上的双赢;当然各自的安全和独立性也需要保证。
如果这样的服务后台用的是ORACLE数据库,可以用加密存储过程,并授于其它用户执行的方法。
首先我们要为提供的数据写一个正确合乎逻辑的存储过程或函数test_proc,假设源代码是test.sql。
然后用wrap实用工具(默认的目录$ORACLE_HOME/bin)加密它:
使用wrap的语法是:
$wrap iname =
input_file
[oname=output_file]
↑
↑
加密前存储过程或函数
加密后存储过程或函数,默认的后缀为*.plb
举例:
$wrap iname=test.sql
会在当前目录产生test.plb加密的存储过程或函数
备注:
Windows和unix平台的下wrap生成*.plb加密文件可以通用,版本是向上兼容的。
最后编译这个加密后的test.plb
SQL @/tmp/test.plb
并赋于相关合作用户(another_user)执行的权限
SQL grant execute on test_proc to another_user;
其它的注意事项:
合作用户不能有过多的权限, 使他们不能查数据字典和其它用户下的表,密码要起得难一些。