版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库技术与应用第六章数据库保护机制〔平安性控制、并发控制〕内容提要数据库完整性控制〔databaseintegrity〕数据库平安性控制〔databasesecurity〕并发控制〔concurrencycontrol〕数据库恢复〔databaserecovery〕(见PPT,chap04-SQL)
数据库平安性控制防止未授权用户存取数据库中的数据,防止数据的泄漏、更改或破坏!平安性控制的一般方法用户标识与鉴别身份验证密码随机数验证存取控制〔授权机制〕权限定义,存放在数据字典中,权限检查视图机制定义外模式,使用视图机制,通过给不同权限用户定义不同的视图,把局部需要保密的数据对无权限的用户隐藏起来,到达一定程度的平安性。审计把用户所有的操作及其相关信息存入审计日志,分析日志。数据加密对称密钥加密法和公开密钥加密法。SQLServer2005的平安性控制SQLServer级的平安控制〔连接权〕通过身份验证〔登录名和密码〕机制来实现数据库级平安控制通过用户管理来实现。数据对象级平安机制通过权限管理来实现。两种权限管理:语句权限对象权限角色效劳器级数据库级数据对象级身份验证模式以确定用户是否具有效劳器的连接权。SQLServer用户来源有两种:Windows授权的用户这种用户的账号和密码由Windows操作系统建立、维护和管理。SQLServer授权的用户这种用户的账号和密码由SQLServer效劳器创立、维护和管理。SQLServer为此提供了两种不同的身份验证模式:Windows身份验证模式Windows负责验证用户身份。在这种认证模式下,SQLServer允许Windows的合法用户连接到SQLServer效劳器。混合身份验证模式:Windows操作系统和SQLServer一起负责验证用户身份。在这种验证模式下,SQLServer既接受Windows用户也接受SQLServer用户。效劳器级数据库用户一个账号只能连接到数据库效劳器,如果想访问某个具体的数据库,就必须是该数据库的用户,否那么对该数据库的访问就会遭到拒绝。有两种方法创立数据库用户:SSMST-SQL语言数据库用户与账号〔登录名〕有什么关系呢?映射到登录名的用户就是一种数据库用户。数据库用户必须依赖于某一个账号,即,在创立数据库用户前必须先创立一个用于连接效劳器的账号或者使用已有的账号。数据库级注意:默认状态下,每个新建的数据库都有一个用户dbo和Guest,它是数据库的拥有者,依赖于创立时所使用的账号。数据对象的平安性数据对象的平安性认证是用户能接触到数据的最后一道关卡,而过关的凭证是用户具有对数据对象操作的相应权限。权限种类:对象权限–指用户对数据对象的操作权限。主要是指数据操作语言〔DML〕的语句权限。即SELECT、UPDATE、DELETE、INSERT、EXECUTE等。如:用户想查询sc表中数据,查询的前提是该用户已被授予了对该表的SELECT权限。语句权限–指用户对某一个语句执行的权限。这些语主要是数据定义语言〔DDL〕的语句。如CREATEDATABASE、BACKUPDATABASE等。数据对象级对权限的三种管理方式授予(GRANT)
对用户、角色等授予某种权限。收回(REVOKE)对用户、角色等收回已授予的权限。禁用(DENY)禁止用户、角色等拥有某种权限。
数据对象级如何做?先建登录再建用户设置权限如何创立登录账号?创立SQLServer登录(1)SSMS→对象资源管理器→平安性→登录名,从快捷菜单中选择『新建登录名』,见右图。(2)在翻开的“登录名-新建〞对话框左侧选择『常规』选项,设置登录名、身份验证方式(选择SQLServer身份验证)、默认数据库。效劳器级CREATELOGINlogin2WITHPASSWORD='123rzw'或EXEC
sp_addlogin
'login2','123rzw'如何创立登录账号?(Contd.)创立Windows登录(1)SSMS→对象资源管理器→平安性→登录名,从快捷菜单中选择『新建登录名』,见右图。(2)在翻开的“登录名-新建〞对话框左侧选择『常规』选项,选择Windows身份验证,单击【搜索】按钮。(3)在翻开的“选择用户或组〞对话框中,单击【高级】按钮,【立即查找】本机上已有的windows用户,单击【确定】按钮。如何删除登录账号?利用SSMS删除登录帐号在对象资源管理器中找到要删除的账号对应的节点,右击该节点,在弹出的菜单中选择【删除】命令。利用T-SQL
DropLoginlogin2
效劳器级如何创立数据库用户?(1)SSMS→对象资源管理器→待创立用户的数据库→平安性→用户,从快捷菜单中选择『新建用户』,如右图所示。(2)在翻开的“数据库用户-新建〞对话框中设置用户名、登录名(为数据库用户指定已经存在的账号,该项必须设置)等。数据库级删除的前提是该用户不拥有任何架构。如果已拥有了架构那么先将其拥有的架构全部删除。例2.删除用户MyUser的SQL语句如下:
DROPUSERMyUser如何删除数据库用户?数据库级数据对象级如何进行对象权限的管理各种类型的对象权限的授予和回收方法根本相同,下面以数据表sc为例来介绍对象权限的授予和回收的方法。(1)SSMS→对象资源管理器→数据表sc,在快捷菜单中选择『属性』。(2)翻开“表属性〞对话框,选择『权限』选项,在右侧的界面中,先通过【添加】按钮在“用户或角色〞列表框中参加相应的用户和角色,然后依次选择这些用户或角色并在显示权限列表框中设置其相应的权限。这些权限就是对用户或角色授予的表对象权限。例3
对用户MyUser授予对表sc操作的DELETE权限和SELECT权限,同时授予了对DELETE权限的分配权,但禁用UPDATE权限。
USE
university
GRANTSELECTONscTOMyUser
GRANTDELETEONscTOMyUserWITHGRANTOPTION
DENYUPDATEONscTOMyUserGO数据对象级如何为用户授予/回收权限?角色什么是角色?角色是一种权限管理策略,是假设干权限的集合。当一个用户被赋予一个角色时,该用户将拥有这个角色所包含的全部权限;一个角色可以赋给多个用户,一个用户也可以拥有多个角色;角色包含的权限变化,相关用户所拥有的权限也随之发生改变。什么是效劳器角色?效劳器角色是对效劳器进行操作的假设干权限的集合。效劳器角色是系统预定义的、用户只能使用不能创立。注意:效劳器角色权限对应的操作类型是效劳器级的,如连接效劳器、关闭效劳器等,而不是针对数据对象的操作。数据库角色什么是数据库角色?是对数据库对象进行操作的权限的集合。数据库角色分两类:固定数据库角色用户自定义数据库角色两种创立数据库角色的方法:SSMST-SQL语句不管采用哪种方法,都须完成以下任务:建立数据库角色分配权限给这个角色分配用户给这个角色用SSMS创立/删除数据库角色(1)找到指定数据库节点下的“平安性〞节点,右击【角色】,在弹出的菜单中选择【新建数据库角色】。(2)在翻开的“数据库角色-新建〞对话框中,选择【平安对象】选项,设置每一具体对象的权限。语法:
为数据库角色添加成员sp_addrolemember[@rolename=]'role',[@membername=]'security_account'
USE
universityGO
CREATEROLE
MyRole2EXECsp_addrolemember
‘MyRole2’,‘MyUser’例4在数据库university中,创立一个数据库角色MyRole2,并将已创立的用户MyUser设置为该角色的成员。对角色授予权限例5
在数据库university中,对角色MyRole2和MyRole3赋予对表student进行删除和插入的操作权限。
USE
university
GO
GRANTDELETE,INSERTONstudentTOMyRole2,
MyRole3对角色禁止、收回权限例6
对角色MyRole2禁用对表sc的UPDTE和DELETE权限。DENY
UPDATE,
DELETE
ON
scTOMyRole2例7
取消对角色MyRole2和MyRole3授予的对表student进行删除和插入的操作权限。
USE
university
GO
REVOKE
DELETE,
INSERT
ONstudent
FROMMyRole2,MyRole3删除角色DROP
ROLE语句例删除MyRole角色。
DROP
ROLE
MyRole权限叠加给角色设定一组权限后,把某用户添加为该角色的成员,这个用户就有了这个角色的权限;用户可以是一个或多个角色的成员。假设用户A是多个角色的成员,它从多个角色获得的权限是叠加的:叠加情况一:假设其中有角色被赋予〔GRANT〕某个权限,而其余角色没有得到授权〔或授权后又被撤销〕,那么用户A仍拥有该权限。叠加情况二:假设某个角色“拒绝〞〔DENY〕某一权限,那么成为该角色成员的用户都不能有此权限,不管其他角色是否授予了该权限,用户A都没有此权限。“拒绝〞具有最高优先权。?例8
用户U是角色A、B和C的成员。如果三个角色权限如左表所示,那么用户U的权限?权限角色A角色B角色CSelectontable1√√Selectonview1√Updateontables2Deleteontable3√√权限用户USelectontable1√Selectonview1√Updateontables2Deleteontable3√√表示授权
用户U的权限角色A、B和C的权限例8(续)过了一段时间后,根据需要对权限做了调整,调整后三个角色的权限如左表所示,那么调整后用户U的权限?权限角色A角色B角色CSelectontable1√OSelectonview1OUpdateontables2Deleteontable3√X权限用户USelectontable1√Selectonview1Updateontables2Deleteontable3X调整后用户u的权限
角色A、B和C的权限O
表示权限被撤销,
X
表示权限被拒绝并发控制多用户同时访问同一个数据库的同一数据项时,实施合理控制,以防止导致数据不一致的操作发生!事务(Transaction)
什么是事务?事务是用户定义的一个不可分割的数据库操作序列;在RDB中,一个事务可以是一个SQL语句,或一组SQL语句或整个程序。事务的简单例如把钱从支票账户转到储蓄账户。何时使用事务?在几个操作必须作为一个单元同时成功或失败时,应使用事务。例如:在批处理过程中,必须把多行作为一个单元插入或删除;只要一个表发生了变化,就需要其他表与它同步。。。怎样使用事务?使用事务时,在数据上设置锁定,对数据库进行永久的改变。在取消锁定之前,不能对锁定的数据进行其他操作。可以锁定从一行到整个数据库的任何内容。这称为“并发〞,并发就是数据库一次处理多个更新的方式。事务的4个特性〔也称事务的ACID性质〕原子性〔Atomicity〕:一个事务中的所有操作是一个不可分割的整体,要么都做,要么都不做〔由DBMS的事务管理子系统保证〕。一致性〔Consistency〕:一个事务独立执行的结果必须保持数据库的一致性,数据不会因为事务的执行而遭到破坏。(由完整性控制子系统保证)。隔离性〔Isolation〕:在多个事务并发执行时,一个事务的执行不受其他事务干扰。系统应保证这些事务的并发执行与这些事务先后单独执行时的结果一样。(由DBMS的并发控制子系统保证)持久性〔Durability〕:指一个事务一旦提交,它对数据库中数据的改变就应该是永久的。(由DBMS的恢复子系统保证)事务的ACID性质Contd.事务的ACID性质可能遭到破坏的因素:多个事务并发运行时,不同事务的操作交叉执行相互干扰;事务在运行过程中被强行中止。〔由于故障〕如何在多事务并发执行过程中防止上述两种异常?
事务的定义显式定义事务可由用户使用事务开始和结束语句显式定义。BEGINTRANSACTION〔事务开始〕COMMIT〔ROLLBACK〔事务结束〕如果用户没有显式定义事务,那么由DBMS按缺省规定自动划分事务。事务的并发执行操作:假定事务采用读和写两种操作来访问数据库。read(x):从数据库中读取数据项x到内存缓冲区;write(x):把数据项x从内存缓冲区写入数据库。注意:在系统运行中,write操作未必导致数据立即写回磁盘,很可能先暂存在系统缓冲区,等缓冲区满后,再写回磁盘。调度:并发事务中各操作执行次序称为“调度〞。如果多个事务依次执行(一个事务执行完后再执行另一个事务),那么称为事务的串行调度;如果并发事务中各操作交叉执行,那么称为并发调度。注意:并发操作可能造成三种数据不一致性问题。例9并发操作造成三种数据不一致性T1T2T1T2T1T2A=20①Begin_t1②R(A)③A=A-1④W(A)⑤Commit⑥Begin_t2R(A)A=A-1W(A)Commit
A=5,B=2,C=8①Begin_t1
②Sum=0③R(A)④Sum=Sum+A⑤R(B)⑥Sum=Sum+B⑦
⑧
⑨R(C)
⑩Sum=Sum+CBegin_t2R(A)A=A+5W(A)R(C)C=C-5W(C)C=200①Begin_t1②R(C)③C=C*2④W(C)
⑤⑥ROLLBACK⑦
⑧
Begin_t2R(C)C=C-100W(C)Commit(a)丢失更新
A=19(b)不一致分析Sum=10
(c)读“脏数据”
C=300应该A=18应该Sum=15应该C=100并发操作带来的主要问题丧失更新〔LostUpdate〕两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1已经提交的结果,导致T1对数据的更新被丧失。不一致分析〔InconsistentAnalysis〕当一个事务T1在读取数据库中的某些数据时,事务T2在修改其中的局部数据,使T1读取了过时数据,导致不一致发生。读“脏数据〞〔DirtyRead〕两个事务T1和T2,如果正常提交事务T1使用了事务T2撤销的数据,那么T1读到的数据就为“脏数据〞。产生上面三种数据不一致的主要原因是并发操作破坏了事务的隔离性。并发控制技术并发控制技术:用来保证多个事务并发执行时的互不干预性或隔离性。技术的核心是保证调度的可串行性。并发调度的可串行化一个事务单独执行的结果总使数据库保持一致状态,因此将n个事务串行调度(即一个执行完了再执行下一个事务),其结果将使数据库仍然处于一致状态,因此事务的串行调度是正确的。可串行化准那么:多个事务的并发执行是正确的,当且仅当其结果与按照某一次序串行地执行它们时的结果相同,称这种调度策略为可串行化调度。可串行性是并发事务正确性的准那么。按照这个准那么,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。并发控制的主要技术之一
—封锁技术封锁(locking)事务T对某个数据对象操作之前,先请求系统对其加锁。加锁后事务T就对该数据有了一定的控制权,直到事务T对其解锁,其他事务才能更新此数据。锁的类型:排它锁〔Exclusivelock简称X锁〕:假设事务T对数据对象A加上X锁,那么在T对A解除X锁之前,其他任何事务都不能对A封锁。共享锁〔Sharedlock,简称S锁〕:假设事务T对数据对象A加上S锁,那么其他事务也能对A加S锁,但在A上的所有S锁都解除之前,不能对A加X锁。二元锁〔binarylock〕封锁方法带来的新问题
—活锁和死锁活锁如果某事务处于永远等待状态,得不到封锁时机,这种现象称为活锁。防止活锁的方法:采用先来先效劳的策略。死锁两个或两个以上的事务处于相互等待状态,每个事务都在等对方事务解锁,才能继续执行下去,这种现象叫死锁。解决死锁的方法:死锁预防:(1)一次封锁法;(2)顺序封锁法死锁诊断与解除:诊断:(1)超时法;(2)等待图法。解除:选代价最小的事务予以撤消,释放其持有的所有锁,使其他事务得以运行下去。加锁原那么:“写〞操作之前申请加X锁;“读〞操作之前申请加S锁。两者同时存在,根据X锁和S锁的相互作用关系来设定。T2T1XS-XNNYSNYY-YYYN表示冲突Y表示相容-表示无封锁两段锁协议
—保证可串行性
两段锁协议(2PL):要求所有事务分两个阶段对数据项加锁和解锁。即(1)在对任何数据进行读写操作之前,首先要申请并获得对该数据的封锁;(2)在释放一个封锁后,事务不许再申请和获得任何封锁.“两段〞锁含义,一个事务可分为两个阶段:Phase1:获得封锁(扩张阶段),事务可申请获得任何数据项上的任何类型的锁,但不能释放任何锁.Phase2:释放封锁(收缩阶段),事务可释放任何数据项上的任何类型的锁,但是不能再申请任何锁。例10
利用两段锁解决数据不一致问题T1T2T1T2A=20Begin_T1LOCK_X(A)R(A)
A=A-1W(A)COMMITUNLOCK(A)Begin_T2LOCK_X(A)WaitWaitWaitLOCK_X(A)R(A)A=A-1W(A)COMMITUNLOCK(A)C=200Begin_T1LOCK_X(C)R(C)C=C*2W(C)ROLLBACK/UNCLOCK(C)Begin_T2LOCK_X(C)WaitLOCK_X(C)R(C)C=C-100W(C)COMMIT/UNLOCK(C)(a)解决”丢失更新“问题(c)解决读“脏数据“问题A=18C=100作业实验七(SQLServer2005)补充题,要求如下:先创立名为“MyLogin〞、密码为“1t2s3f〞的账号;然后对当前数据库university创立名为“MyUser〞的用户,该用户依赖于账号MyLogin,其默认架构为sys;在数据库university中,将对表student的UPDATE权限授给用户MyUser;在数据库university中,创立角色MyRole,并赋予该角色对表student进行DELETE和INSERT的操作权限,将用户MyUser设置为该角色的成员;
补充题目解答SQL实施平安性设置
CREATELOGINMyLoginWITHPASSW
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课程设计法律知识
- 课程设计形界面
- 金属材料课程设计体会
- 配电保护课程设计题
- 2024-2030年中国轴承稳定环行业现状调查与未来前景展望研究研究报告
- 2024-2030年中国聚丙烯用阻燃剂行业供需态势与投资盈利预测报告
- 2024-2030年中国稻壳发电行业现状动态与前景规划研究报告
- 2024-2030年中国生活用纸市场经营状况及投资潜力调查研究报告
- 2024-2030年中国滚塑行业盈利模式与投资前景预测报告
- 2024-2030年中国小曲酒行业消费动态与投资盈利预测报告
- 葡萄糖中一般杂质检查
- 标准图集S161
- 送货单电子模板
- 专利申请著录项目变更书
- 4-船闸总体设计
- 全文《以史为鉴持续推动美丽中国建设》PPT
- 《2021国标结构专业图集资料》04G410-2 1.5mX6.0m预应力混凝土屋面板(钢筋混凝土部分)
- 设计方案——喷漆烘干房
- Humpty儿童跌倒评估量表
- 四边形的认识课件
- IUPAC命名法(系统命名法)
评论
0/150
提交评论