数据库安全保护_第1页
数据库安全保护_第2页
数据库安全保护_第3页
数据库安全保护_第4页
数据库安全保护_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章数据库安全保护1北京林业大学软件教研室5.1数据库的安全性5.2完整性控制5.3并发控制与封锁5.4数据库的恢复2北京林业大学软件教研室5.1数据库的安全性5.1.1数据库安全性的含义数据库的安全性是指保护数据库以防止非法使用所造成的数据泄露、更改或破坏。安全性问题有许多方面:(1)法律、社会和伦理方面时问题。(2)物理控制方面的问题。(3)政策方面的问题。(4)运行方面的问题。(5)硬件控制方面的问题。(6)操作系统安全性方面的问题。(7)数据库系统本身的安全性方面的问题。3北京林业大学软件教研室5.1.2安全性控制的一般方法安全性控制是指要尽可能地杜绝所有可能的数据库非法访问。图5-1安全控制模型

4北京林业大学软件教研室安全性控制的一般方法用户标识和鉴定用户存取权限控制定义视图数据加密

审计(Audit)5北京林业大学软件教研室用户标识和鉴定用户标识和鉴定是由系统提供一定的方式让用户标识自己的名字或身份,系统内部记录着所有合法用户的标识,每次用户要求进入系统时,由系统进行核实,通过鉴定后才提供机器的使用权。用户标识和鉴定的方法用一个用户名或用户标识符来标明用户的身份,系统以此来鉴别用户的合法性。用户标识符是用户公开的标识,它不足以成为鉴别用户身份的凭证。通过用户名和口令来鉴定用户的方法简单易行,但该方法在使用时,由于用户名和口令的产生和使用比较简单,也容易被窃取,因此还可采用更复杂的方法。6北京林业大学软件教研室授权表用户标识数据对象操作类型用户存取权限控制用户存取权限指的是不同的用户对于不同的数据对

象允许执行的操作权限。在数据库系统中,定义用户存取权限称为授权。这些授权定义经过编译后以一张授权表的形式存放

在数据字典中。7北京林业大学软件教研室数据对象操作类型模式模式建立、修改、检索外模式建立、修改、检索内模式建立、修改、检索数据表查找、插入、修改、删除属性列查找、插入、修改、删除关系系统中的存取权限8北京林业大学软件教研室对于授权表,衡量授权机制的一个重要指标就是授权粒度,即可以定义的数据对象的范围,在关系数据库中,授权粒度包括关系、记录或属性。

授权粒度越细,授权子系统就越灵活,能够提供的安全性就越完善。9北京林业大学软件教研室数据加密加密的基本思想是根据一定的算法将原始数据(术语为明文)加密成为不可直接识别的格式(术语为密文),数据以密文的形式存储和传输。加密方法:替换方法,该方法使用密钥将明文中的每一个字符转换为密文中的字符。转换方法,该方法将明文中的字符按不同的顺序重新排列。通常将这两种方法结合起来使用,就可以达到相当高的安全程度。10北京林业大学软件教研室审计审计功能是一种监视措施,它跟踪记录有关数据的访问活动。使用审计功能把用户对数据库的所有操作自动记录下来,存放在一个特殊文件中,即审计日志中。记录的内容一般包括:操作类型(如修改、查询等),操作终端标识与操作者标识,操作日期和时间,操作所涉及到的相关数据(如基本表、视图、记录、属性等),数据的前象和后象等。11北京林业大学软件教研室5.1.3SQLServer2008的数据安全性机制第一层安全性是SQLServer服务器级别的安全性,即必须具有正确的服务器登录账号和密码才能连接到SQLServer服务器。第二层安全性是数据库级别的安全性,即是否具有访问某个数据库的权利。第三层安全性是数据库对象级别的安全性,即用户想要访问数据库里的对象时,必须事先被赋予相应的访问权限,否则系统将拒绝访问。

