Oracle标签安全性
Oracle标签安全性 ........................................................................................................................... 1
1、概述 .................................................................................................................................... 2 2、工作流程 ............................................................................................................................ 2 3、测试步骤 ............................................................................................................................. 3
3.1、安装Oracle Label Security ....................................................................................... 3 3.2、创建安全策略 .......................................................................................................... 6 3.3、定义Level ................................................................................................................ 7 3.4、定义Compartment .................................................................................................. 7 3.5、定义Group .............................................................................................................. 7 3.6、创建Label ................................................................................................................ 7 3.7、将策略赋予表 .......................................................................................................... 8 3.8、将Label赋予用户 ................................................................................................... 9 3.9、新增LEVEL ............................................................................................................. 11 结论......................................................................................................................................... 12
1、概述
在Oracle9i中有一个组件称为Oracle Label Security,这个组件实现了基于自定义策略而对数据库中的表甚或是整个Schema提供行级安全性功能。实际上Oracle Label Security是在Oracle8.1.7中提出的,在9i版本中功能得到了大幅度增强。
Oracle Label Security是内置于数据库引擎中的过程与约束条件集,该数据引擎实施对在单个表或整个模式上的\行\级访问控制。要利用Oracle Label Security,需要创建一个或多个安全策略,其中每一个安全策略都包含一组标签。你可以用这些标签来标明哪些用户能够访问什么类型数据。在创建了一个 策略之后,将该策略应用于需要保护的表,并将这些标签授予你的用户,这样,你就完成了整个过程。Oracle Label Security对查询的修改是透明的,并且在即时计算访问级别,以执行你的新策略。
当Oracle9i数据库在解析各个SQL语句时,它也检测各个表是否受到某个安全策略的保护。根据该用户的访问权限,Oracle9i数据库 向该语句的WHERE子句中添加安全性谓词。因为这些都发生在数据库引擎的内部,所以不管该SQL语句的来源如何,用户都不可能绕过该安全性机制。
2、工作流程
首先我们了解一下实现Oracle Label Security的大体流程。
通过Oracle提供的一系列存储过程,先创建一个policy,然后在policy中创建level,compartment,group,之后通过这些定义好的level,compartment,group再定义label,然后将policy绑定到某张表或者某个schema,最后再给相应的用户设置label。
其中牵涉到几个名词,解释一下:
Policy:就是安全策略,一个安全策略是level,compartment,group,label的集合。
Level:等级,这是最基础的安全控制等级,必须设置。
Compartment:分隔(这不是官方翻译),提供第二级的安全控制,是可选的。 Group:组(这不是官方翻译),提供第三级的安全控制,是可选的。
Label:标签,最终体现到每一行上的安全标签,必须设置。只有用户被赋予的标签和此行上的标签相同或者等级更高的时候,该行才能够被用户存取。
3、测试步骤
我们需要用到3个用户,一个是拥有zftang_test_01表的test用户,一个是用于设置OLS策略的LBACSYS用户,另外一个是不受OLS策略制约的SYS用户(用来方便的插入和更新测试数据)。
? ? ? ? ? ? ? ? ?
安装Oracle Label Security(每个数据库进行一次) 创建安全性策略 定义级别
定义区间(compartment)(可选) 定义分组(可选) 创建标签
将标签策略应用于表 指定用户标签
指定正常授权级别的访问
? 为表中的行指定合适的标签
3.1、安装Oracle Label Security
在安装数据库软件的时候必须保证选择了Oracle Label Security组件,否则所有功能都无法使用。如果当时没有选择,可以按照如下方法安装OLC
1、重新运行Universal Installer进行安装,选择定制,下一步;
2、勾选ORACLE LABEL SECRITY组建进行安装;
3、继续下一步,完成安装;
LBACSYS用户可以利用$ORACLE_HOME/rdbms/admin/catols.sql创建。 以SYS用户登陆PLSQL,打开命令行窗口,执行:@D:\\OraHome_1\\RDBMS\\ADMIN\\catols.sql;
在这个脚本的最后会自动关闭数据库,打开可以看到,最后面是(shutdown immediate)所以请不要在生产库上直接测试。
再次打开数据库,就可以使用LBACSYS用户登录了,默认密码就是lbacsys,如果在生产环境中,请立刻修改默认密码。