Oracle VPD 数据细粒度访问实现方案1. 背景为确保 2025 年 XX 系统各本地网数据省集中后,在后台数据库层面能有效地隔离各本地网的数据、方便各本地网 DBA 人员查看和修改自己所在本地网的数据和保证其他本地网数据的安全性.2. 技术概述Oracle 引进了 VPD(虚拟私有数据库)来对数据库进行细密度的访问控制。VPD 又称为精细存取控制(FGAC)、行级安全性控制(RLS),是指使用了行级安全保护能力和应用上下文的数据库,会透明地过滤记录.VPD 的行级安全是通过 RLS 策略函数,在用户对数据库表或视图的查询中动态地使用谓词(WHERE 子句),从而具有在系统执行查询运行时以变化的方式修改查询的能力。不像传统应用程序安全的设计,VPD 的行级安全设计是在数据服务器端一次性地构建安全策略,而不是在应用服务器端为每一个应用程序实施安全策略,这就大大节约了设计成本 ,也消除了应用级安全问题.安全策略都被置于在数据库自身里,使得不同的应用程序将不会绕过安全策略,用户也就不再能绕过安全策略,因为无论用户使用何种应用程序,最终都会被数据服务器端的策略函数自动强制实施对用户的访问控制(如图)。借助于 VPD,用户可以将数据库安全性实施到表或者视图的更小粒度.VPD 使得服务器的数据安全地和物理数据分离,每个用户只能访问到自己要访问的信息,就像有一个自己的数据库,其中只有他自己的信息,这种特性非常符合应用程序服务供应商的安全性需求。3. 方案设计步骤3.1.定义安全策略目标结合综合资源系统省集中后,由于 XX 个本地网的数据都会在同一库中,从数据库层面维护和安全性角度来看是不太可取的,这样的话会有引起误操作和非法猎取他人本地网数据信息。所以从上面 2 方面的考虑要求。可以简单定义独具特色的安全策略目标:在数据库层面上每个本地网只希望查到或修改自己本地网的数据和自己本地网数据不能被其他本地网的人查到或修改。3.2.创建访问的相应用户和给予权限以 DBA 管理员身份登录例如:Connect Sys / **@sdh As Sysdba;创建访问的相应用户并赋权例如:以广州和江门为例。Create User XXjm Identified By XXjm Default Tablespace sdh_data Temporary Tablespace Temp;Grant Connect, Resource To XXjm;grant create any synonym to user01;grant drop any synonym to user01;Create User XXgz Identified By XXgz Default Tablespace sdh_data Tempo...