当前位置:  数据库>oracle

使用技术手段限制DBA的危险操作—Oracle Database Vault

    来源: 互联网  发布时间:2017-06-25

    本文导语: 概述 众所周知,在业务高峰期,某些针对Oracle数据库的操作具有很高的风险,比如修改表结构、修改实例参数等等,如果没有充分评估和了解这些操作所带来的影响,这些操作很可能会导致故障,轻则导致应用错误,重则导致...

概述

众所周知,在业务高峰期,某些针对Oracle数据库的操作具有很高的风险,比如修改表结构、修改实例参数等等,如果没有充分评估和了解这些操作所带来的影响,这些操作很可能会导致故障,轻则导致应用错误,重则导致数据库服务不可用。

另外,在非业务高峰期,某些看似风险不大的操作也可能会导致严重后果,比如不按管理流程修改表结构,如果这个表正好是Oracle GoldenGate复制组的一部分,修改了源端结构而没有通知OGG的相关人员,没有在目标端进行相同的操作,而DDL复制功能也没有打开的情况下,就会导致复制进程故障,导致数据不一致,在某些应用场景下,这也是很严重的生产事故。

目前,传统的应对方法还是强调管理,不管是客户还是服务商都在不断强调制度和规范,希望从制度建设和工程师的职业素养上着手,防止DBA的这种随意的危险操作。

但是,管理制度毕竟是“软性”的,把希望寄托在工程师自觉地遵守制度和“自我修养”上,并不能保证万无一失。

Oracle提供的安全组件,可以用来限制、阻断这种随意的危险操作,用技术手段保证管理制度被遵守。

Oracle Database Vault简介

我们要讨论的是Oracle数据库的安全组件之一: Oracle Database Vault(DV),它的主要功能是保护敏感数据和职责分离。

DV保护敏感数据主要通过Realm(安全域),Realm可以简单理解为敏感数据的集合,DV通过realm的配置来指定用户是否可以访问Realm保护的数据,如果在DV中没有给访问权限,即使是sysdba也无权访问受Realm保护的数据,这是DV的核心功能,但不是本文的重点。

DV还有一个很重要的功能,Command Rules,就是可以按一定的判断条件,允许或阻止数据库用户执行DDL、DML以及DCL命令,而且对特权用户,包括sysdba都有效。这个功能正好可以满足我们限制dba的需求。

大家如果想详细了解DV的功能,可以访问Oracle官网:http://www.oracle.com/technetwork/database/options/database-vault/index-085211.html

Oracle Database Vault最低支持的数据库版本是9.2.0.8,早期是单独的一个安装包。从11g开始,Oracle的数据库安装介质中包含了这个组件,想要使用这个组件的用户需要在安装时勾选Database Vault选项。除了安装相关的软件组件,还需要在创建数据库时,创建相关的数据库对象。

Database Vault可以使用相关的存储过程来实现命令行方式的配置、管理,也可以通过web管理界面来管理,在早期,必须安装EM,才能使用web管理界面,从11gR2起,数据库自带的dbcontrol也可以进行web界面的管理了。

除了前面讲到的Realm和Command Rules,还有两个概念要介绍一下,一个是Factor(认证因子),另一个是Rule sets(规则集)。

Factor(认证因子)就是可以用于进行条件判断的因素,比如客户端主机名,客户端IP等等,Oracle内置了一些常用的Factor,用户也可以自己创建Factor,Factor可以是一个表达式,也可以是一个存储过程的返回值。

Rule Sets简单说就是判断条件的集合,类似SQL的where之后的判断条件,当规则集的判断条件返回为true时,DV允许用户访问数据或执行特定的命令。Rule sets中的Rule可以引用Factor做判断。

示例1:只允许在非业务时间执行drop命令

这个例子是最简单的,不需要使用Factor,只使用Rule Sets和Command Rules就可以完成。我们用数据库用户test来示范:

登录DV的管理页面:

创建一个Rule Set,名字叫”Can not drop table in business time”,选择Any True,意思是说规则集中的规则(判断条件)任何一个为True,规则集判断结果就为True。其实All True就相当于and,Any True就相当于or

这两个RULE也很好理解,就是判断当前时间是否为业务时间,在这里,为了便于做实验,把业务时间定义为11:45~11:55,这个规则集判断当前时间,如果当前时间不在业务时间内,规则集返回True。

然后创建Command Rule,如下图:

这个Command Rule的意思就是指定的Rule Set 返回True时,允许drop test用户下的表,否则即使是sysdba或表的owner也无权drop table。

效果:

其他我们想控制的Alter Table等Command Rule的设置方法类似。

更多详情见请继续阅读下一页的精彩内容:


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问专家,Linux中,锁的使用有数量上的限制吗?
  • linux如何限制指定进程的内存使用量?
  • 急急!!!高分求助,关于实现LINUX软件的使用限制问题
  • 请问linux系统能不能限制用户的cpu使用上限
  • Linux上能创建限制使用磁盘空间的用户吗?
  • 如何限制linux服务器用户cpu和mem的使用率
  • Linux下使用exec时, 命令行参数长度有限制吗?
  • 请问在linux中如何限制用户的硬盘使用空间?
  • 请问,FIFO的读写是否有字节数限制,PIPE_BUF如何使用?
  • 从sun网站下的solaris Sparc版,有没有功能和使用时间的限制?
  • 我下载了jbuilder7,但是有30天的使用限制,真是不爽,哪位仁兄有注册码?50分相谢!
  • Linux 如何限制普通用户只能使用一部分SHELL
  • zf框架的session会话周期及次数限制使用示例
  • 使用 TOP 子句限制UPDATE 语句更新的数据
  • 限制他人使用linux路由器
  • 请问在UNIX下可同时使用的套接字有没有限制?如果有,大概是多少? 谢谢!
  • [Oracle] 如何使用触发器实现IP限制用户登录
  • 深度揭露Oracle索引使用中的限制
  • 使用正则限制input框只能输入数字/英文/中文等等
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 从sun网站下的solaris Sparc版,有没有功能和使用时间的限制? iis7站长之家
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3