首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux数据库>其他>正文

Oracle中虚拟专用数据控制方法研究

http://www.oklinux.cn  2008-12-23  IT专家网    会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

  随着数据库技术的应用越来越广泛,使用数据库的用户数量的增多以及数据内容的敏感程度的加强,数据库的安全也变得更加重要。为了保证数据库中的数据不受到非授权的查看和修改,必须控制用户对数据的访问。细粒度访问控制也就是虚拟专用数据库,它提供强大的行级安全功能。

  细粒度访问控制的工作方法是,通过透明地更改对数据的请求,基于一系列定义的标准向用户提供表的局部视图。在运行时,所有查询都附加了谓词,以便筛选出准许用户看到的行。例如,如果只允许用户查看帐户管理员 admin 的帐户,则细粒度访问控制设置自动地将查询:

select * from accounts;
  where am_name = 'admin';

  DBA 在表 ACCOUNTS 上设置了一项安全策略。该策略具有一个相关函数,称为policy function,它返回一个用作谓词的字符串 where am_name = 'admin'。

  生成谓词所需的重复分析是一种在某些情况下可以进行修整的开销。例如,在大部分实际情况中,谓词并不象 am_name = 'SCOTT' 那样是静态的;它基于用户的身份、用户的权限级别、用户向哪个帐户管理员进行报告等情况,可能更具有动态性。由策略函数创建并返回的字符串可能会具有很强的动态性,而为了保证其结果,Oracle 必须每次重新执行策略函数,既浪费资源又降低性能。在这种类型的策略中,谓词每次执行时可能会有很大的差别,该策略称为“动态”策略,在 Oracle9i 数据库以及以前的版本中已经提供了这种策略。

  除了保留动态策略之外,Oracle 数据库 10g 还基于谓词的构造推出了几种新类型的策略,为提高性能提供了更好的控制:context_sensitive、shared_context_sensitive、shared_static 和 static。现在,让我们来了解每种策略类型的意义以及如何在适当的场合中使用它们。
  为保持向后兼容性,10g 中的默认策略类型为“dynamic” — 正如 Oracle9i 中一样。在这种情况下,对于每行以及每位用户,在每次访问表时都对策略函数进行重新求值。让我们来详细分析策略谓词:
where am_name = 'admin'

  忽略掉 where 子句,谓词就具有两个不同的部分:在等式操作符之前的部分 (am_name) 和等式操作符之后的部分 ('SCOTT')。在大多数情况下,后面的部分更象是变量,因为它是由用户的数据提供的(如果用户是 SCOTT,则其值为 'SCOTT')。在等号前面的部分是静态的。因此,即使函数不必为生成适当的谓词而对每行求出策略函数的值,由于了解前面部分的静态性以及后面部分的动态性,也可以提高性能。在 10g 中,可以在 dbms_rls.add_policy 调用中使用 "context_sensitive" 类型的策略作为参数来实现这种方法:

policy_type => dbms_rls.context_sensitive

  在另一个示例中,我们有一个称为 ACCOUNTS 的表,它拥有几列,其中一列是 BALANCE,表示帐户余额。假设允许某个用户查看低于某特定余额的帐户,而该余额由应用程序上下文所决定。我们并不在策略函数中将此余额值固定,而是3是根据应用程序上下文确定,如:
create or replace vpd_pol_func
  (
  p_schema in varchar2,
  p_table in varchar2
  )
  return varchar2
  is
  begin
  return 'balance < sys_context(''vpdctx'', ''maxbal'')';
  end;

共3页: 上一页 1 [2] [3] 下一页

上一篇:Google Android开发新功能代号“Cupcake”   下一篇:Linux系统工程师 北京金山软件有限公司

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux下MySQL-5.1.30编译安装
·关于Oracle与Linux及虚拟化战略
·关于Oracle数据库管理员认证方法简述
·关于Oracle 10g scott用户解锁的方法两则
·Oracle中模拟及修复数据块损坏
·手工配置Oracle 10G Enterprise Manager过程
·Ubuntu 8.04手工启动和停止oracle10g xe命令
·Oracle 共享服务器(Shared Server/MTS)的配置简析
·Linux下Oracle sqlplus中文显示乱码的问题的解决
·Linux下MySQL的一些基本使用方法
·如何保护好Oracle服务器上的监听器
·MySQL使用有感小记
·Ubuntu下进行基于MySQL的JDBC的开发
·怎样修护MySQL数据表
·Linux下的主要数据库简介
·Linux系统下启动MySQL的命令及相关知识
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux下MySQL-5.1.30编译安装
·关于Oracle与Linux及虚拟化战略
·关于Oracle数据库管理员认证方法简述
·关于Oracle 10g scott用户解锁的方法两
·Oracle中模拟及修复数据块损坏
·手工配置Oracle 10G Enterprise Manage
·Ubuntu 8.04手工启动和停止oracle10g x
·Oracle 共享服务器(Shared Server/MTS)
·Linux下Oracle sqlplus中文显示乱码的
·Linux下MySQL的一些基本使用方法
·如何保护好Oracle服务器上的监听器
·MySQL使用有感小记
  阅读排行
·Oracle建表过程初学
·RHEL5.1 下安装Oracle 10.2.0.1及常见
·Linux平台下启动oracle 11g EM控制台
·Linux操作系统下MySQL的卸载、安装全过
·Mysql JDBC驱动版本与Mysql版本的对应
·Linux平台下配置MySQL主从复制
·Linux系统中Oracle数据库的用户权限
·Oracle 建立临时表语法及使用技巧
·关于MySQL事务处理学习
·Linux平台下修正MySQL中文乱码问题
·The busy Java developer's guide to d
·新建Oracle数据库三种方法
·Linux下安装Oracle数据库完整笔记
·MySQL导入导出.sql文件步骤
·向MySQL插入数据乱码解决办法
网摘收藏: