Oracle Database Vault
TOC \o "1-3" \h \z \u Oracle Database Vault PAGEREF _Toc518292867 \h 1
1. 参考... PAGEREF _Toc518292868 \h 1
2. 简介... PAGEREF _Toc518292869 \h 1
3. Vault组成部分... PAGEREF _Toc518292870 \h 2
3.1. Oracle Database Vault访问控制组件... PAGEREF _Toc518292871 \h 2
3.2. Oracle Database Vault管理员(DVA) PAGEREF _Toc518292872 \h 3
3.3. Oracle Database Vault 配置助手 (DVCA) PAGEREF _Toc518292873 \h 3
3.4. Oracle Database Vault DVSYS and DVF Schemas. PAGEREF _Toc518292874 \h 3
3.5. Oracle Database Vault PL/SQL 接口和包... PAGEREF _Toc518292875 \h 4
3.6. Oracle Database Vault 和Oracle Label Security PL/SQL APIs. PAGEREF _Toc518292876 \h 4
3.7. Oracle Database Vault 报告和监控工具... PAGEREF _Toc518292877 \h 4
4. Vault安装... PAGEREF _Toc518292878 \h 4
4.1. 检查是否已安装... PAGEREF _Toc518292879 \h 4
4.2. 关闭数据库及相关服务... PAGEREF _Toc518292880 \h 5
4.3. 组件编译... PAGEREF _Toc518292881 \h 5
4.4. 调用dbca部署... PAGEREF _Toc518292882 \h 5
4.5. 启动DBV配置界面... PAGEREF _Toc518292883 \h 6
4.6. 结论... PAGEREF _Toc518292884 \h 6
5. 案例介绍... PAGEREF _Toc518292885 \h 7
5.1. 示例1:只允许在非业务时间执行drop命令... PAGEREF _Toc518292886 \h 7
5.2. 实例2:只允许用户使用特定工具(应用)登录数据库... PAGEREF _Toc518292887 \h 8
5.3. 实例3:使用Dual Key安全功能... PAGEREF _Toc518292888 \h 9
6. 详说Oracle Vault——使用数据泵工具... PAGEREF _Toc518292889 \h 10
6.1. Data Pump与Vault PAGEREF _Toc518292890 \h 11
6.2. 默认行为配置... PAGEREF _Toc518292891 \h 11
6.3. 额外授权... PAGEREF _Toc518292892 \h 11
6.4. 导入敏感数据动作... PAGEREF _Toc518292893 \h 12
6.5. 结论与讨论... PAGEREF _Toc518292894 \h 12
7. Vault卸载... PAGEREF _Toc518292895 \h 13
7.1. 卸载前准备... PAGEREF _Toc518292896 \h 13
7.2. Disable Vault PAGEREF _Toc518292897 \h 13
7.3. 数据库中操作... PAGEREF _Toc518292898 \h 14
7.4. 结论... PAGEREF _Toc518292899 \h 15
1. 参考
详说Oracle Vault——原理、安装与配置
https://www.linuxidc.com/Linux/2014-05/101108.htm
使用技术手段限制DBA的危险操作—Oracle Database Vault
https://www.cnblogs.com/raobing/p/6174551.html
官方文档
http://www.oracle.com/technetwork/cn/tutorials/datavault-094096-zhs.html
Oracle数据安全解决方案
https://www.linuxidc.com/Linux/2011-12/48689p2.htm
2. 简介
Oracle数据库作为目前最成熟的商业数据库,在稳定其核心功能的同时也针对数量众多的用户群提出了很多安全运维工具解决方案。在数据层面,Oracle有三个代表新的技术:Virtual Private Database(VPD)、Label Security和Oracle Vault。
VPD主要是针对解决应用层面的数据访问需求添加数据访问权限,对SYS无效,
Label Security是VPD某种程度的拓展升级。
Oracle Database Vault(DV)主要是对Oracle数据库保护敏感数据和职责分离。将数据安全责任从用户甚至sys身上剥离出去,进行细粒度的安全责任分配。作为Oracle数据库的一个可选组件,Vault是需要额外的文件链接、注册和安装的。安装vault之后,Oracle会去创建一个全新的用户dbvowner,原有的sys对一些数据的操作和访问权限,也都有进行控制的可能。
Vault中的三个核心要素:Realm(领域)、Factor(因素)和规则(Rule)。从数据对象、操作s命令等多个方面来限制或者保护特定的对象。
DV保护敏感数据主要通过Realm(安全域),Realm可以简单理解为敏感数据的集合,DV通过realm的配置来指定用户是否可以访问Realm保护的数据,如果在DV中没有给访问权限,即使是sysdba也无权访问受Realm保护的数据,这是DV的核心功能.
DV还有一个很重要的功能,Command Rules,就是可以按一定的判断条件,允许或阻止数据库用户执行DDL、DML以及DCL命令,而且对特权用户,包括sysdba都有效。这个功能正好可以满足我们限制dba的需求。
Factor(认证因子)就是可以用于进行条件判断的因素,比如客户端主机名,客户端IP等等,Oracle内置了一些常用的Factor,用户也可以自己创建Factor,Factor可以是一个表达式,也可以是一个存储过程的返回值。
Rule Sets简单说就是判断条件的集合,类似SQL的where之后的判断条件,当规则集的判断条件返回为true时,DV允许用户访问数据或执行特定的命令。Rule sets中的Rule可以引用Factor做判断。
3. Vault组成部分
Oracle Database Vault包含如下部分:
1) Oracle Database Vault 访问控制组件
2) Oracle Database Vault 管理员组件(DVA)
3) Oracle Database Vault配置助手(DVCA)
4) Oracle Database Vault DVSYS和 DVF Schemas
5) Oracle Database Vault PL/SQL接口和开发包
6) Oracle Database Vault和Oracle Label Security PL/SQL APIs
7) Oracle Database Vault 监控和报告工具
3.1. Oracle Database Vault访问控制组件
Oracle Database Vault使你能够创建如下组件来保护你的数据库实例的安全:
域:域是需要被保护的数据库schemal、对象、角色的一个功能上的集合。例如:你可以将和账户、销售、或者人力资源相关的数据库schemal、对象、角色组成一个域。当你将这些组成一个域后,你可以使用域来控制赋给特定账户或者角色的系统权限的使用。这样你就可以给任何想使用这些数据库schemal、对象、角色的用户提供细粒度的访问控制。Chapter 4, "Configuring Realms"详细讨论了域。.
命令规则:命令规则是一个特殊的规则,通过这个规则,你可以控制用户如何执行他们能够执行的几乎所有的SQL语句,包括SELECT, ALTER SYSTEM, database definition language (DDL), 和data manipulation language (DML)语句.命令规则必须和规则集一起决定某个语句是否允许执行。Chapter 6, "Configuring Command Rules"详细讨论了规则集.
因素:因素是一个命名变量或者属性,例如用户位置、数据库IP地址、会话用户,这些因素是Oracle Database Vault能够识别和保护的。你可以针对用户活动使用这些因素,例如授权数据库账户链接到数据库,或者创建过滤逻辑条件来限制数据的可见性和可管理性。每个因素可以包含一个或者多个标识,标识是因素的具体的值。一个因素可以包含多个标识,这取决于因素的检索方法或者它的映射逻辑。Chapter 7, "Configuring Factors"详细讨论了因素.
规则集:规则集是一个或者多个规则的集合,你可以将规则集和一个域的授权、命令规则、因素指派、或者安全应用角色关联起来。规则集基于其中的每个规则的计算值以及规则的计算方式(所有为真或者任意为真)。规则集中的规则是一个结果为“true”或“false”的PL/SQL表达式。Chapter 5, "Configuring Rule Sets"详细讨论了规则集。
安全应用角色:一个安全应用角色是一个特殊的Oracle数据库角色,它可以基于Oracle database vault规则集的计算结果激活。Chapter 8, "Configuring Secure Application Roles for Oracle Database Vault"详细讨论了安全应用角色。
为了加强这些组件的功能,Oracle Database vault提供了一系列的PL/SQL接口和包。"Oracle Database Vault PL/SQL Interfaces and Packages"提供了一个概括的介绍.
通常情况下,你要做的第一步是创建一个包含你想保护的schema或者数据库对象的域,然后你就可以通过创建规则、命令规则、因素、标识、规则集、安全应用角色来保护你的域。除此以外,你可以运行报告工具来报告这些组件监控和保护的活动。Chapter 3, "Getting Started with Oracle Database Vault"提供了一个简单的指南,可以使你熟悉Oracle Database Vault的功能,Chapter 16, "Oracle Database Vault Reports"提供了更多关于如何运行报告来检查配置和其它Oracle Database Vault 完成的活动。
3.2. Oracle Database Vault管理员(DVA)
Oracle Database Vault 管理员是一个基于Oracle Database Vault的PL/SQL API构建的Java程序。这个程序可以让不熟悉PL/SQL接口的安全管理者通过友好的用户界面来配置访问控制策略。Oracle Database Vault管理员程序提供了众多的安全相关的报告,这些报告可以帮助了解基准的安全配置。这些报告同时也有助于指出与基准配置相比,当前配置有哪些变化。
Chapter 4到 Chapter 9解释了如何通过Oracle database Vault管理员程序来配置访问策略, 以及如何将Oracle Database Vault与其它Oracle产品集成起来. Chapter 16, "Oracle Database Vault Reports"解释了Oracle Database Vault报告.
3.3. Oracle Database Vault 配置助手 (DVCA)
为了执行维护任务,可以使用命令行工具Oracle Database Vault配置助手(DVCA).更多信息请参考Appendix C, "Postinstallation Oracle Database Vault Procedures".
3.4. Oracle Database Vault DVSYS and DVF Schemas
Oracle Database Vault 提供了DVSYS这个schema来存储所有需要Oracle Database Vault保护的数据库对象。DVSYS schema包含角色、视图、账户、函数、以及其它Oracle Database Vault使用的数据库对象。DVF schema包含一些公共函数,这些函数用于从Oracle Database Vault访问控制配置中读取因素值的集合。
Chapter 10, "Oracle Database Vault Objects"详细描述了这两个schema.
3.5. Oracle Database Vault PL/SQL 接口和包
Oracle Database Vault提供了一个PL/SQL接口和包,让安全管理员或者应用程序开发者按需配置访问控制策略。PL/SQL存储过程和函数使得普通的数据库账户能够在一个数据库会话上下文中在访问控制策略边界里进行操作。
参考Chapter 14, "Using the Oracle Database Vault PL/SQL Interfaces" and Chapter 11, "Using the DVSYS.DBMS_MACADM Package"获取更多信息.
3.6. Oracle Database Vault 和Oracle Label Security PL/SQL APIs
Oracle Database Vault提供了能够和Oracle Label Security集成的访问控制能力。Oracle Label Security是和Oracle Enterprise Manager Database Control集成的,Oracle Enterprise Manager Database Control能够让安全管理员定义应用到数据库对象的标签安全策略。Oracle Label Security同样提供了一组可以供数据库应用程序开发者用来提供标签安全策略的PL/SQL API
参考 "Integrating Oracle Database Vault with Oracle Label Security"获取更多关于Oracle Database Vault和Oracle Label Security如何配合的信息. 参考 Oracle Label Security Administrator's Guide获取更多关于Oracle Policy Manager的信息.
3.7. Oracle Database Vault 报告和监控工具
你可以根据Oracle Database Vault监控的不同的活动来生成报告,你可以监控策略的改变、异常的安全尝试、数据库配置和结构的变化。
参考 Chapter 16, "Oracle Database Vault Reports"获取更多关于你可以生成的报告的信息. Chapter 15, "Monitoring Oracle Database Vault"解释了如何监控Oracle Database Vault.
4. Vault安装
4.1. 检查是否已安装
默认企业版中,Vault是不会安装的。我们需要手工的进行编译、安装,才能使用。
我们采用Oracle 11gR2进行测试,版本号为11.2.0.4。
SQL> select * from v$version;
判断当前vault是否安装,查看v$option视图。
SQL> select * from v$option where parameter like '%Vault%';
PARAMETER VALUE
------------------------- ----------
Oracle Database Vault FALSE
在本版本中,查看均已安装,但随后配置塑件提示没有安装。
select * from v$option where parameter like '%Vault%';
select * from v$option where parameter like '%Security%';
4.2. 关闭数据库及相关服务
安装配置之前,要将数据库、监听程序、DB Console关闭。
--监听程序
[oracle@SimpleLinux ~]$ lsnrctl stop
--Console
[oracle@SimpleLinux ~]$ emctl stop dbconsole
--Database Server
SQL> shutdown immediate;
4.3. 组件编译
Oracle Vault是依赖Label Security,需要在操作系统层面上启动配置。在Linux/Unix环境下,使用make进行配置链接。
[oracle@SimpleLinux lib]$ cd $ORACLE_HOME/rdbms/lib
[oracle@SimpleLinux lib]$ make -f ins_rdbms.mk dv_on lbac_on ioracle
注意:如果在Exadata中需要使用IPC协议访问存储,则需要加入ipc_rds协议模块。另外如果Windows平台,则是将$ORACLE_HOME/bin目录中oradv11.dll.dbl改名为oradv11.dll命令。
之后,重新启动监听器和服务器。
[oracle@SimpleLinux lib]$ lsnrctl start
SQL> conn / as sysdba
SQL> startup
4.4. 调用dbca部署
在支持GUI的界面方式下,调用dbca启动编译。
点击下一步Next,选择Configure Database Options项目。之后选择目标数据库。
从选项中,选择上Label Security和Vault选项。
Oracle Label Security 用户未system
Oracle Database Vault 为SYSAUX
配置项目中,包括了Oracle Vault用户owner的名称和管理员密码。注意:这个配置密码环节是很严格的,要求长度是8-30位、不出现重复字符和包括至少一个标点符号。
database vault owner: dbvowner password:Abcd_1234
创建单独的账户管理员,已区分账户管理和安全策略管理。
database vault account manager: dbvmgr password:Abcd_1234
选择连接方法,包括独占方式和共享连接方式。最后安装选项。
最后安装成功,结束GUI界面。
4.5. 启动DBV配置界面
和很多Oracle组件一样,Oracle Vault是可以通过一系列的API接口调用来进行配置管理的。但是,由于复杂性,Oracle并不推荐直接使用API接口命令进行管理,而是通过提供的dbv应用进行配置。使用dbv的方法和em很像,而且避免了出现错误的几率。
调用dbv的方法,首先是启动emctl。之后调用https://192.0.2.20:1158/dva
端口号和em是一样的。
用户名:dbvowner
口令:Abcd_1234
HOST:192.0.2.20
PORT:1521
SID/服务:SID:orcl
点击登录,就可以看到配置项目。
4.6. 结论
Oracle Vault是目前Oracle官方推荐的运维安全策略。在实际应用中,主要便于进行sys等管理员帐号权限限制,保护核心业务数据。
5. 案例介绍
5.1. 示例1:只允许在非业务时间执行drop命令
这个例子是最简单的,不需要使用Factor,只使用Rule Sets和Command Rules就可以完成。我们用数据库用户test来示范:
1) 登录DV的管理页面:
2) 创建一个Rule Set,名字叫”Can not drop table in business time”,选择Any True,意思是说规则集中的规则(判断条件)任何一个为True,规则集判断结果就为True。其实All True就相当于and,Any True就相当于or。审计选型:成功或失败的审计。错误处理页面:处理时出错:show error message,失败代码:-20001,失败消息:Can not drop table in business time
3) 要与规则集关联的规则,创建两个规则:
规则名:RULE1 规则表达式:to_char(sysdate,'HH24MM')<'1145'
规则名:RULE2 规则表达式:to_char(sysdate,'HH24MM')>'1155'
这两个RULE也很好理解,就是判断当前时间是否为业务时间,在这里,为了便于做实验,把业务时间定义为11:45~11:55,这个规则集判断当前时间,如果当前时间不在业务时间内,规则集返回True。
4) 然后创建Command Rule
在主页,点击规则>创建,命令了类型选择DROP TABLE,状态:启用,用户所有者:SCOTT,命令集:Can not drop table in business time
这个Command Rule的意思就是指定的Rule Set 返回True时,允许drop test用户下的表,否则即使是sysdba或表的owner也无权drop table。
5) 效果:
23:50:48 SCOTT@orcl >create table dept3 as select * from dept;
23:51:09 SCOTT@orcl >drop table dept3;
drop table dept3
*
ERROR at line 1:
ORA-47306: 20001: Can not drop table in business time
23:51:59 @ >conn sys/oracle@s11 as sysdba
23:52:12 SYS@s11 >drop table scott.dept2;
drop table scott.dept2
ERROR at line 1:
ORA-47306: 20001: Can not drop table in business time
其他我们想控制的Alter Table等Command Rule的设置方法类似。
5.2. 实例2:只允许用户使用特定工具(应用)登录数据库
实际工作中,我们经常遇到这样的情况:应用开发人员都有应用用户的口令,他们可以随意用SQL*PLUS或PL/SQL Developer这样的工具连接到生产库上,如果一时搞混了生产库和测试库,就可能有悲剧发生。最好的解决方法就是限制应用用户所用的工具,应该只允许中间件以这个用户连接,其他工具都不允许连接。
这个例子会用到Factor,首先我们创建一个Factor,取用户会话的Module:
1) 创建因子:
名称:Module
因子类型:Application
因子标识:By Method ,
因子赋值:By Access,
因子标签:By Self
检索方法:UPPER(SYS_CONTEXT('USERENV','MODULE'))
点击“创建”。
2) 用SQL*PLUS登录数据库,验证这个Factor取出的值:
SYS@orcl >select dvf.f$module from dual;
F$MODULE
-----------------------------
SQLPLUS@S11 (TNS V1-V3)
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- Java 中接口与抽象类的区别究竟有哪些?(java中接口和抽象类的区别是什么)
- 如何高效地部署 Java 应用程序?(如何部署Java应用程序)
- Java 类的访问控制顺序究竟是怎样的?(java类的访问控制顺序是什么)
- 如何轻松解决 java exe4j 安装问题?(如何解决java exe4j安装问题)
- 如何在 Java 中向 MySQL 数据库添加数据?(java怎么向mysql数据库中添加)
- 如何获取 Java 枚举类的值?(java枚举类的值怎么获取)
- 如何在 Java 中向数据库添加一条数据?(java怎么向数据库添加一条数据)
- 宁夏软考考试科目有哪些?2025年宁夏软考考试科目安排
- Uncomtrade数据库异地备份指南
- CORS 在微服务架构中的应用场景有哪些?(cors在微服务架构中的应用场景)