oracle database vault因子的使用
Database Vault 因子是可配置用于规则中的一种项目, 这些规则授权数据库帐户登录到数据库中或执行特定的数据库命令。因子也可以用于限制数据库表中数据的可见性和可管理性。
但是从oracle database vault的GUI界面,新学者很难懂得因子的作用以及怎样去配置正确的因子。
我将一步一步地带大家配置一个简单的因子,来展示因子有何作用。
首先新建一个新的测试用户:
create user test identified by test;
如果用dba权限建用户报权限不足的错,则是因为你装了database vault,默认是大幅度地降低dba的权限,解决办法参照我的另一篇随笔database vault的实验总结。
再用test用户连上: conn test/test
建一张测试表: create table test(name varchar2(20));
insert into test values('xuanyuanvista');
commit;
现在新建一个领域test_realm,将表test添加进领域,这样就受领域的保护了,再加两个被授权者,一个是test,选择owner所有者,另外一个是参与者,可以看新建一个用户test2,选择Participant参与者,将select on test.test权限赋给test2,这样test2用户也可以查看test表了。
但是现在我们为了安全起见,要限制test2用户只能在公司的电脑上查看,不能其他的机子上查看test表中的数据,怎么办?
这是就可以用Clinet_IP因子了,只要我们在规则集里限制只有ip为192.168.2.9(公司的某台电脑ip)才能看得到test表数据就行了。
点击因子链接进入因子选择界面,选中Clinet_IP因子,单击右下角编辑按钮,进入因子编辑页面,大多数的配置解释可以点右上角的帮助链接看帮助,一直到检索方法这边都可以采取默认设置,这里的检索方法是UPPER(SYS_CONTEXT('USERENV','IP_ADDRESS')),这个是返回因子的值,可以是自定义的函数,但是返回值必须是varchar2类型的,再看下面的验证方法,这个是什么呢?其实这个是验证因子的值是否能被看到,可以是自定义的函数,必须返回boolean类型,我自定了一个函数isvalidate,如果这个函数返回是true,则通过dvf.f$Client_IP函数可以得到客户端的IP,返回时false,则看不到Clinet_IP因子的值,即客户端的IP,所以我的isvalidate函数返回true。我们可以在test2用户下打:select dvf.f$Client_IP from dual;可以看到返回了Client_IP因子的值。
接下来分配规则集,我们新建一个叫test_rule_set的规则集,再把因子分配给他,我们回到test_rule_set规则集编辑页面,在要与规则集关联的规则下新建一个规则,在规则表达式里填上dvf.f$Client_IP = '192.168.2.9',确定,保存。这样一个因子就配好了,用test2用户在192.168.2.9的机子上查看test.test表能看到数据,但是从其他的机子上就看不到了,被隐藏了。
好了,一个简单的因子就配好了,大家可以研究下其他的因子!
但是从oracle database vault的GUI界面,新学者很难懂得因子的作用以及怎样去配置正确的因子。
我将一步一步地带大家配置一个简单的因子,来展示因子有何作用。
首先新建一个新的测试用户:
create user test identified by test;
如果用dba权限建用户报权限不足的错,则是因为你装了database vault,默认是大幅度地降低dba的权限,解决办法参照我的另一篇随笔database vault的实验总结。
再用test用户连上: conn test/test
建一张测试表: create table test(name varchar2(20));
insert into test values('xuanyuanvista');
commit;
现在新建一个领域test_realm,将表test添加进领域,这样就受领域的保护了,再加两个被授权者,一个是test,选择owner所有者,另外一个是参与者,可以看新建一个用户test2,选择Participant参与者,将select on test.test权限赋给test2,这样test2用户也可以查看test表了。
但是现在我们为了安全起见,要限制test2用户只能在公司的电脑上查看,不能其他的机子上查看test表中的数据,怎么办?
这是就可以用Clinet_IP因子了,只要我们在规则集里限制只有ip为192.168.2.9(公司的某台电脑ip)才能看得到test表数据就行了。
点击因子链接进入因子选择界面,选中Clinet_IP因子,单击右下角编辑按钮,进入因子编辑页面,大多数的配置解释可以点右上角的帮助链接看帮助,一直到检索方法这边都可以采取默认设置,这里的检索方法是UPPER(SYS_CONTEXT('USERENV','IP_ADDRESS')),这个是返回因子的值,可以是自定义的函数,但是返回值必须是varchar2类型的,再看下面的验证方法,这个是什么呢?其实这个是验证因子的值是否能被看到,可以是自定义的函数,必须返回boolean类型,我自定了一个函数isvalidate,如果这个函数返回是true,则通过dvf.f$Client_IP函数可以得到客户端的IP,返回时false,则看不到Clinet_IP因子的值,即客户端的IP,所以我的isvalidate函数返回true。我们可以在test2用户下打:select dvf.f$Client_IP from dual;可以看到返回了Client_IP因子的值。
接下来分配规则集,我们新建一个叫test_rule_set的规则集,再把因子分配给他,我们回到test_rule_set规则集编辑页面,在要与规则集关联的规则下新建一个规则,在规则表达式里填上dvf.f$Client_IP = '192.168.2.9',确定,保存。这样一个因子就配好了,用test2用户在192.168.2.9的机子上查看test.test表能看到数据,但是从其他的机子上就看不到了,被隐藏了。
好了,一个简单的因子就配好了,大家可以研究下其他的因子!
posted on 2009-08-25 11:46 xuanyuanvista 阅读(697) 评论(0) 编辑 收藏 举报