SQLServer2008的安全模型分为三层结构,分别为服务器安全管理、数据库安全管理和数据库对象的访问权限管理。12北京林业大学软件教研室5.1.4SQLServer2008的身份验证模式Windows身份验证模式在该验证模式下,SQLServer2008使用Windows操作系统来对登录的账号进行身份验证,支持Windows操作系统的密码策略和锁写策略,账号和密码保存在Windows操作系统的账户数据库中,是一个系统文件。Windows验证模式下主要有以下优点:(1)数据库管理员的工作可以集中在管理数据库方面,而不是管理用户账户。(2)Windows有着更强的用户账户管理工具。可以设置账户锁定、密码期限等。(3)Windows的组策略支持多个用户同时被授权访问SQLServer。如果网络中有多个SQLServer服务器,就可以选择通过Windows身份验证机制来完成。13北京林业大学软件教研室TCP/IPSockets命名管道SQLServer身份验证模式Windows身份验证模式混合身份验证模式混合身份验证模式允许以SQLServer身份验证模式或者Windows身份验证模式来进行验证。混合验证模式具有以下优点:(1)创建了Windows之上的另外一个安全层次。(2)支持更大范围的用户,如非Windows客户、Novell网用户等。(3)一个应用程序可以使用单个的SQLServer登录账号和口令。14北京林业大学软件教研室5.1.5SQLServer2008的登录账号和服务器角色在SQLServer中,账号有两种:一种是登录服务器的登录账号(LoginName),另外一种是使用数据库的用户账号(UserName)。创建登录账号

(1)在【对象资源管理器】中,展开【安全性】结点,然后右键单击【登录名】,在弹出的快捷菜单中选择【新建登录名】。(2)在“登录名-新建”对话框中,选择“常规”页。(3)在“登录名”文本框中输入要创建的登录账号的名称,单击“SQLServer身份验证”单选钮,并输入密码,然后在“默认数据库”选项组中,选择数据库下拉列表中的某个数据库,表示该登录账号默认登录到这个数据库中。

15北京林业大学软件教研室

(4)在“登录名-新建”对话框中,选择“服务器角色”页,这里可以选择将该登录账号添加到某个服务器角色中成为其成员,并自动具有该服务器角色的权限。其中,public角色自动选中,并且不能删除。

(5)设置完所有需要设置的选项之后,单击【确定】按钮即可创建登录账号。修改登陆账号修改登录账号的过程和创建登录账号的过程类似,在【对象资源管理器】中,展开【安全性】结点下面的【登录名】结点,然后右键单击要修改的登录名,在弹出的快捷菜单中选择【属性】菜单,即可打开【登录属性】对话框,接下来就可以对该登录账号进行修改。16北京林业大学软件教研室SQLServer的服务器角色

角色(Role)是对权限集中管理的一种机制,将不同的权限组合在一起就形成了一种角色。

服务器角色是执行服务器级管理操作的用户权限的集合。删除登录账号

在【对象资源管理器】中,展开【安全性】结点下面的【登录名】结点,然后右键单击要删除的登录名,在弹出的快捷菜单中选择【删除】,在出现的“删除登录”对话框中单击【确定】按钮即可删除该登录账号。17北京林业大学软件教研室5.1.6SQLServer2008的数据库用户账号和数据库角色数据库的用户账号数据库用户在特定的数据库内创建,必须和某个登录名相关联一个登录账户可以与服务器上的所有数据库进行关联,而数据库用户是一个登录账户在某数据库中的映射,也即一个登录账户可以映射到不同的数据库,产生多个数据库用户(但一个登录账户在一个数据库至多只能映射一个数据库用户),一个数据库用户只能映射到一个登录账户。18北京林业大学软件教研室创建数据库的用户账号

利用对象资源管理器创建数据库用户利用T-SQL语句创建。下面将分别进行介绍查看或修改数据库的用户账号删除数据库用户账号注意:不能删除guest用户,但可在除master或tempdb之外的任何数据库中执行REVOKECONNECTFROMGUEST来撤销它的CONNECT权限,从而禁用guest用户。数据库角色数据库角色是对数据库对象操作的权限的集合。数据库角色可分为两种:固定的标准数据库角色(系统创建的)应用程序角色当我们打算让某些用户只能通过特定的应用程序间接地存取数据库中的数据而不是直接地存取数据库数据时,就应该考虑使用应用程序角色。

19北京林业大学软件教研室角色名称权限public最基本的数据库角色db_accessadmin

可以添加或删除用户标识db_backupoperator

可以发出DBCC、CHECKPOINT和BACKUP语句db_datareader

可以选择(取)数据库内任何用户表中的所有数据db_datawriter

可以更改数据库内任何用户表中的所有数据db_ddladmin

可以发出所有DDL语句,但不能发出GRANT(授权)、REVOKE或DENY语句db_denydatareader

不能选择(取)数据库内任何用户表中的任何数据db_denydatawriter

不能更改数据库内任何用户表中的任何数据db_owner

在数据库中有全部权限db_securityadmin

