前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈基于JDBC实现虚拟专用数据库(VPD)

浅谈基于JDBC实现虚拟专用数据库(VPD)

作者头像
麒思妙想
发布2020-07-10 10:21:09
1.4K0
发布2020-07-10 10:21:09
举报
文章被收录于专栏:麒思妙想

1、什么是VPD?

虚拟专用数据库 (VPD)提供了角色和视图无法提供的行级访问控制。对于互联网访问,虚拟专用数据库可以确保在线银行的客户只能看到他们自己的帐户。Web托管公司可以在同一Oracle 数据库中维护多个公司的数据,但只允许每个公司查看其自身数据。

在企业内部,虚拟数据库可在应用程序部署方面降低拥有成本。可以在数据库服务器一次实现安全性,而不用在访问数据的每个应用程序中分别实现安全性。因为是在数据库中实施安全性,所以不管用户访问数据的方式如何,安全性较以前更高。访问即席查询工具或新报表生成程序的用户不再能绕过安全环节。

2、VPD是如何工作的?

将一个或多个安全策略与表或视图关联后,就可以实现虚拟专用数据库。对带安全策略的表进行直接或间接访问时,数据库将调用一个实施该策略的函数。策略函数返回一个访问条件(WHERE子句),即谓词。应用程序将它附加到用户的 SQL 语句,从而动态修改用户的数据访问权限。

你可以通过编写一个存储过程将 SQL 谓词附加到每个 SQL 语句(用于控制该语句的行级别访问权限)来实施 VPD。如下图,Bob 和 Anna 为两名经理,他们可以查看他们所管理的人员信息,Tim作为普通职员,就只能查看自己的信息。

使用Oracle VPD实现:

3、实现思路?

实现思路大概如下图

  1. 重写JDBC部分驱动以便后面做手脚
  2. 解析输入SQL,并根据VPD上下文,元数据信息以及VPD规则进行SQL的重新拼装
  3. 针对需要对列权限处理,需要保存必要元数据信息,并且对结果集进行二次处理

参考Oracle Vpd的元数据表设计

实现效果

参考连接:

http://mohamednabeel.blogspot.com/2014/08/oracle-virtual-private-database-vpd.html

https://oracle-base.com/articles/8i/virtual-private-databases

https://blog.csdn.net/w892824196/article/details/84255143

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 麒思妙想 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档