第 五 章 数据库安全策略 1
5.1 安全策略的定义 5.2 安全策略语言 5.3 安全策略模型 5.4 安全策略模型特性分析 5.5 安全策略的执行 本 章 概 要 5.1 安全策略的定义 5.2 安全策略语言 5.3 安全策略模型 5.4 安全策略模型特性分析 5.5 安全策略的执行 5.6 关系数据库的授权机制 2
5.1 安全策略的定义 安全策略:是粗线条描述安全需求以及规则的说明,是一组规定如何管理、保护和指派敏感信息的法律、规则及实践经验的集合。 3
保证数据库的存在安全。确保数据库系统的安全首先要确保数据库系统的存在安全。 数据库系统至少具有以下一些安全策略 保证数据库的存在安全。确保数据库系统的安全首先要确保数据库系统的存在安全。 保证数据库的可用性。数据库管理系统的可用性表现在两个方面:一是需要阻止发布某些非保护数据以防止敏感数据的泄漏;二是当两个用户同时请求同一纪录时进行仲裁。 保障数据库系统的机密性。主要包括用户身份认证、访问控制和可审计性等。 4
保证数据库的完整性。数据库的完整性包括物理完整性、逻辑完整性和元素完整性。物理完整性是指存储介质和运行环境的完整性。逻辑完整性主要有实体完整性和引用完整性。元素完整性是指数据库元素的正确性和准确性。 5
5.2 安全策略语言 安全策略语言用来描述定义不同层次的安全策略。 6
5.2.1 安全策略基本元素 安全策略定义语言具有以下一些基本概念与标记 主体(Subject):系统中的活动实体,主体在系统中的活动受安全策略控制。主体一般记为S={s1,…,sn}。 客体(Object):是系统中的被动实体,每个客体可以有自己的类型。客体一般记为O={o1,…,on}。 7
类型(Type):每个客体都可以有自己的类型。 角色(Role):在系统中进行特定活动所需权限的集合。角色可以被主体激活,主体可以同时担任不同的角色。角色一般记为R={r1,…,rn}。 任务(Task):任务一般记为TK={tk1,…,tkn}。 转换过程(TP,Tansformation procedure):可以是通常的读、写操作或一系列简单操作组合形成的特定应用过程。 8
5.2.2 SPSL SPSL是一种策略规范语言,它的主要目的是描述安全操作系统中使用的安全策略,即授权决策策略。授权决策是一个从请求到决策的映射AD={(q,d)|q ∈Q,d ∈D},其中,Q是请求集,D是决策集。 9
SPSL属于逻辑语言,主要由常量、变量和谓词三部分组成。主体集S、客体集O、动作集A和访问权限集SA均是SPSL的常量。SPSL的变量包括四个集合:Vs、Vo、Va、Vsa分别表示主体、客体、动作和带符号访问权限的变量集合。分别用st,ot,at和sat表示四个集合中的项。 SPSL的谓词有13个:cando(st,ot,sat),decando(st,ot,sat),do(s,o,sat),done(s,o,at),fail(s,o,at),din(s1,s2),in(s1,s2),cooper(e1,e2),conflict(e1,e2),super(e1,e2),owner(e1,e2),typeof(e,t)和spof(e)。 10
客体属主访问规则:cando(s1,o,a) ←owner(o,s1)。 简单的实例说明如何用SPSL描述自主访问控制策略。假定o∈O,s1∈S,s2∈S,s3∈S,g∈G,others=G-g,自主访问控制策略可表示为: 客体属主访问规则:cando(s1,o,a) ←owner(o,s1)。 同组用户访问规则:cando(s2,o,a’) ← cando(g,o,a)&in(s1,g)&in(s2,g)。 其他人访问规则:cando(s3,o,a”) ← cando(others,o,a’)& ﹁in(s3,g) 。 11
5.3 安全策略模型 安全模型的作用是在一个安全策略中,描述策略控制实体并且声明构成策略的规则。 12
5.3.1 状态机模型 状态机模型将系统描述为一个抽象的数学状态机。在这种模型里,状态变量表示机器的状态,随着系统的运行而不断地变化。 状态转移函数是对系统调用的抽象表示,精确地描述了状态的变化情况。主体和客体被模拟为集合S和O的函数。 13
下图是一个简单的状态机模型: q1 A B B B B qs qr 有机状态机模型 q0 A 14
开发一个状态机安全模型一般具有以下一些步骤 定义与安全有关的状态变量。 定义安全状态需满足的条件是静态表达式,表达了在状态转移期间,状态变量值之间必须保持的关系。 定义状态转移函数。 证明转移函数能供维持安全状态。 定义系统运行的初始状态,并用安全状态的定义证明初始状态是安全的。 15
转换函数的例子: Create-object(o,c) If o ∈O Then O’=O ∪{o}and oclass’(o)=c and s∈S,A’(s,o)= ф 16
采用有限状态机为某种安全策略构造安全模型的例子: 假设安全策略为: (1)当且仅当用户的认证等级高于文件的安全等级时,可以对文件进行读操作。 (2)当且仅当用户的认证等级低于文件的安全等级时,可以对文件进行写操作。 将其“翻译”成计算机语言。 17
根据上述对应关系,给定安全策略可以进一步表示: (1)当且仅当主体的访问等级高于客体的访问等级时,可以对客体进行读操作。 (2)当且仅当主体的访问等级低于客体的访问等级时,可以对客体进行写操作。 18
(1)sclass(s)>oclass(o)=>r∈A(s,o) 将这些与安全相关的状态变量符号化: 主体用S表示,客体用O表示,访问等级用class表示,主体s的访问等级表示为sclass(s),客体o的访问等级表示为oclass(o),A(s,o)为访问模式集合,则安全策略的形式化描述为: (1)sclass(s)>oclass(o)=>r∈A(s,o) (2)sclass(s)<oclass(o)=>w∈A(s,o) 19
该安全策略对应的安全状态可描述为:系统是安全的,当且仅当对于所有的s ∈ S,o ∈ O有 主体集S、客体集O、主体访问等级sclass、客体访问等级oclass和访问模式集合A(s,o)都是安全模型的状态变量。系统在任一时刻的状态可定义为状态变量的集合:State={S,O,sclass,oclass,A}。 该安全策略对应的安全状态可描述为:系统是安全的,当且仅当对于所有的s ∈ S,o ∈ O有 (1)If r ∈A(s,o),then sclass(s)>oclass(o) (2)If w ∈A(s,o),then sclass(s)<oclass(o) 20
定义状态转移函数是安全策略模型构造过程中很重要的一步,描述了系统的相应变化。此处涉及的状态转移函数有前面已介绍过的Create-object(o,c),设置主体s对客体o访问模式的Set_access(s,o,mode),证明状态转移函数是否正确,最后需要定义初始状态并证明其安全性。 21
5.3.2 Clark-Wilson完整性模型 Clark-Wilson模型对于许多商业系统的建模更加符合实际。该模型用程序作为主体和客体之间的中间控制层,主体被授权执行某些程序,客体可以通过特定的程序进行访问。 Clark-Wilson模型将从属于其完整性控制的数据定义为约束型数据项(CDI),而将不从属于完整性控制的数据定义为非约束型数据项(UDI)。 22
Clark-Wilson模型定义了两组过程:完整性验证过程(IVP)和转换过程(TP)。 Clark-Wilson模型采用了两个基本的方法,即所谓的严格转变(Well-Formed Transition)和责任分离(Segregation of Duties)。 严格转变是Clark-Wilson模型中保证应用完整性的一个机制。 责任分离的目的是保证数据对象与他所代表的现实世界对象的对应,而计算机本身并不能直接保证这种外部的一致性。 23
数据完整性Clark-Wilson模型有两类规则:证明规则(CR)和实施规则(ER)。 实施规则是与应用无关的安全功能。 证明规则是与具体应用相关的安全功能。 24
5.3.3 Harrison-Ruzzo-Ullman(HRU)模型 静态访问方式有读、写、执行和拥有等。 动态访问方式有对进程的控制权、授予/撤销权限等。 25
Enter r into A[Si,Oj],Si ∈S,Oj ∈O 操作顺序: S’=S,O’=O HRU模型的操作有六条,操作后状态变换表示为Q ├op Q’。其中符号A[Si,Oj]表示Si对Oj的访问权限集合,r表示某一权限,如读、写等。 (1)授予权限 命令形式: Enter r into A[Si,Oj],Si ∈S,Oj ∈O 操作顺序: S’=S,O’=O A’[Si,Oj]=A[Si,Oj] ∪{r}, A’[Sk,Ol]=A[Sk,Ol],k ≠i,l ≠j 26
Delete r from A[Si,Oj],Si ∈S,Oj ∈O 操作顺序: S’=S,O’=O (2)撤销权限 命令形式: Delete r from A[Si,Oj],Si ∈S,Oj ∈O 操作顺序: S’=S,O’=O A’[Si,Oj]=A[Si,Oj] -{r}, A’[Sk,Ol]=A[Sk,Ol],k ≠i,l ≠j 27
A’[S,O]=A[S,O] ,S⊂S’,O⊂O’ A’[Si,O]= φ,O⊂O’ A’[S,Oi]=φ,S⊂S’ (3)添加主体 命令形式: Create Subject Si,Si S 操作顺序: S’=S ∪{Si} ,O’=O∪ {Si} , A’[S,O]=A[S,O] ,S⊂S’,O⊂O’ A’[Si,O]= φ,O⊂O’ A’[S,Oi]=φ,S⊂S’ 28
Destroy Subject Si,Si ∈S 操作顺序: S’=S-{Si} ,O’=O-{Si} , (4)删除主体 命令形式: Destroy Subject Si,Si ∈S 操作顺序: S’=S-{Si} ,O’=O-{Si} , A’[S,O]=A[S,O] ,S’⊂S,O’⊂O 29
A’[S,O]=A[S,O] ,S⊂S’,O⊂O’ A’[S,Oi]=φ,S⊂S’ (5)添加客体 命令形式: Create Object Oi,Oi O 操作顺序: S’=S ,O’=O∪{Oi} , A’[S,O]=A[S,O] ,S⊂S’,O⊂O’ A’[S,Oi]=φ,S⊂S’ 30
Destroy Object Oi,Oi ∈O,OiS 操作顺序: S’=S,O’=O-{Oi} , (6)删除客体 命令形式: Destroy Object Oi,Oi ∈O,OiS 操作顺序: S’=S,O’=O-{Oi} , A’[S,O]=A[S,O] ,S⊂S’,O⊂O’ HRU模型逻辑关系明确,操作管理方便。但是效率低下,所以必须采用一定的方法来解决提高效率的问题。 31
5.3.4 中国墙模型 中国墙模型是一种同等的考虑机密性和完整性的安全策略模型,该模型主要用于解决商业上的利益冲突问题。 引入一个布尔矩阵N=S×O。 true, 如果主体s访问过客体o Ns,o false,如果主体s从未访问过客体o 32
允许主体S对客体O进行读访问,当且仅当以下任一个条件成立: (1)存在一个O’是S曾经访问过的客体,并且包含O’的数据集与包含O的数据集相同。 (2)对于所有曾经被S读取过的客体O’,O不和客体O’在同一利益冲突类内。 从条件(1)(2)可知,如果某个主体S读取了某一利益冲突类的任一个客体O,那么S之后只能读取与O属于同一个数据集的客体。一个利益冲突类包含N个公司数据集,那么读取这些数据集的客体至少为N个。 33
事实上,中国墙模型将数据分为有害数据和无害数据,分别表示不可以公开的数据和可以公开的公司数据。 (3)O是无害客体。 允许主体S对客体O进行写访问,当且仅当: (1)允许S对O进行读访问。 (2)对于所有有害客体O’,当O’与O在同一数据集中时,S能读O’。 34
5.3.5 信息流模型 另一类重要的安全策略则针对客体之间实际的信息传递进行控制,其中最主要的是信息流模型。 信息流模型考虑任何形式的信息流,可以是显式或隐式,而不只是通过访问操作的直接信息流。 35
信息流模型FM定义为五元组FM=<O,P,SC, ⊕,→>,其中: O={o1,o2,……}为一组带标签的客体集合,表示信息的存储,如文件、程序、变量及比特等。 P={p1,p2,……}是进程集合,表示与信息流有关的活动实体,所有信息流是由P产生的。 SC={sc1,sc2,……}是安全等级集合,与互不相关的离散的信息等级相对应。系统中每个客体oi被指派一个访问等级。 36
⊕是一个对安全等级作组合操作的二元操作符,他服从交换律、结合律,并且是封闭的。 →是一个流关系。用于决定在任何一对安全等级之间,信息是否能从一个安全等级流向另一个安全等级。 37
5.4 安全策略模型特性分析 保密性 完整性 多策略 应用领域 主要优点 主要缺点 状态机模型 支持 不支持 各个领域 能准确捕捉与问题相关的那些系统方面。有成熟的理论 定义状态转移函数和初始状态及其安全性证明比较困难 BLP模型 军事 将操作转化为规则,支持多级安全 过于抽象,实施困难,存在隐通道 Biba模型 商业 使用了层次级别 判定完整性等级和类别的标准不完善 CW模型 商业军事 引入访问控制元组概念,有效地实现责任隔离 难以实现 HRU模型 操作系统数据库系统 使用了访问控制表来实现访问控制 效率低下 38
同等的考虑机密性和完整性,后续操作基于历史操作 限制随着主体访问客体数量的增加而增加 保密性 完整性 多策略 应用领域 主要优点 主要缺点 中国墙模型 支持 不支持 商业 同等的考虑机密性和完整性,后续操作基于历史操作 限制随着主体访问客体数量的增加而增加 信息流模型 各个领域 比访问控制模型的精确度要高,引入了格的概念 不能解决多安全级别信息处理的问题,流分析复杂 39
5.5 安全策略的执行 5.5.1 基于SQL的安全策略执行 SQL语言可以定义安全策略。最简单的情 形就是SQL语言具有GRANT和REVOKE子构 件,可以向用户授予访问权限,撤销用 户访问权限。 40
例如,如果Peter可以分别读取name和salary,但是不能同时读取这两个属性,可以采用SQL类型语言定义如下: GRANT Peter READ emp.salary; GRANT Peter READ emp.name; NOT GRANT Peter READ Together(emp.name,emp.salary); 41
如果不允许Peter访问薪金超过50000元的雇员信息,可以定义如下: GRANT Peter READ emp WHERE emp.salary<50000; 42
5.5.2 查询修改 查询修改(Query Modification)是基于SQL的安全策略执行机制的重要功能,其核心思想是根据约束修改查询,这种方法对于强制安全策略和自主安全策略均可有效使用。 43
AND dept is NOT security; 假定Peter请求查询emp的所有元组,根据安全策略,Peter无法查询salary>=50000且雇员不是安全部门的记录,则查询修改如下所示: SELECT * FROM emp; 修改为 SELECT * FROM emp WHERE salary<50000 AND dept is NOT security; 44
5.6 关系数据库的授权机制 授权机制是关系数据库实现安全与保护的重要途径。 授权机制的总体目标是提供保护与安全控制,允许授权用户合法地访问信息。 45
5.6.1 授权规则 肯定授权(Positive Authorization)。 否定授权(Negative Authorization)。 冲突解决(Conflict Resolution)。 强授权与弱授权(Strong and Weak Authorization)。 授权规则的传播(Propagation of Authorization Rules)。 特殊规则(Special Rules)。 一致和完整性规则(Consistency and Completeness of Rules)。 46
5.6.2 GRANT命令 授权机制贯穿于关系及视图动态创建、动态撤销整个过程,包括授予(GRANT)、检查(CHECKING)、撤销(REVOKE)等动态环节。 通常,授权可以通过访问控制列表方式实现,这种方式支持撤销。 47
READ:允许通过查询使用Table,包括读 取关系元组、根据关系定义视图等。 INSERT:向Table添加新行(元组)。 在System R中,任意用户可以授权创建新Table。创建者被惟一全权授予Table的所有访问控制权限。如果希望其他用户共享某些访问控制,必须向各种用户授予指定的权限。可以授予的权限包括: READ:允许通过查询使用Table,包括读 取关系元组、根据关系定义视图等。 INSERT:向Table添加新行(元组)。 DELETE:从Table中删除行(元组)。 UPDATE:修改Table中现存数据,可以限 制于一定的列(属性)。 DROP:删除整个Table。 48
可以对表所有权先进行授权,或者授予指定系列的权限,或者授予明确声明以外所有权限。 授权的语法格式基本类似,可以表示为:GRANT[ALL RIGHTS|<privileges>|ALL BUT<privileges>] ON <table> TO <user-list> [WITH GRAND OPTION]。 可以对表所有权先进行授权,或者授予指定系列的权限,或者授予明确声明以外所有权限。 49
A:GRANT READ,INSERT ON EMP TO B WITH GRANT OPTION 例如,被授予者进一步向其他用户授权 A:GRANT READ,INSERT ON EMP TO B WITH GRANT OPTION A:GRANT READ ON EMP TO C WITH GRANT OPTION B:GRANT READ,INSERT ON EMP TO C 50
5.6.3 REVOKE命令 REVOKE的语法格式基本类似,可以表示为:REVOKE [ALL RIGHTS|<privileges>] ON <table> FROM <user-list>。 允许REVOKE先前授予的权限增加了授权机制的复杂性。仅采用两个元组表示用户在表上的权限并不充分,必须同时保留授权者的身份信息,因为一般指允许用户撤销由他先前授予的权限。 51
A:GRANT READ,INSERT,UPDATE ON EMP TO C 例如,执行授权撤销序列后的权限: A:GRANT READ,INSERT,UPDATE ON EMP TO C B:GRANT READ,UPDATE ON EMP TO C A:REVOKE INSERT,UPDATE ON EMP FROM C 52
5.6.4 递归REVOKE 递归撤销现象可以通过下面的实例说明 A:GRANT ALL RIGHTS ON EMP TO C WITH GRANT OPTION C:GRANT ALL RIGHTS ON EMP TO D A:REVOKE ALL RIGHTS ON EMP FROM C 53
小结 对数据库的安全策略语言、策略模型、策略的执行机 制做了全面的介绍,同时重点介绍了关于数据库授权 策略实现机制。 选择合适的安全策略,构建相应的安全模型在数据库 系统的开发应用过程中有着举足轻重的作用。安全策 略及模型从集中于面向军事领域的机密性要求,转而 面向商业领域的完整性要求,又发展到支持策略独立 性,进而向支持多种安全策略和动态安全策略方向发 展。更为主要的是,随着人们对安全威胁的认识逐步 加深以及各种安全技术的不断发展,采取多种安全机 制支持多种安全策略逐渐成为安全系统研究的共同特 征。 54