可以管理全部权限、对象所有权、角色和角色成员资格20北京林业大学软件教研室创建新的数据库角色 sp_addrole'角色名','拥有者'删除数据库角色sp_droprole'角色名'应用程序角色应用程序角色是一个数据库主体,它使应用程序能够用其自身的、类似用户的特权来运行。用户和角色的权限问题用户权限继承角色的权限用户分属不同角色21北京林业大学软件教研室5.2完整性控制5.2.1数据库完整性的含义数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。数据库的完整性是指防止合法用户使用数据库时向数据库中加入不符合语义的数据。完整性措施的防范对象是不合语义的数据。22北京林业大学软件教研室5.2.2完整性规则的组成完整性规则主要由以下三部分构成。(1)触发条件:规定系统什么时候使用规则来检查数据。(2)约束条件:规定系统检查用户发出的操作请求违背了什么样的完整性约束条件。(3)违约响应:规定系统如果发现用户发出的操作请求违背了完整性约束条件,应该采取一定的动作来保证数据的完整性,即违约时要做的事情。完整性规则从执行时间上可分为立即执行约束(ImmediateConstraints)和延迟执行约束(DeferredConstraints)。23北京林业大学软件教研室一条完整性规则可以用一个五元组(D,O,A,C,P)来形式化地表示D(Data):代表约束作用的数据对象,可以是关系、元组和列三种对象;O(Operation):代表触发完整性检查的数据库操作,即当用户发出什么操作请求时需要检查该完整性规则,是立即执行还是延迟执行;A(Assertion):代表数据对象必须满足的语义约束,这是规则的主体;C(Condition):代表选择A作用的数据对象值的谓词;P(Procedure):代表违反完整性规则时触发执行的操作过程。24北京林业大学软件教研室完整性约束条件是完整性控制机制的核心。例如,对于“学号(SNo)不能为空”的这条完整性约束中,D、O、A、C、P的含义分别如下:D:代表约束作用的数据对象为SNo属性;O:当用户插入或修改数据时需要检查该完整性规则;A:SNo不能为空;C:A可作用于所有记录的SNo属性;P:拒绝执行用户请求。25北京林业大学软件教研室5.2.3完整性约束条件的分类从约束条件使用的对象分值的约束和结构的约束值的约束即对数据类型、数据格式、取值范围和空值等进行规定。(1)对数据类型的约束,包括数据的类型、长度、单位和精度等。(2)对数据格式的约束。(3)对取值范围的约束。(4)对空值的约束。结构的约束即对数据之间联系的约束。(1)函数依赖约束。(2)实体完整性约束。(3)参照完整性约束。(4)统计约束。26北京林业大学软件教研室从约束对象的状态分静态约束和动态约束静态约束静态约束是指对数据库每一个确定状态所应满足的约束条件,是反映数据库状态合理性的约束,这是最重要的一类完整性约束。上面介绍的值的约束和结构的约束均属于静态约束。动态约束动态约束是指数据库从一种状态转变为另一种状态时,新旧值之间所应满足的约束条件,动态约束反映的是数据库状态变迁的约束。例如,学生年龄在更改时只能增长,职工工资在调整时不得低于其原来的工资。27北京林业大学软件教研室5.2.4数据完整性的实施声明式数据完整性声明式数据完整性是将数据所需符合的条件融入到对象的定义中,这样SQLServer会自动确保数据符合事先制定的条件。声明式数据完整性的特点是:①通过针对表和字段定义声明的约束,可使声明式数据完整性成为数据定义的一部分。②使用约束、默认值与规则实施声明式数据完整性。28北京林业大学软件教研室程序化数据完整性如果所需符合的条件以及该条件的实施均通过所编写的程序代码完成,则这种形式的数据完整性称为程序化数据完整性。程序化数据完整性的特点是:①程序化数据完整性可以通过相关的程序语言及工具在客户端或服务器端实施。②SQLServer可以使用存储过程或触发器实施程序化数据完整性。29北京林业大学软件教研室5.2.5规则规则(Rule)就是数据库对存储在表中的列或用户自定义数据类型中的值的规定和限制。规则与其作用的表或用户自定义数据类型是相互独立的,即表或用户自定义对象的删除、修改不会对与之相连的规则产生影响。创建规则CREATERULErule_nameAScondition_expression

[例5-1]创建学生年龄规则。CREATERULEage_ruleAS@age>=18and@age<=5030北京林业大学软件教研室规则的绑定与松绑创建规则后,规则仅仅是一个存在于数据库中的对象,并未发生作用。需要将规则与数据库表或用户自定义对象联系起来,才能达到创建规则的目的。所谓绑定就是指定规则作用于哪个表的哪一列或哪个用户自定义数据类型。解除规则与对象的绑定称为“松绑”。31北京林业大学软件教研室规则对已经输入表中的数据不起作用。用存储过程sp_bindrule绑定规则sp_bindrule[@rulename=]'rule', [@objname=]'object_name' [,'futureonly'][例5-2]绑定规则age_rule

