欢迎您来到GIS动力

加入收藏 免费注册 用户登陆 帮助中心
首页 新闻动态 技术专栏 银杏树下 学习考研 软件下载 求职招聘 许愿瓶 节日祝福 用户中心 精彩推荐 资源搜索 地图
专栏导航: AO开发 | SO开发 | ArcGIS桌面 | 超图桌面 | 开发语言 | 数据库 | WebGIS | 银杏文学 | 研究生考题 | FreeMap FreeTalk
   您现在位于: 首页技术专栏数据库 → 正文
用Oracle 10g列值掩码技术隐藏敏感数据
08-01-22 00:00:00 作者: 出处:天极论坛整理

Oracle 的虚拟私有 数据库特性(也称作细颗粒度存取控制)对诸如 SELECT等数据管理语言 DML语句提供行级安全性检查。


   PL/SQL策略函数和某个数据表相关联,这个 函数可以检查当前用户的上下文背景并添加查询中 WHERE语句的条件(断言),一个用户或者应用可以这样来写:


SELECT * FROM employees;

 

 

  但是实际上 Oracle将会执行这样的语句:


SELECT * FROM employees
WHERE department_id = 60;

 

 

因此,只有在查寻范围之内的行(在 department数据表中的前 60行)才会被查询语句返回。利用 oracle 10g中的新选项可以让 Oracle返回所有行,而不仅仅是被授权的行。然而,未被授权行中包含的某些列(称为安全相关列)将显示 NULL来代替实际数据,而其它的列值将会正常显示。


要想使用列值掩码必须在虚拟私有 数据库策略中做两件事。


首先必须创建一个列级策略来设计某些列为安全相关列 .其次必须在查询中包含 ALL_ROWS选项以用来返回所有行。这两个参数的结合就可以实现列值掩码。


CREATE OR REPLACE
FUNCTION rls_dept
(obj_owner IN VARCHAR2, obj_name IN VARCHAR2)
RETURN VARCHAR2
AS
predicate
VARCHAR2 (200);
BEGIN
predicate := ''department_id = 60'';
RETURN (predicate);
END rls_dept;
/

 

 

列表 A


列表 A显示了一个称为 rls_dept的策略函数。它返回断言 “department_id= 60”,用来设定对于 EMPLOYEES表中 60行之内的 department字段。(实际上,这个 函数并不返回一个静态表,它可以确定当前用户是谁,并据此返回给该用户正确的部门值。)


BEGIN
DBMS_RLS.ADD_POLICY(object_schema=>''HR'',
object_name= > ''EMPLOYEES'',
policy_name=> ''restrict_dept_policy'',
function_schema=> ''HR'',
policy_function=> ''rls_dept'',
sec_relevant_cols=> ''salary,commission_pct'',
sec_relevant_cols_opt=> dbms_rls.ALL_ROWS);
END;
/

 

 


列表 B


列表 B显示了如何应用列表 A中的函数创建列值掩码。在 DBMS_RLS包中的过程 ADD_POLICY创建一个称为 restrict_dept_policy的新策略。参数 sec_relevant_cols表明字段 salary和 commission_pct是安全相关列。一个包含上述两个字段的查询将会应用到该策略 函数,

9 7 3 1 2 4 8 :

(本文已被浏览 次)
发布人:admin
推荐给好友:发送给好友
上篇新闻:
下篇新闻:
相关评论
发表我的评论
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  •   相关文章  
    Google Earth隐藏飞行模拟游戏
    卫星遥感数据在全球滑坡敏感性绘图中的应用

    关于我们友情链接 ┋ 与我在线 ┋ 管理 ┋ TOP
     
    网站当前版本:GisPower CMS V3.0
    『GIS 动力』- http://www.gispower.org/
    联系我们:webmaster#gispower.org
    Copyright (c) 2003-2007 GisPOwer.Org. All Rights Reserved.
     

                   滇ICP备05006901号