DB2 数据库特权授予的方法和技巧(4)
LBAC 由安全管理员 通过创建安全策略来设置。每个表只能由一个安全策略来控制,但是系统中可以有任意数量的安全策略。设置 LBAC 需要几个步骤。必须做的第一件事情是,决定对于您的数据需要什么类型的访问控制。
我们做出以下假设。在您的组织中有三类人。
名称 | 在组织中的角色 |
Jane | 人力资源执行官 |
Joe | D11 和 E21 部门的经理 |
Frank | 团队主管 - A00 部门 |
现在,在组织的数据库中有一个定义职员信息的表。这个表类似于 SAMPLE 数据库中的 EMP 表。它包含关于职员和他们所属的部门的数据。它现在的定义如下:
db2 => describe select * from emp
SQLDA Information
sqldaid : SQLDA sqldabc: 896 sqln: 20 sqld: 14
Column Information
sqltype sqllen sqlname.data sqlname.length
-------------------- ------ ------------------------------ --------------
452 CHARACTER 6 EMPNO 5
448 VARCHAR 12 FIRSTNME 8
453 CHARACTER 1 MIDINIT 7
448 VARCHAR 15 LASTNAME 8
453 CHARACTER 3 WORKDEPT 8
453 CHARACTER 4 PHONENO 7
385 DATE 10 HIREDATE 8
453 CHARACTER 8 JOB 3
500 SMALLINT 2 EDLEVEL 7
453 CHARACTER 1 SEX 3
385 DATE 10 BIRTHDATE 9
485 DECIMAL 9, 2 SALARY 6
485 DECIMAL 9, 2 BONUS 5
485 DECIMAL 9, 2 COMM 4
组织会定期对规则进行审计。审计指出,职员不应该能够访问机密的数据。规则规定,执行官对所有职员记录有完全的读/写访问权,经理对自己部门的职员记录有读/写访问权,而团队主管只能读取部门中他们领导的职员的记录。
我们要设置 LBAC 安全策略来实现这些规则。
1、定义安全策略和标签,并将安全标签授予用户
2、在 EMP 表中添加安全标签列并将安全策略连接到它
定义安全策略和标签
为了定义安全策略和标签,需要 SECADM 权限。
步骤 1a. 创建安全标签组件
首先,需要决定对于这个策略最合适的安全组件类型。在这个示例中,最合适的策略类型是 “TREE”。Tree 策略意味着可以定义一组标签,让子组件拥有它们的父组件的权限的子集。在这个示例中,创建一个名为 “J_DEPT” 的安全组件。
CREATE SECURITY LABEL COMPONENT J_DEPT
TREE ('HR_EXECUTIVE' ROOT,
'MAN_D11_E21' UNDER 'HR_EXECUTIVE'
'A00' UNDER 'HR_EXECUTIVE',
'B01' UNDER 'HR_EXECUTIVE',
'C01' UNDER 'HR_EXECUTIVE',
'D11' UNDER 'MAN_D11_E21',
'D21' UNDER 'HR_EXECUTIVE',
'E01' UNDER 'HR_EXECUTIVE',
'E11' UNDER 'HR_EXECUTIVE',
'E21' UNDER 'MAN_D11_E21'
)
上面的布局说明根是 HR_EXECUTIVE,这个执行官领导的所有部门都是它的子组件。
步骤 1b. 定义安全策略
在上面的示例中,设置 LBAC 所需的下一个步骤是定义与上面的安全标签组件相关联的策略。一个安全策略可以使用多个组件。
CREATE SECURITY POLICY J_DEPT_POLICY
COMPONENTS J_DEPT
WITH DB2LBACRULES
RESTRICT NOT AUTHORIZED WRITE SECURITY LABEL