到S表的字段Age。EXECsp_bindrule'age_rule','S.Age‘用存储过程sp_unbindrule解除规则的绑定sp_unbindrule[@objname=]'object_name' [,'futureonly'][例5-3]解除已绑定到S表的字段Age的规则age_rule。EXECsp_unbindrule'S.Age'32北京林业大学软件教研室在删除一个规则前必须先将与其绑定的对象解除绑定。删除规则使用DROPRULE命令删除规则DROPRULE{rule_name}[,...n][例5-4]删除age_rule规则。DROPRULEage_rule33北京林业大学软件教研室5.2.6默认默认(Default)是向用户向表中添加数据时,如果没有明确地给出一个值,这时SQLServer所自动使用的值。表的一列或一个用户自定义数据类型只能与一个默认绑定。创建默认CREATEDEFAULTdefault_nameASconstant_expression

[例5-5]创建出生日期默认birthday_defa。CREATEDEFAULTbirthday_defaAS'1990-1-1'34北京林业大学软件教研室默认的绑定与松绑用存储过程sp_bindefault

绑定默认sp_bindefault[@defname=]'default', [@objname=]'object_name' [,'futureonly']用存储过程sp_unbindefault

解除默认的绑定sp_unbindefault[@objname=]'object_name'[,'futureonly']35北京林业大学软件教研室[例5-6]绑定默认birthday_defa到数据表S的Birthday列上。EXECsp_bindefault

birthday_defa,'S.Birthday'[例5-7]解除默认birthday_defa与表S的Birthday列的绑定。EXECsp_unbindefault'S.Birthday'删除默认使用DROPRULE命令删除默认DROPDEFAULT{default_name}[,...n][例5-8]删除学生生日默认birthday_defa。DROPDEFAULTbirthday_defa在删除一个默认前必须先将与其绑定的对象解除绑定36北京林业大学软件教研室5.3并发控制与封锁5.3.1数据库并发性的含义为了充分利用数据库资源,很多时候数据库用户都是对数据库系统并行存取数据,这样就会发生多个用户并发存取同一数据块的情况,如果对并发操作不加控制可能会产生不正确的数据,破坏数据的完整性。并发控制就是解决这类问题,以保持数据库中数据的一致性,即在任何一个时刻数据库都将以相同的形式给用户提供数据。37北京林业大学软件教研室事务是数据库系统中执行的一个工作单位,它是由用户定义的一组操作序列。一个事务可以是一组SQL语句、一条SQL语句或整个程序,一个应用程序可以包括多个事务。定义事务的语句有三条:BEGINTRANSACTIONCOMMITROLLBACK5.3.2事务(Transaction)事务的开始事务的提交事务的回滚38北京林业大学软件教研室事务的特征原子性(Atomicity)一个事务是一个不可分割的工作单位,事务在执行时,应该遵守“要么不做,要么全做”(NothingorAll)的原则,即不允许完成部分的事务。一致性(Consistency)事务对数据库的作用是数据库从一个一致状态转变到另一个一致状态。所谓数据库的一致状态是指数据库中的数据满足完整性约束。隔离性(Isolation)如果多个事务并发地执行,应像各个事务独立执行一样,一个事务的执行不能被其他事务干扰。持久性(Durability)持久性指一个事务一旦提交,它对数据库中数据的改变就应该是持久的,即使数据库因故障而受到破坏,DBMS也应该能够恢复。39北京林业大学软件教研室5.3.3并发操作与数据的不一致性[例5-9]

