注意,该例子实现的是最简单的访问控制,没有用上下文来进行控制,那么受控制的表格对于所有的用户都将适用,即是限制了所有的表数据访问。这是存在问题的。除非用户被明确授权 GRANT EXEMPT ACCESS POLICY TO LSL031的权限。
例如:test用户下创建策略函数和创建策略。
CREATE OR REPLACE FUNCTION f_limited_query_t (s_schema IN VARCHAR2,
s_object IN VARCHAR2)
RETURN VARCHAR2
AS
BEGIN
RETURN 'policyno in (select policyno from matest0423.gupolicymain where companycode=''0201001109'')';
END;
/
BEGIN
DBMS_RLS.add_policy (object_schema => 'MATEST0423',
object_name => 'GUPOLICYITEMMAIN',
policy_name => 'POLICY_LIMITED_QUERY_T',
function_schema => 'TEST',
policy_function => 'F_LIMITED_QUERY_T');
END;
/
当lsl031用户访问select * from matest0423.gupolicyitemmain表格数据时策略开始生效。
当执行GRANT EXEMPT ACCESS POLICY TO LSL031时,策略不起作用。
所以策略的授予应该分两类,已是通过上下文确定登陆用户的是否受策略所控,另外一种方式直接在表上加上策略,除非明确授予GRANT EXEMPT ACCESS POLICY ,否则是都受策略控制的。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/288166/viewspace-705232/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/288166/viewspace-705232/