`

Oracle虚拟私有数据库(VPD)概述及简单举例

 
阅读更多
Oracle虚拟私有数据库(VPD)概述及简单举例
1、Oracle虚拟私有数据库(VPD)概述
VPD提供了比角色和视图更好的行级访问控制。例如在internet访问中,虚拟私有数据库可以确保网上银行用户只能看到自己的帐户。互联网应用服务公司可以在一个数据库中维护多个公司的数据,同时确保每个公司只能看到其自己的数据。
在企业内部,VPD降低了应用部署的开销。安全仅需在数据服务器构造一次,而不用在每个访问数据的应用上部署。这样做安全性更强,因为数据库会强制应用安全策略,无论一个用户以何种方式访问数据。用户不能再使用一个查询工具(如SQL*PLUS)或者报表软件(如Informaker)来跳过编制在应用程序中的安全策略了。VPD是企业建立宿主于互联网应用的关键技术。
2、VPD工作原理
VPD通过将一个或更多的安全策略应用于表或视图而生效。直接或间接的访问一个应用了安全策略的表将生成一个访问条件,即生成一个“谓词”(WHERE子句),数据库会把这个谓词添加到用户的SQL语句中,从而动态修改用户的数据访问。
可以通过写存储过程把一个SQL语句谓词添加到每个SQL语句中,从而控制这条语句的行级访问。例如,如果John(属于dept 10)输入了select * from emp语句,则可以使用VPD来添加WHERE DEPT = 10子句,从而可以通过重写查询语句来限制对特定行的数据访问。
VPD可以确保无论一个用户怎样访问数据(通过应用,报表工具或SQL*PLUS),都会遇到一个同样强的访问控制策略。因此,VPD可以帮助银行确保其用户只能看到自己的帐户,电信公司可以保证其每个用户的记录被安全的隔离,HR应用可以支持访问员工记录的复杂规则。
3、以下通过一个简单的例子,介绍VPD的基本实现过程,仅供大家参考:
目标:
A、使用VPD实现一个安全策略:限制用户只能在EMP表中查看自己的记录;
B、创建一个策略函数;
C、添加新的安全策略;
D、检验VPD。
配置说明:
Oracle版本:Oracle 10g 10.2.0.4.0
4、过程如下:
A、创建一个策略函数,限制用户只能在EMP表中查看自己的记录:
SQL> conn / as sysdba
已连接。
SQL> create or replace function func1(
2 p_schema in varchar2,
3 p_object in varchar2)
4 return varchar2
5 as
6 begin
7 return 'ename=sys_context(''USERENV'', ''SESSION_USER'')';
8 end;
9 /

函数已创建。
B、使用DBMS_RLS包添加这个新的安全策略,指定策略将应用于SCOTT模式下的EMP表,策略名为MY_POLICY,使用的策略函数是FUNC1,策略对DELETE,UPDATE,SELECT语句生效:
注意:对某个用户下的表指定策略后,如果表中没有包含用户名的信息,则无法查询到任何消息
SQL> begin
2 dbms_rls.add_policy(
3 object_schema=> 'SCOTT',
4 object_name => 'EMP'
5 ,
6 policy_name => 'MY_POLICY'
7 ,
8 policy_function => 'FUNC1'
9 ,
10 statement_types => 'SELECT, UPDATE, DELETE');
11 END;
12 /

PL/SQL 过程已成功完成。
C、检验VPD,先测试查询策略:以SCOTT用户连接数据库,发现EMP表应用策略后,查询不能返回整个表的记录,用户只能查看到自己的信息:
SQL> conn scott/tiger
已连接。
SQL> select * from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
DEPTNO
----------
7788 SCOTT ANALYST 7566 3000
20
D、检查更新策略:更新所有DEPTNO为20的员工的工资,只更新了一条SCOTT自己的记录:
SQL> conn scott/tiger
已连接。
SQL> update emp set sal = sal + 10 where deptno = 20;

已更新 1 行。

SQL> select * from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
DEPTNO
----------
7788 SCOTT ANALYST 7566 3010
20
E、检查删除策略:删除EMP表中关于SMITH用户的记录,发现没有满足条件的记录;删除EMP表中所有的记录,只能删除SCOTT用户自己的记录:
SQL> delete emp where ename = 'SMITH'
2 /

已删除0行。

SQL> delete emp;

已删除 1 行。

从以上可以看出,安全策略已经在EMP表上应用,执行查询时会自动返回WHERE子句控制访问。
5、总结
A、应用上下文是保存在内存中的一系列记录用户会话的“属性和取值”对(如session_user和scott)。Oracle为每个数据库会话提供了缺省的应用上下文,即USERENV名字空间,其中记录了例如IP_ADDRESS、TERMINAL、SESSION_USER、SESSION_USERID等会话的属性。除了使用缺省的应用上下文USERENV,还可以自定义设置应用上下文。本例中在创建策略函数FUNC1时使用了USERENV提供的SESSION_USER属性。
B、使用DBMS_RLS包来添加、更新和删除一个安全策略。
分享到:
评论

相关推荐

    Oracle数据库用VPD来确保信息的隐私

    其结果就是每个用户看到完全不同的数据集--只能看到那些该用户被授权可以查看的数据--所有这些功能有时被称为的 Oracle虚拟专有数据库(或称为VPD)特性。本文说明如何建立VPD安全性模型。描述了银行通过创建函数、...

    oracle 虚拟专用数据库详细介绍

    详细介绍了oracle 虚拟专用数据库,对行级别和列级别分别举了代码实例并进行分析,内容比较详细,需要的朋友可以参考下。

    关于Oracle的虚拟专有数据库特性探讨

    其结果就是每个用户看到完全不同的数据集--只能看到那些该用户被授权可以查看的数据--所有这些功能有时被称为的 Oracle虚拟专有数据库。使用Oracle的VPD功能不仅确保了企业能够构建安全的数据库来执行隐私政策,而且...

    有关Oracle中虚拟专用数据库的探讨

    虚拟专用数据库 (VPD) 也称为细粒度访问控制,它提供强大的行级安全功能。它是在 Oracle8i 中推出的,已经受到广泛的欢迎,并且在从教育软件到金融服务等各种应用程序得到采用。 VPD 的工作方法是,通过透明地更改对...

    vpd列级权限控制举例

    oracle数据安全介绍与简明使用之:vpd列级权限控制举例

    Oracle数据库安全配置规范

    Oracle数据库安全配置规范 DBA Database Administrator 数据库管理员 VPD Virtual Private Database 虚拟专用数据库 OLS Oracle Label Security Oracle标签安全

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    4.4.2虚拟元数据 4.5 ASM操作 4.5.1 RDBMS操作ASM文件 4.5.2 ASM文件的分配 4.5.3 ASM区间读写特性 4.5.4 ASM同步技术 4.5.5 ASM实例恢复和Crash恢复 4.5.6 ASM磁盘组操作 4.6 ACFS集群文件系统 4.6.1 ACFS...

    论文研究-Oracle VPD-细粒度的权限设计方案 .pdf

    Oracle VPD-细粒度的权限设计方案,翟慧鑫,邹仕洪,数据资源共享已经成为大家协同工作的基本要求,传统的数据库访问控制模式已经不能很好的保护数据安全,因此更细粒度的访问控制得

    Oracle11g从入门到精通

    第1章 Oracle数据库概述 1.1 Oracle数据库产品结构及组成 1.1.1 企业版 1.1.2 标准版 1.1.3 标准版 1.1.4 个人版 1.2 数据库基本术语 1.2.1 数据库 1.2.2 数据库管理系统 1.2.3 数据库系统 1.2.4 数据库...

    oracle-vpd:启用Oracle VPD的翻译器

    Oracle-vpd 这是用于Oracle的代理JDBC驱动程序,它提供了一种从JBoss EAP环境中注入V $ Session OSUSER的方法。 应该注意的是,必须在“ CallerIdentity”登录模块中使用它来设置OSUSER,并在JEE引擎中将基于$ ...

    Oracle11g从入门到精通2

    第1章 Oracle数据库概述 1.1 Oracle数据库产品结构及组成 1.1.1 企业版 1.1.2 标准版 1.1.3 标准版 1.1.4 个人版 1.2 数据库基本术语 1.2.1 数据库 1.2.2 数据库管理系统 1.2.3 数据库系统 ...

    Oracle数据库安全配置

    1 概述 2 1.1 适用范围 2 2 ORACLE安全配置要求 2 2.1 账号 2 2.1.1 按用户分配帐号 2 2.1.2 删除或锁定无关帐号 3 2.1.3 限制SYSDBA用户的远程登录 3 2.1.4 用户权限最小化 4 2.1.5 使用ROLE管理对象的权限 5 2.1.6...

    Oracle中细粒度访问控制的工作方式

    细粒度访问控制也就是虚拟专用数据库 (VPD) ,它提供强大的行级安全功能。它是在 Oracle8i 中推出的,已经受到广泛的欢迎,并且在从教育软件到金融服务等各种应用程序得到采用。VPD 的工作方法是,通过透明地更改对...

    Oracle数据库安全策略分析(一)第1/2页

    正在看的ORACLE教程是:Oracle数据库安全策略分析(一)。 数据库安全性问题一直是围绕着数据库管理员的恶梦,数据库数据的丢失以及数据库被非法用户的侵入使得数据库管理员身心疲惫不堪。围绕数据库的安全性问题...

    Oracle_VPD:在Oracle VPD中下载

    Oracle_VPD OracleVPDOracle。

    Oracle.11g.从入门到精通 (2/2)

    第1章 Oracle数据库概述 1.1 Oracle数据库产品结构及组成 1.1.1 企业版 1.1.2 标准版 1.1.3 标准版 1.1.4 个人版 1.2 数据库基本术语 1.2.1 数据库 1.2.2 数据库管理系统 1.2.3 数据库系统 1.2.4 数据库模式 1.2.5 ...

Global site tag (gtag.js) - Google Analytics