前段时间接手了个小开发工作,自己jsp技术太烂,太耗时间了。以至于都没空写oracle日志了,也没keep studying on my oracle
到年底了,学校放寒假了,最近几个出差的哥们也不用出差了,因此晚上大家可以聚到一起happy了,所以也没有时间学习oracle,有时候即使学习了也没空写成日志。
今天周末,小年,出生以来的第一个没有在家过的小年,中午5个人去百年肥羊把上次吃饭赠送的代金券给花费了,还倒贴进去100多(这种营销方式真不错,招揽回头客)。下午叫上同学B一起整到晚上9点,太累了,说要歇歇了,一块出去吃了饭,他们回去睡觉了,我也有空来写点东西。。。
言归正传,vpd技术即虚拟专用数据库(应该是virtual private database),通过它可以对指定的用户隐藏你不想让他看到的数据。类似于,在别人访问这个表的时候,你自动在后面追加上你隐含添加的条件。比如,select * from test用户请求的这个sql直接透明转换成select * from test where id=?这种形式然后把结果返还给用户。这种方式可以不用修改应用程序,安全,也便于整体管理。有基于行和基于列两种类型的vpd,基于行一般用在“只允许用户看到属于自己的数据,其他用户的数据不可见”;基于列的一般用在“隐藏某项敏感的数据(比如密码、工资等)”。
昨天对这两种方法进行了测试使用,确实很好使,很简单。详细步骤如下:
1、创建一个策略函数,传入的参数有两个,第一个是schema_name,第二个是object_name,返回值就是需要在sql语句中隐含添加的那个条件。
2、创建添加策略dbms_rls.add_policy
SQL> desc dbms_rls.add_policy
Parameter Type Mode Default?
--------------------- -------------- ---- --------
OBJECT_SCHEMA VARCHAR2 IN Y
OBJECT_NAME VARCHAR2 IN
POLICY_NAME VARCHAR2 IN
FUNCTION_SCHEMA VARCHAR2 IN Y
POLICY_FUNCTION VARCHAR2 IN
STATEMENT_TYPES VARCHAR2 IN Y
UPDATE_CHECK BOOLEAN IN Y
ENABLE BOOLEAN IN Y
STATIC_POLICY BOOLEAN IN Y
POLICY_TYPE BINARY_INTEGER IN Y
LONG_PREDICATE BOOLEAN IN Y
SEC_RELEVANT_COLS VARCHAR2 IN Y
SEC_RELEVANT_COLS_OPT BINARY_INTEGER IN Y
------------------------------------------
-- object_schema - schema owning the table/view, current user if NULL
-- object_name - name of table or view
-- policy_name - name of policy to be added
-- function_schema - schema of the policy function, current user if NULL
-- policy_function - function to generate predicates for this policy
-- statement_types - statement type that the policy apply, default is any
-- update_check - policy checked against updated or inserted value?
-- enable - policy is enabled?
-- static_policy - policy is static (predicate is always the same)?
-- policy_type - policy type - overwrite static_policy if non-null
-- long_predicate - max predicate length 4000 bytes (default) or 32K
-- sec_relevant_cols - list of security relevant columns
-- sec_relevant_cols_opt - security relevant column option
3、添加过策略之后,符合策略中条件的session在访问指定表的时候将按照策略函数返回的条件隐含添加到sql语句中,达到隐藏数据的目的。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13890753/viewspace-541367/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13890753/viewspace-541367/