并发取款操作。假设存款余额R=1000元,甲事务T1取走存款100元,乙事务T2取走存款200元,如果正常操作,即甲事务T1执行完毕再执行乙事务T2,存款余额更新后应该是700元。但是如果按照如下顺序操作,则会有不同的结果:(1)甲事务T1读取存款余额R=1000元;(2)乙事务T2读取存款余额R=1000元;(3)甲事务T1取走存款100元,修改存款余额R=R-100=900,把R=900写回到数据库;(4)乙事务T2取走存款200元,修改存款余额R=R-200=800,把R=800写回到数据库;结果两个事务共取走存款300元,而数据库中的存款却只少了200元。得到这种错误的结果是由甲乙两个事务并发操作引起的。40北京林业大学软件教研室数据库的并发操作导致的数据库不一致性主要有以下三种:丢失更新(LostUpdate)当两个事务T1和T2读入同一数据,并发执行修改操作时,T2把T1或T1把T2的修改结果覆盖掉,造成了数据的丢失更新问题,导致数据的不一致。污读(DirtyRead)事务T1更新了数据R,事务T2读取了更新后的数据R,事务T1由于某种原因被撤销,修改无效,数据R恢复原值。事务T2得到的数据与数据库的内容不一致,这种情况称为“污读”。不可重读(UnrepeatableRead)事务T1读取了数据R,事务T2读取并更新了数据R,当事务T1再读取数据R以进行核对时,得到的两次读取值不一致,这种情况称为“不可重读”。41北京林业大学软件教研室5.3.4封锁实现并发控制的方法主要有两种:封锁(Lock)技术和时标(Timestamping)技术。封锁类型(LockType)所谓封锁就是当一个事务在对某个数据对象(可以是数据项、记录、数据集以至整个数据库)进行操作之前,必须获得相应的锁,以保证数据操作的正确性和一致性。42北京林业大学软件教研室基本的封锁类型有两种排它型封锁(ExclusiveLock)排它型封锁又称写封锁,简称为X封锁,它采用的原理是禁止并发操作。共享封锁(ShareLock)共享封锁又称读封锁,简称为S锁,它采用的原理是允许其他用户对同一数据对象进行查询,但不能对该数据对象进行修改。封锁协议(LockProtocol)封锁可以保证合理地进行并发控制,保证数据的一致性。在封锁时,要考虑一定的封锁规则,例如,何时开始封锁、封锁多长时间、何时释放等,这些封锁规则称为封锁协议。43北京林业大学软件教研室上面讲述过的并发操作所带来的丢失更新、污读和不可重读等数据不一致性问题,可以通过三级封锁协议在不同程度上给予解决:一级封锁协议事务T在修改数据对象之前必须对其加X锁,直到事务结束。二级封锁协议在一级封锁协议的基础上,另外加上事务T在读取数据R之前必须先对其加S锁,读完后释放S锁。三级封锁协议在一级封锁协议的基础上,另外加上事务T在读取数据R之前必须先对其加S锁,读完后并不释放S锁,而直到事务T结束才释放。44北京林业大学软件教研室封锁粒度(LockGranularity)封锁粒度指封锁的单位。根据对数据的不同处理,封锁的对象可以是这样一些逻辑单元:字段、记录、表、数据库等,封锁的数据对象的大小叫封锁粒度。封锁粒度越小,系统中能够被封锁的对象就越多,并发度越高,但封锁机构复杂,系统开销也就越大。封锁粒度越大,系统中能够被封锁的对象就越少,并发度越低,封锁机构越简单,相应系统开销也就越小。45北京林业大学软件教研室死锁和活锁活锁(Livelock)当某个事务请求对某一数据进行排它性封锁时,由于其他事务对该数据的操作而使这个事务处于永久等待状态,这种状态称为活锁。死锁(Deadlock)在同时处于等待状态的两个或多个事务中,其中的每一个在它能够进行之前,都等待着某个数据,而这个数据已被它们中的某个事务所封锁,这种状态称为死锁。死锁产生的条件:互斥条件:一个数据对象一次只能被一个事务所使用,即对数据的封锁采用排它式。不可抢占条件:一个数据对象只能被占有它的事务所释放,而不能被别的事务强行抢占。部分分配条件:一个事务已经封锁分给它的数据对象,但仍然要求封锁其他数据。循环等待条件:允许等待其他事务释放数据对象,系统处于加锁请求相互等待的状态。

46北京林业大学软件教研室数据RT1T2

事务依赖图

死锁的预防一次加锁法:一每个事物必须将所有要使用的数据对象全部依次加锁,并要求加锁成功,只要一个加锁不成功,表示本次加锁失败,则应该立即释放所有加锁成功的数据对象,然后重新开始加锁。顺序加锁法:是预先对所有可加锁的数据对象规定一个加锁顺序,每个事务都需要按此顺序加锁,在释放时,按逆序进行。死锁的诊断与解除如果在事务依赖图中沿着箭头方向存在一个循环,那么死锁的条件就形成了,系统就会出现死锁。选择一个处理死锁代价最小的事务,将其撤销以解除死锁。47北京林业大学软件教研室5.4数据库的恢复系统必须具有检测故障并把数据从错误状态中恢复到某一正确状态的功能,这就是数据库的恢复。数据库恢复的基本原理就是利用存储在系统其他地方的冗余数据来修复。恢复系统应该提供两种类型的功能:生成冗余数据对可能发生的故障作某些准备冗余重建利用这些冗余数据恢复数据库登记日志文件数据转储48北京林业大学软件教研室登记日志文件日志文件是用来记录事务对数据库的更新操作的文件。典型的日志文件主要包含以下内容:(1)更新数据库的事务标识(标明

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论