标记安全标记实际是利用列级安全标记实现。
以下是引用片段: CREATE TABLE T1 ( A CHAR(8) SECURED WITH ManagerLabel, B INTEGER SECURED WITH ManagerLabel, C CHAR(5) SECURED WITH ManagerLabel) SECURITY POLICY DataAccess |
在所有的列上设置同一个安全标记,把一个表作为一个整体和一个安全标记关联,这样节约了行级安全标记比较的时间开销和存储的空间开销。
注意:一个表上只能有一个安全策略,一个列上也只能使用表中安全策略的一个标记,一个表上也只能有一个行级标记列。
1.3访问规则
创建安全策略的时候,就必须指定标记的比较规则。DB2LABCRULES为现有的唯一比较规则,分为读规则和写规则。
读规则:
写规则:
通过DB2LBACREADARRAY和DB2LBACWRITEARRAY可以看到,读写规则实际是“同级写,向下读”。
1.4访问特权
授予用户特权:
GRANT EXEMPTION ON RULE DB2LBACREADSET FOR DataAccess TO USER JOE
这里特权的含义就是在对指定规则的免除,即用户在访问数据时不用遵照指定规则。
特权的类型如下:
1.5系统冲突
(1)与视图的冲突:用户访问视图的用户的标记去访问基表,即直接对基表实施标记保护。
(2)与参照完整性的冲突:不对内部生成的引用表扫描应用 LBAC 读访问规则;不对内部生成的被引用表扫描应用 LBAC 读访问规则;当对引用表执行 CASCADE 操作时,应用 LBAC 写规则。
(3)与CHECK约束的冲突:在验证CHECK约束时,不应用LBAC读规则。
(4)与主键和唯一键约束的冲突:在验证一个主键或唯一键约束时,不应用LBAC规则。(如果推理信息是一个问题,那么对唯一键的列加一个列标记吧)
(5)与索引覆盖的冲突:系统优化,直接使用索引获取数据时,如果索引列中包含标记列,则执行该优化,否则不执行该优化。
(6)可以和水平分区相结合。
1.6系统权限
(1)安全管理员权限(SECADM),执行如下操作需要该权限。
SYSADM是唯一可以授予SECADM权的用户,其并不固有的能访问一个受保护的表。
(2)SETSESSIONUSER权限
改变当前用户授权ID到一个不同的授权ID,实际就是切换用户来访问不同的数据。SETSESSIONUSER能被授予给一个用户或组,该权限允许拥有者切换ID到任何一个拥有该权限的用户ID。切换语句为SET SESSION AUTHORIZATION。
2 ORACLE LABEL SECURITY
2.1安全元素
(1)标记组件
有三种不同的组件:级、格和组。
a)级(level)
级用于标识数据的敏感度的级别,数据越敏感其级越高。每