540 likes | 665 Views
第 五 章 数据库安全策略. 1. 本 章 概 要. 5.1 安全策略的定义 5.2 安全策略语言 5.3 安全策略模型 5.4 安全策略模型特性分析 5.5 安全策略的执行 5.6 关系数据库的授权机制. 2. 安全策略: 是粗线条描述安全需求以及规则的说明,是一组规定如何管理、保护和指派敏感信息的法律、规则及实践经验的集合。. 5.1 安全策略的定义. 3. 数据库系统至少具有以下一些安全策略 保证数据库的存在安全。 确保数据库系统的安全首先要确保数据库系统的存在安全。
E N D
第 五 章 数据库安全策略 1
本 章 概 要 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属于逻辑语言,主要由常量、变量和谓词三部分组成。主体集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
简单的实例说明如何用SPSL描述自主访问控制策略。假定o∈O,s1∈S,s2∈S,s3∈S,g∈G,others=G-g,自主访问控制策略可表示为:简单的实例说明如何用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 A qsqr A 有机状态机模型 A q0 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
将这些与安全相关的状态变量符号化: 主体用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、客体集O、主体访问等级sclass、客体访问等级oclass和访问模式集合A(s,o)都是安全模型的状态变量。系统在任一时刻的状态可定义为状态变量的集合:State={S,O,sclass,oclass,A}。主体集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),证明状态转移函数是否正确,最后需要定义初始状态并证明其安全性。定义状态转移函数是安全策略模型构造过程中很重要的一步,描述了系统的相应变化。此处涉及的状态转移函数有前面已介绍过的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模型定义了两组过程:完整性验证过程(IVP)和转换过程(TP)。 Clark-Wilson模型采用了两个基本的方法,即所谓的严格转变(Well-Formed Transition)和责任分离(Segregation of Duties)。 严格转变是Clark-Wilson模型中保证应用完整性的一个机制。 责任分离的目的是保证数据对象与他所代表的现实世界对象的对应,而计算机本身并不能直接保证这种外部的一致性。 23
数据完整性Clark-Wilson模型有两类规则:证明规则(CR)和实施规则(ER)。数据完整性Clark-Wilson模型有两类规则:证明规则(CR)和实施规则(ER)。 实施规则是与应用无关的安全功能。 证明规则是与具体应用相关的安全功能。 24
5.3.3 Harrison-Ruzzo-Ullman(HRU)模型 HRU模型的访问方式有两种:静态和动态。 静态访问方式有读、写、执行和拥有等。 动态访问方式有对进程的控制权、授予/撤销权限等。 25
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
(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
(3)添加主体 命令形式: Create Subject Si,SiS 操作顺序: 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
(4)删除主体 命令形式: Destroy Subject Si,Si ∈S 操作顺序: S’=S-{Si} ,O’=O-{Si} , A’[S,O]=A[S,O] ,S’⊂S,O’⊂O 29
(5)添加客体 命令形式: Create Object Oi,OiO 操作顺序: S’=S ,O’=O∪{Oi} , A’[S,O]=A[S,O] ,S⊂S’,O⊂O’ A’[S,Oi]=φ,S⊂S’ 30
(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进行读访问,当且仅当以下任一个条件成立:允许主体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.5.1 基于SQL的安全策略执行 SQL语言可以定义安全策略。最简单的情形就是SQL语言具有GRANT和REVOKE子构件,可以向用户授予访问权限,撤销用户访问权限。 5.5 安全策略的执行 40
例如,如果Peter可以分别读取name和salary,但是不能同时读取这两个属性,可以采用SQL类型语言定义如下:例如,如果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元的雇员信息,可以定义如下:如果不允许Peter访问薪金超过50000元的雇员信息,可以定义如下: GRANT Peter READ emp WHERE emp.salary<50000; 42
5.5.2 查询修改 查询修改(Query Modification)是基于SQL的安全策略执行机制的重要功能,其核心思想是根据约束修改查询,这种方法对于强制安全策略和自主安全策略均可有效使用。 43
假定Peter请求查询emp的所有元组,根据安全策略,Peter无法查询salary>=50000且雇员不是安全部门的记录,则查询修改如下所示:假定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
在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 ON EMP TO C WITH GRANT OPTION B:GRANT READ,INSERT ON EMP TO C 50