1 DB2 LBAC
1.1安全元素
(1)安全标记组件
支持三种类型的组件:数组、集合和树型。
a)创建数组组件
CREATE SECURITY LABEL COMPONENT level ARRAY [ ’Top Secret’, ’Secret’, ’Employee’, ’Public’ ]
b)创建集合组件
CREATE SECURITY LABEL COMPONENT project Set ={’A’, ’B’, ’C’, ’D’}
c)创建树型组件
CREATE SECURITY LABEL COMPONENT department Tree={’G1’ ROOT, ’G2’ UNDER ’G1’, ’G2’ UNDER ’G1’}
其中每个元素的名称不能超过32个字节,且同一组件内名称不能重复;数组最多可以包含65535个元素,集合和树型最多能包含64个元素。
(2)安全策略
创建一个安全策略:
CREATE SECURITY POLICY DataAccess COMPONENTS level,department WITH DB2LABCRULES
定义一个策略要指定标记组件和访问规则。每个策略最多只能包含16个标记组件。系统现在只支持一中访问规则DB2LABCRULES,这个在访问规则小节中详细讲述。
(3)安全标记
创建一个安全标记:
以下是引用片段: CREATE SECURITY LABEL DataAccess.ManagerLabel COMPONENT level ’secret’ project ’A’, ’B’, ’C’ department ’G1’; |
安全标记可以应用到用户、行和列上。在插入数据时,也可以指定直接指定安全标记串,规则为按策略中组件的顺序,依次指定组件值,同一个组件的不同值用逗号隔开,不同组件之间用冒号隔开。
1.2策略应用
(1)用户安全标记
授予安全标记给用户时,同时可以指定访问权限。
GRANT SECURITY LABEL DataAccess.ManagerLabel TO USER JOE FOR READ ACCESS;
有三类访问权限:READ ACCESS、WRITE ACCESS和ALL ACCESS。如果读写安全标记同时存在,必须满足如下条件:数组类型组件的值,两个安全标记中必须相同;集合类型组件的值,写访问权限安全标记必须包含于读访问权限安全标记中;树类型组件的值,写访问权限安全标记必须和读访问权限安全标记相同或者其子孙节点。
其中一个用户能被授予多个安全标记,但对于一个安全策略中的标记最多只能授予一个读访问权限安全标记和一个写访问权限安全标记。
(2)行级安全标记
使用安全标记在行级保护表。
以下是引用片段: CREATE TABLE T1 ( A DB2SECURITYLABEL, B INTEGER, C CHAR(5)) SECURITY POLICY DataAccess |
DB2SECURITYLABEL是标记列的类型,实际内部处理为VARBINARY(128)。标记列隐含是NOT NULL WITH DEFAULT,默认值是用户的写安全标记。
(3)列级安全标记
使用安全标记在列级保护表。
以下是引用片段: CREATE TABLE T1 ( A CHAR(8) SECURED WITH ManagerLabel, B INTEGER, C CHAR(5)) SECURITY POLICY DataAccess |