知识大全 实现数据行的权限控制(Policy的应用)
Posted 视图
篇首语:如果惧怕前面跌宕的山岩,生命就永远只能是死水一潭。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 实现数据行的权限控制(Policy的应用)相关的知识,希望对你有一定的参考价值。
实现数据行的权限控制(Policy的应用) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
前言 数据访问权限控制 是一个古老而又实际的问题 在大部份系统中 权限控制主要定义为模块进入权限的控制和数据列访问权限的控制(如 某某人可以进入某个控制 仓库不充许查看有关金额的字段等等) 但在某些系统中 权限控制又必须定义到数据行访问权限的控制 此需求一般出现在同一系统 不同的相对独立机构使用的情况 (如 集团下属多个子公司 所有子公司使用同一套数据表 但不同子公司的数据相对隔离) 当然 绝大多数人会选择在View加上Where子句来进行数据隔离 此方法编码工作量大 系统适应用户管理体系的弹性空间较小 一旦权限逻辑发生变动 就可能需要修改权限体系 导致所有的View都必须修改 本文探讨的使用Oracle提供的Policy管理方法来实现数据行的隔离 特别感谢Javac兄提出的此解决方案! 实现 Oracle Policy的简单说明 Policy应用于数据行访问权限控制时 其作用简而言之 就是在查询数据表时 自动在查询结果上加上一个Where子句 如果该查询已有where子句 则在该Where子句后面加上 And 由Oracle Policy自动加入的Where子句的内容 通常由一个函数来实现 而进行数据行访问权限控制算法实现的结果 也是通过该函数返回 Oracle Policy的语法简述 新增Policy Dbms_Rls Add_Policy(Object_Schema 数据表(或视图)所在的Schema名称 Object_Name 数据表(或视图)的名称 Policy_Name POLICY的名称 主要用于将来对Policy的管理 Function_Schema 返回Where子句的函数所在Schema名称 Policy_Function 返回Where子句的函数名称 Statement_Types 要使用该Policy的DML类型 如 Select Insert Update Delete Update_Check 仅适用于Statement_Type为 Insert Update 值为 True 或 False Enable 是否启用 值为 True 或 False ); 注 如果Update_Check设为 True 则用户插入的值不符合Policy_Function返回条件时 该DML执行返回错误信息 删除Policy Dbms_Rls drop_policy(object_schema 要删除的Policy所在的Schema object_name 要删除Policy的数据表(或视图)名称 policy_name 要删除的Policy名称 ); 设定Policy状态 Dbms_Rls Enable_Policy(object_schema 要删除的Policy所在的Schema object_name 要删除Policy的数据表(或视图)名称 policy_name 要删除的Policy名称 Enable 是否启用 值为 True 或 False ); Policy使用特性及使用建议 ● 一个数据表(或视图)可以有多个Policy 但Policy的名称在整个Schema范围内不允许重复 ● 如果将Policy指定到视图 则删除Policy后 应重新编译该视图 否则User_Updatable_Columns系统字典表返回的是否可新增修改删除的信息可能会全部为 NOT ● 通过Policy可以限制用户对数据表记录的操作范围 如果Policy加在数据表 则由于前台涉及的数据源(通常是视图)往往涉及许多张数据表 权限控制难度很大 建议将Policy加在视图 Oracle Policy 应用实例 创建测试数据表 Create Table T_Policy(T Varchar ( ) T Number( )); 创建测试的Policy函数 CREATE OR REPLACE Function Fn_GetPolicy (P_Schema In Varchar P_Object In Varchar ) Return Varchar Is Begin Return T = ; End; 插入测试数据 Insert Into T_Policy Values( a ); Insert Into T_Policy Values( b ); Insert Into T_Policy Values( c ); Commit; 加入Policy Begin Dbms_Rls Add_Policy(Object_Schema => Scott Object_Name => T_Policy Policy_Name => T_TestPolicy Function_Schema => Scott Policy_Function => Fn_GetPolicy Statement_Types => Select Insert Update Delete Update_Check => True Enable => True ); End; 测试Policy Select * From T_Policy; Insert Into T_Policy Values ( d ); Insert Into T_Policy Values ( d ); Commit; 查看Policyy设定情况 Select * From user_policies; 重要提示 执行Dbms_Rls Add_Policy时 必须将执行Dbms_Rls包执行的权限授予Scott 测试时也可能使用其它Schema 最简单的方法是将测试的Schame设为 DBA 权限 cha138/Article/program/Oracle/201311/16724相关参考
我们习惯了在页面上有几个按钮控制这几个按钮的权限都做得都很熟练例如有btnAdd添加按钮btnEdit编辑按钮btnDelete删除按钮此页面是学生基本信息管理页面frmStudentManage
在web应用中对页面的访问控制通常通过程序来控制流程为登录>设置session>访问受限页面时检查session是否存在如果不存在禁止访问 对于较小型的web应用可以通过tomcat
计算机控制系统检修时,软件检查项由()组成。A、操作系统、应用软件及其完整性检查B、权限设置检查C、数据库检查D、软件备份检查参考答案:ABC
计算机控制系统检修时,软件检查项由()组成。A、操作系统、应用软件及其完整性检查B、权限设置检查C、数据库检查D、软件备份检查参考答案:ABC
知识大全 企业内部网中使用Policy文件来设置Java的安全策略
企业内部网中使用Policy文件来设置Java的安全策略 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
实现业务系统中的用户权限管理设计篇 B/S系统中的权限比C/S中的更显的重要C/S系统因为具有特殊的客户端所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现而B/S中浏览器是每
ORACLE数据库中权限和角色的全面解析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Orac
SQL技巧:取消用户自定义数据库对象的公共读取权限 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
SQL数据库中批量分配权限的有关问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 分配用户us
三招解决SQLServer数据库权限冲突 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在SQL