Download presentation
Presentation is loading. Please wait.
1
第16讲 数据库系统的增强安全性 第7章:数据库系统的增强安全性
2
本讲内容 主题:数据库系统的增强安全性 教材内容: 第7.1节:虚拟专用数据库机制 第7.2节:基于标签的安全机制
© 2009 电子工业出版社
3
VPD安全机制概貌 Oracle DBMS实现的安全机制 功能:基于内容的访问控制 粒度:记录级访问控制
安全策略的配置:安全管理员 关键技术:用谓词给SQL语句的WHERE子句添加限定条件 © 2009 电子工业出版社
4
VPD机制的用户印象 不同用户似乎操作不同的DB对象,虽然实际上是同一个对象。 这由透明的WHERE子句条件约束实现 用户甲 用户乙
© 2009 电子工业出版社
5
VPD机制的运用方法 安全管理员针对DB对象及其上的操作设定安全策略 用户对DB对象进行操作时,安全策略约束用户的操作。
每个安全策略(规则)由一个策略函数定义 每个策略函数返回的字符串构成一个谓词 用户对DB对象进行操作时,安全策略约束用户的操作。 谓词作为约束条件透明地附加到SQL操作语句的WHERE子句上 © 2009 电子工业出版社
6
安全策略的设定方法 在应用程序中编写代码描述策略函数 在应用程序中调用VPD机制提供的DBMS存储过程根据策略函数建立安全策略
描述语句:CREATE OR REPLACE FUNCTION 在应用程序中调用VPD机制提供的DBMS存储过程根据策略函数建立安全策略 存储过程:DBMS_RLS.ADD_POLICY 上述两项应用程序功能由安全管理员使用 第一项功能描述安全策略(规则) 第二项功能使安全策略(规则)生效 © 2009 电子工业出版社
7
策略函数的定义方式 函数名 DB模式名 DB对象名 对象字段名 © 2009 电子工业出版社
8
安全策略的建立方式 DB模式名 DB对象名 策略名 策略函数名 © 2009 电子工业出版社
9
安全策略的作用方式 用户Scott执行以下操作: 实际执行的是以下操作: WHERE子句由VPD机制自动添加,对用户透明。
SELECT DISTINCT deptno FROM emp; 实际执行的是以下操作: SELECT DISTINCT deptno FROM emp WHERE deptno != 10; WHERE子句由VPD机制自动添加,对用户透明。 © 2009 电子工业出版社
10
策略函数与安全策略 先定义策略函数 再引用策略函数建立安全策略 建立安全策略后,可修改策略函数,无须重新建立安全策略。
实际上是使安全策略生效 建立安全策略后,可修改策略函数,无须重新建立安全策略。 VPD机制自动按新的策略函数实施访问控制 © 2009 电子工业出版社
11
安全策略与DB操作 常见DB操作包括SELECT、INSERT、UPDATE、DELETE或INDEX等。
默认情况下,安全策略对各类操作均实施控制。 建立安全策略时,可限定该策略仅对指定操作类型实施控制。 用STATEMENT_TYPES条款描述 © 2009 电子工业出版社
12
安全策略与操作类型关联的方法 在调用存储过程建立安全策略时指明 使该安全策略仅对INSERT和UPDATE操作生效 要求操作结果满足约束条件
© 2009 电子工业出版社
13
环境信息的利用 哪个用户正在执行操作? 当前用户的用户名是什么? 当前用户所在部门的部门号是什么?
“会话用户”或“当前用户” 当前用户的用户名是什么? 当前用户所在部门的部门号是什么? 由系统函数SYS_CONTEXT提供环境信息 当前用户的用户名: sys_context(''userenv'',''session_user'') 当前用户所在部门的部门号: sys_context(''people_ctx'',''deptno'') 注,userenv:用户环境,people_ctx:表people的上下文,deptno:表people中表示部门号的字段。 © 2009 电子工业出版社
14
用户环境信息应用示例 约束条件:当用户名等于当前用户时 © 2009 电子工业出版社
15
部门环境信息应用示例 约束条件:当部门号等于当前部门时 © 2009 电子工业出版社
16
针对UPDATE操作的访问控制 © 2009 电子工业出版社
17
多个安全策略共存问题 VPD机制以“与”运算确定约束条件 策略冲突时,条件为“假”,访问将被拒绝。
借助环境参数,有选择地使策略生效,可避免策略冲突。 © 2009 电子工业出版社
18
针对字段的访问控制 规则:当且仅当访问涉及敏感字段时控制生效。 表people中的salary字段被定义为敏感字段
© 2009 电子工业出版社
19
VPD机制的“免制约”特权 由安全管理员启用的安全策略控制全体用户对DB对象的访问行为,DBA也不例外。
“免制约”特权指“EXEMPT ACCESS POLICY”授权 发放授权的方式: GRANT EXEMPT ACCESS POLICY TO SYSTEM; 该授权使得用户System获得“免制约”特权 © 2009 电子工业出版社
20
OLS安全机制概貌 Oracle DBMS实现的安全机制 粒度:记录级访问控制 模型基础:BLP模型
© 2009 电子工业出版社
21
标签与访问控制 © 2009 电子工业出版社
22
OLS机制的标签 三元组:<等级,类别,组别> 一般表示:(等级:类别:组别) 有效形式: 示例:
“等级”为数值型,“类别”和“组别”为集合型。 一般表示:(等级:类别:组别) 有效形式: (等级::)、(等级:类别:)、(等级:类别:组别) (等级::组别) 示例: (绝密::)、(机密::)、(秘密::)、(非密::) (绝密:海军:)、(绝密:海军,空军:) (机密:海军,空军:纽约)、(秘密:陆军:纽约,夏威夷) © 2009 电子工业出版社
23
基于标签的“读”访问判定 © 2009 电子工业出版社
24
基于标签的“写”访问判定 © 2009 电子工业出版社
25
OLS机制的应用方法 创建安全策略 定义标签元素 定义标签 启用安全策略 给用户分配标签 设立一个存放OLS机制配置信息的容器
存储过程:sa_sysdba.create_policy 定义标签元素 定义等级、类别、组别等元素 存储过程:sa_components.create_level/compartment/group 定义标签 利用元素构造标签 存储过程:sa_label_admin.create_label 启用安全策略 把标签控制信息落实到DB表中(包括添加标签字段) 存储过程:sa_policy_admin.apply_table_policy 给用户分配标签 设置用户的标签属性(蕴含访问授权) 存储过程:sa_user_admin.set_user_labels © 2009 电子工业出版社
26
示例样本 以某跨国公司的信息发布数据库为背景 安全策略名:ESDB 等级元素: 类别元素: 组别元素: 用户群名称: DB模式名:SCOTT
EXEC、MGR、EMP(对应执行层、经理层、职员层) 类别元素: SALES、DEV、IS(对应营销部、开发部、内援部) 组别元素: CORP、US、NY、LA、EMEA、APAC(对应全公司范围、美国区域、纽约区域、洛杉矶区域、欧洲和中东及非洲区域、亚太区域) 用户群名称: ALL_EMPLOYEES、ALL_MANAGER、ALL_EXECS DB模式名:SCOTT DB表名:ANNOUNCEMENTS 标签字段名:ROWLABEL © 2009 电子工业出版社
27
OLS安全策略的创建 编写创建安全策略的代码,由安全管理员执行。 OLS默认的安全管理员是LBACSYS。 © 2009 电子工业出版社
28
OLS安全策略的启用 假如标签元素和标签等均已定义好,则可启用已创建的安全策略。比如,把策略ESDB实施到模式SCOTT中的表ANNOUNCEMENTS上。 选项table_options: NO_CONTROL:暂不控制 READ_CONTROL:控制“读”操作 WRITE_CONTROL:控制“写”操作 © 2009 电子工业出版社
29
OLS安全策略的重启 如想变更安全策略的选项等信息,可先把它停用再重新启用。 © 2009 电子工业出版社
30
等级元素的定义 值为9000、8000、7000的三个等级元素的定义: © 2009 电子工业出版社
31
单元素标签的定义 标签标识号label_tag必须唯一,整个DBS的所有安全策略中标签的标识号不能有重号。 © 2009 电子工业出版社
32
给用户分配单元素标签 标签可直接分配给DB用户,也可以分配给用户群,还可以分配给应用系统、IP地址域、或其他相关对象。
© 2009 电子工业出版社
33
类别元素的定义 类别号comp_num仅用作标识符,不表示类别的大小。 © 2009 电子工业出版社
34
双元素标签的定义 含等级元素和类别元素的标签的定义: © 2009 电子工业出版社
35
给用户分配双元素标签 给用户分配含等级元素和类别元素的标签: © 2009 电子工业出版社
36
组别元素的定义 组别之间可能存在父子关系,例如,组别CORP是组别US的父组。 © 2009 电子工业出版社
37
三元素标签的定义 含等级、类别、组别元素的标签的定义: © 2009 电子工业出版社
38
给用户分配三元素标签 给用户分配含等级、类别、组别元素的标签: © 2009 电子工业出版社
39
标签的取值范围与默认值 可能取值:可以分配给用户的标签的取值范围 默认会话标签:当前会话采用的标签值
默认记录标签:有LABEL_DEFAULT选项时系统自动分配给记录的标签值 © 2009 电子工业出版社
40
等级元素取值范围与默认值的设定 与用户SCOTT的标签相关的设定方法: © 2009 电子工业出版社
41
类别元素的添加方法 把类别DEV添加到用户SCOTT的标签中,授予对该类别的“读”和“写”权,并将它置于会话默认值和记录默认值中。
© 2009 电子工业出版社
42
组别元素的添加方法 把组别US添加到用户SCOTT的标签中,授予对该组别的“读”和“写”权,并将它置于会话默认值和记录默认值中。
© 2009 电子工业出版社
43
使自动赋值和访问控制生效 为“读”和”写”控制及自动赋默认值而重启安全策略: © 2009 电子工业出版社
44
问题? © 2009 电子工业出版社
Similar presentations