《数据库安全》第三章 数据库及其应用系统的安全语义_第1页
《数据库安全》第三章 数据库及其应用系统的安全语义_第2页
《数据库安全》第三章 数据库及其应用系统的安全语义_第3页
《数据库安全》第三章 数据库及其应用系统的安全语义_第4页
《数据库安全》第三章 数据库及其应用系统的安全语义_第5页
已阅读5页,还剩321页未读 继续免费阅读

下载本文档

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

文档简介

1、 第 三 章数据库及其应用系统的安全语义2022/7/181本 章 概 要 3.1 安全的基本体系3.2 系统安全基本原则3.3 数据库安全的发展3.4 数据库保护2022/7/1823.1 安全的基本体系3.1.1 安全的特征安全的五个基本特征:机密性:是防止信息泄漏给非授权个人、实体或过程,只允许授权用户访问的特性。完整性:完整性是信息在未经合法授权时不能被改变的特性,也就是数据在生成、存储或传输过程中保证不被偶然或蓄意地删除、修改、伪造、乱序、插入等破坏和丢失的特性。完整性要求保持数据的原样,即信息的正确生成、存储和传输。2022/7/183可用性:可用性是数据库系统中,在需要时允许授权

2、用户或实体使用的特性;或者是不正常情况下能自我恢复及状态保护,为授权用户提供有效服务的特性./延迟和拒绝使用非抵赖性:非抵赖性也称作不可否认性,即在数据库系统的信息交互过程中所有参与者都不可能否认或抵赖曾经完成的操作的特性。可控性:在授权范围内控制信息流向和行为方式,对信息的传播和信息的内容具有控制能力。机密性、完整性和可用性是信息安全的核心三要素,也是数据库安全的三要素。2022/7/1843.1.2 基本安全服务安全服务的种类:鉴别服务:提供对通信中对等实体和数据来源的鉴别。也称为认证服务。(安全入口)对等实体鉴别:这种服务在连接建立或在数据传送阶段的某些时刻提供使用, 用以证实一个或多个

3、连接实体的身份。数据来源鉴别:为数据单元的来源提供确认,鉴别数据项是否来自某个声称的实例. 鉴别服务对数据单元的复制或篡改不提供保护2022/7/185访问控制服务:根据规定的安全策略和安全模式,对合法用户进行授权,防止对任何资源的非法访问。所谓非法访问是指未经授权的使用、泄露、销毁以及发布等及合法授权用户的非法访问。(实现最基本的安全目标)机密性服务:确保数据交换安全,防止非法截获或泄漏给非授权个人、实体或过程,只允许授权用户访问的特性。对付被动攻击。被动攻击:窃听和监视数据传输。获取数据。被动攻击两种形式是内容泄露和流量分析。2022/7/186完整性服务:主要是防止数据被非法增删、修改或

4、替代,从而改变数据的价值或存在。这种服务对付主动攻击。主动攻击:对数据流篡改或伪造数据流,划分为四类:重放、假冒、篡改消息和拒绝服务。抗抵赖服务:限制合法授权用户的安全责任,为安全行为纠纷提供可以取证的凭据。以防止发送方或接收方否认已发送或已接收一个消息的事实。2022/7/187安全服务主要安全服务全称认证(AU)对等实体认证数据起源认证访问控制(AC)自主访问控制强制访问控制机密性(CO)连接机密性无连接机密性选择字段机密性业务流机密性完整性(IN)可恢复的连接完整性不可恢复的连接完整性选择字段的连接完整性无连接完整性选择字段的无连接完整性非否认(ND)数据起源的非否认传递过程的非否认20

5、22/7/1883.1.3 系统安全的八大机制安全机制(security mechanism):用来检测、防范安全攻击,或者可恢复系统的机制。数据加密机制访问控制机制数据完整性机制数字签名机制鉴别交换机制业务填充机制路由控制机制公证机制2022/7/189一、数据加密机制向数据和业务信息流提供保密性,对其他安全机制起补充作用。加密算法: 对称密码体制 非对称密码体制需要加密层选择、加密算法选择和密钥管理。密钥管理:包括密钥的产生、存储、密钥分配、销毁、更新及应用。实现服务种类:鉴别服务、机密性服务、完整性服务2022/7/1810二、访问控制机制访问控制的目的是防止对信息资源的非授权访问和非授

6、权使用信息资源。它允许用户对其常用的信息库进行适当权限的访问,限制他随意删除、修改或拷贝信息文件。实现服务种类:访问控制服务2022/7/1811访问控制采用最小特权原则:即在给用户分配权限时,根据每个用户的任务特点使其获得完成自身任务的最低权限,不给用户赋予其工作范围之外的任何权力。使用的技术:访问控制矩阵、权限、安全标记、访问时间等。2022/7/1812三、数据完整性机制是保护数据,以免未授权的数据乱序、丢失、重放、插入和纂改。实现服务种类:完整性服务、抗抵赖服务。2022/7/1813例1通常通过消息验证码来提供完整性。Hash算法特点:可以把任意长度的字符串经过运算生成固定长度的字符

7、串,并且这个产生的字符串代表着原来字符串里的所有字符。通常叫消息摘要。如:“admin”加密后:16位8f00b204e980099832位d41d8cd98f00b204e9800998ecf8427e该算法是不可逆的,即不能还原源代码。2022/7/1814如MD5算法生成128位比特的摘要消息。设A发给B内容为“Hello”了一个Email, 当B收到后使用了Hash算法来确定这封Email在传送过程中没被修改过,以保证数据的完整性工作方式如下:1.A写一封Email内容为Hello2.A用Hash算法对Hello进行编码3.A将原始Email的Hello 及经过Hash算法编码过后的原

8、始Email的消息摘要,一起发送给B2022/7/18154.B接收到了A的Email,首先分离由2部分组成的邮件。5.B通过Hash算法,根据收到的Email的内容,重新计算出该Email的摘要信息.6.B将自己计算出的摘要信息和收到的摘要信息进行比较,如果比较结果一样,则认为这封Email在中途没有被修改过,否则的话,这封Email在中途一定被修改过,因此内容不可信。保证了原始数据的完整性。2022/7/1816例2 数据库设计中设计参照完整性时注意的 几个方面。1 外键的取名规则。2 参照完整性约束中,主表中被参考的字段与从表中被定义为外键的字段,无论是数据类型还是数据的长度都必须一致。

9、3 主表中的某个字段被其他表作为外键的话,则这个表的修改与删除就会受到限制。可通过“级联修改”或者“级联删除”实现这个功能。2022/7/1817在数据库分别建立表t_food(菜单)和表t_book(订单),如下所示:t_food:food_id(主键) food_name food_price1 苹果 2.42 香蕉 3.5t_book:idfood_id(外键) num1 1 52 2 42022/7/1818如果你想删除t_food中的某一行数据,就有可能会出现如下错误: Cannot delete or update a parent row: a foreign key const

10、raint fails (t_book, CONSTRAINT FOREIGN KEY (food_id) REFERENCES t_food (food_id) 原因:删除的数据表t_food中包含了主键food_id,如果直接删除数据,food_id对应的外键food_id就没有被指向,自然就会出现这种错误。解决两种方法:第一种,也是最直接的,在删除t_food的数据行之前,先将其所对应的t_book中的数据行删除。第二种,在建立数据库时,设置主外键on delete cascade。这样,在删除主键对应数据时,外键对应的数据也会被删除。2022/7/1819CREATETABLEt_bo

11、ok( idintNOTNULLPRIMARYKEY, foodid intNOTNULL, numintNULL, FOREIGNKEY(food_id) REFERENCESt_food(food_id) ONDELETECASCADE) 此外还有级联修改,它跟级联删除一样会出现以上问题,解决方法相似。建立数据库时,设置主外键on update cascade。2022/7/1820对数据单元进行签名和校验。防止数据单元的伪造、假冒、篡改和否认。数字签名:是附加在数据单元上的一些数据,或是对数据单元所作的密码变换,来代替书写签名或印章。决定于两个过程: 对数据单元签名; 验证签过名的数据单

12、元。数字签名是基于公钥密码体制的。它采用了双重加密的方法来实现防伪、防骗 。实现服务种类:鉴别服务、部分完整性服务、抗抵赖服务。四、数字签名机制2022/7/1821例3 用户A通过银行汇款1万元。 1 用户A将被发送文件m用SHA编码加密产生128bit的数字摘要s。 2 用户A具有密钥对。其中k1为公开的加密密钥,k2为私有的解密密钥。用户A用自己的私用密钥通过sig = DK2(s)运算对摘要加密,对文件m就形成了数字签名。 3 A将Dk2(s)作为文件m的签名与m组合传送给银行。2022/7/18224 银行通过查找A的公钥k1,对摘要s解密:Ek1(sig) = Ek1(Dk2(s)

13、 = s,通过解密还原摘要s。同时对收到的文件m用SHA编码加密产生又一摘要s。 5 将解密后的摘要s和收到的文件在接收方重新加密产生的摘要s相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过。确认消息确实来源于A。因为除了A之外,无人知晓k2,任何人都不能从s计算出sig来。2022/7/1823五、鉴别交换机制鉴别交换机制通过互相交换信息的方式来确定彼此的身份。用于鉴别交换技术有:认证口令:发送方与接收方则根据口令来判断对方的身份。密码技术:发送方将加密信息发给接收方,接收方在收到已加密的信息时,通过自己掌握的密钥解密,能够确定信息的发送者的身份。认证实体的特征:例如磁卡、IC卡

14、、指纹、唇纹、声音等。实现服务种类:鉴别服务2022/7/1824六、路由控制机制路由控制机制可使信息发送者选择特殊的路由,以保证连接、传输的安全。 路由可以动态选择,也可以预定义,以便只用物理上安全的子网、中继或链路进行连接和传输;2022/7/1825七、业务填充机制流量填充机制提供针对流量分析的保护。 所谓的业务填充即使在业务闲时发送无用的随机数据,制造假的通信、产生欺骗性数据单元的安全机制。该机制可用于提供对各种等级的保护,用来防止对业务进行分析,同时也增加了密码通讯的破译难度。发送的随机数据应具有良好的模拟性能,能够以假乱真。该机制只有在业务填充受到保密性服务时才有效。流量填充的实现

15、方法是:随机生成数据并对其加密,再通过网络发送。 2022/7/1826八、公证机制有关在两个或多个实体之间通信的数据的性质, 如完整性、原发、时间和目的地等能够借助公证机制而得到确保。这种保证是由第三方公证人提供的。公证人为通信实体所信任, 并掌握必要信息以一种可证实方式提供所需的保证。每个通信实例可使用数字签名、加密和完整性机制以适应公证人提供的服务。当这种公证机制被用到时, 数据便在参与通信的实体之间经由受保护的通信和公证方进行通信。2022/7/1827安全服务与安全机制的关系安全服务是由安全机制来实现的一种安全机制可以实现一种或者多种安全服务一种安全服务可以由一种或者多种安全机制来实

16、现 2022/7/1828 机 制 服 务加密数字签名访问控制数据完整性认证交换业务流填充路由控制公证认证对等实体认证数据起源认证访问控制自主访问控制强制访问控制机 密 性连接机密性无连接机密性选择字段机密性业务流机密性完整性可恢复的连接完整性不可恢复的连接完整性选择字段的连接完整性无连接完整性选择字段的无连接完整性非否认数据起源的非否认传递过程的非否认安全服务与安全机制的关系2022/7/1829 3.2 系统安全基本原则隔离原则最小特权原则纵深防御原则用户输入不信任原则关卡检察原则失效保护原则最弱连接安全化原则建立默认原则减少攻击面原则2022/7/1830隔离原则:分解并减少攻击面。分隔

17、基本思想:如果我们将系统分成尽可能多的独立单元,那么我们可以将对系统可能造成损害的量降到最低。采取措施:防火墙、最小特权账户、最小特权 代码。一、隔离原则2022/7/1831最小特权:指的是“在完成某种操作时所赋予系统中每个主体(用户或进程)必不可少的特权”。每个用户只能拥有刚够完成工作的最小权限。二、最小特权原则:2022/7/1832最小特权原则规定:只授予执行操作所必需的最少访问权,对于该访问权只准许用所需的最少时间并最小化有特权的模块。例1 DBA在为用户分配初始权限时,通常只赋予其相应服务的最小权限“只读”,然后再根据实际需求以及对用户的了解程度提升其权限。例2 UNIX 的 pa

18、sswd 命令能用于修改密码,只能修改密码。2022/7/1833纵深防御原则:采取多种有效防御措施促使攻击搁浅。思想:使用多重防御策略来管理风险,以便在一层防御不够时,在理想情况下,另一层防御将会阻止完全的破坏。例 某公司安全措施。公司建立防火墙来阻止入侵者侵入。对数据库数据进行加密 三、纵深防御原则2022/7/1834失效保护原则:系统失效时,不能让敏感数据丧失保护被任意访问,返回信息既友好又不能泄露系统内部详细信息。例 备份磁带是在网络系统由于各种原因出现灾难事件时最为重要的恢复和分析的手段和依据。通过备份磁带,一方面可以恢复被破坏的系统和数据;另一方面,通过恢复磁带数据,攻击者也可以

19、获得系统的重要数据,例如系统加密口令、数据库各种存档以及用户其它数据直接造成重要失密事件。四、失效保护原则2022/7/1835最弱连接安全化原则:强化系统最薄弱环节的安全监测和缓解措施。意识到系统弱点,保护整个系统安全。系统最薄弱部分就是最易受攻击影响的部分。例 平等对待安全的各个方面而不能有偏重。如不能只防外部入侵,而忽视内部攻击。 五、最弱连接安全化原则2022/7/1836用户输入不信任原则:用户输入是对目标系统攻击的主要武器。应用程序应该彻底验证所有用户输入,然后再根据用户输入执行操作。例 防止缓冲区溢出采取本原则,方法就是不信任用户的输入。 六、用户输入不信任原则2022/7/18

20、37不管是用户也好,程序的攻击者也好,当提供的数据长度大于应用程序预期的长度时,便会发生缓冲区溢出,此时数据会溢出到内部存储器空间。若开发人员没有预料到外部提供的数据会比内部缓冲区大。溢出导致了内存中其他数据结构的破坏,这种破坏通常会被攻击者利用,以运行恶意代码。2022/7/1838例:void DoSomething(char *cBuffSrc, DWORD cbBuffSrc) char cBuffDest32; memcpy(cBuffDest,cBuffSrc,cbBuffSrc);如果 cBuffSrc 和 cbBuffSrc 来自可信赖的源,则这段代码没有任何问题。然而,如果数

21、据来自不可信赖的源,也未得到验证,那么攻击者(不可信赖源)很容易就可以使 cBuffSrc 比 cBuffDest 大,同时也将 cbBuffSrc 设定为比 cBuffDest 大。当 memcpy 将数据复制到 cBuffDest 中时,来自 DoSomething 的返回地址就会被更改,因为 cBuffDest 在函数的堆栈框架上与返回地址相邻,此时攻击者即可通过代码执行一些恶意操作。 2022/7/1839弥补的方法就是不要信任用户的输入,并且不信任 cBuffSrc 和 cbBuffSrc 中携带的任何数据: void DoSomething(char *cBuffSrc, DWOR

22、D cbBuffSrc) char cBuffDest32; const DWORD cbBuffDest = 32; memcpy(cBuffDest, cBuffSrc, min( cbBuffDest, cbBuffSrc); 2022/7/1840使用默认安全原则:需要为系统安全提供默认配置。如:默认账号、权限、策略。是简化系统的重要方式。创建安全的默认值。保护对默认帐号的访问七、使用默认安全原则2022/7/1841关卡检查原则:及早实施认证与授权。将攻击阻止在第一道门槛之外。八、关卡检查原则2022/7/1842减少攻击面原则:禁用应用程序不需要的模块和组件、协议和服务。减少攻击可

23、利用的漏洞。如果不使用服务、协议和功能的话,将其删除或将其禁用。来减小受攻击的区域范围。九、减少攻击面原则2022/7/1843萌芽阶段(60年代末-70年代中期)军事主导阶段(70年代中期-80年代中期)标准化阶段(80年中期-90年代初)多样化阶段(90年代初-现在)3.3 数据库安全的发展2022/7/1844 数据库安全性 数据库完整性 数据库并发控制 数据库备份与恢复 3.4 数据库保护2022/7/1845数据库的安全性数据库的安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。防范对象是非法用户的非法操作3.4.1 数据库安全性 2022/7/1846数据库的

24、安全性控制的一般方法OSDBAP1AP2AP3DBMS访问控制(用户标识和鉴别与授权)存取控制(视图和查询修改)OS安全保护数据加密存储审计2022/7/18471、用户身份验证2、存取控制3、通过视图调整授权4、保护机密数据5、审计跟踪一、数据库安全保护措施2022/7/18481.访问控制访问控制是对用户访问数据库各种资源(包括基表、视图、各种目录以及实用程序等)时的创建、撤消、查询、更新、执行等权限的控制。DBMS通过用户标识和鉴别、用户授权来进行访问控制 用户标识和鉴别由系统提供一定的方式让用户标识自己的名字或身份,系统内部记录这些数据,每次用户请求访问数据时系统进行核对,以鉴别此用户

25、是否有权访问。方法由数据库系统管理员为用户创建立用户名和密码。允许用户尝试3次,如果3次均未通过,系统自动退出。2022/7/18492.存取控制对有权访问数据库的用户做进一步限制,定义每个数据库用户的各种操作权限。存取权限由数据对象和操作类型两要素构成。存取权限(操作类型):建立、修改、检索(模式); 查找、插入、修改、删除(数据)。授权对象(数据对象):表、属性列、行(记录)在数据库系统中,定义用户存取权限称为授权 。这些授权定义经过编译后以一张授权表的形式存放在数据字典中。对于授权表,一个衡量授权机制的重要指标就是授权粒度,即可以定义的数据对象的范围,在关系数据库中,授权粒度包括关系、记

26、录或属性。授权粒度越细,授权子系统就越灵活,能够提供的安全性就越完善。2022/7/18503.视图机制为不同权限的用户定义不同的视图,把要保密的数据对无权存取这些数据的用户隐藏起来,可以限制用户的访问范围,从而自动地为数据提供一定程度的安全保护。 2022/7/18514.数据加密加密的基本思想是根据一定的算法将原始数据加密成为不可直接识别的格式,数据以密文的形式存储和传输。 加密方法:替换方法,该方法使用密钥将明文中的每一个字符转换为密文中的字符。转换方法,该方法将明文中的字符按不同的顺序重新排列。对高度敏感数据,以密码形式存储和传输。数据加密和解密占用大量系统资源,此功能为可选项。202

27、2/7/18525.审计审计是一种监视措施,它利用审计日志文件记录用户对数据库的更新功能,对其进行事后分析。记录的内容一般包括:操作类型(如修改、查询等),操作终端标识与操作者标识,操作日期和时间,操作所涉及到的相关数据(如基本表、视图、记录、属性等),数据的前象和后象等。一旦发现潜在的窃密企图,例如重复的、相似的查询,数据库管理员就可以利用审计日志跟踪的信息,进行事后分析和调查导致数据库现有状况的一系列事件,找出非法存取数据的用户、时间和内容。 2022/7/1853二、SQL Server 2000的安全控制机制1. SQL Server安全体系结构SQL Server安全体系结构由三级组

28、成: 数据库管理系统级数据库级对象与语句级SQL Server安全体系结构2022/7/1854数据库服务器级安全:SQL Server通过设置登录账号来创建一个安全层,用户只有登录成功,才能与SQL Server建立连接。数据库级安全:SQL Server的特定数据库都有自己的用户和角色,用户登录后要使用服务器中的数据库时,必须要有用户帐号才能够存取数据库。对象与语句级安全:这一级SQL Server实施权限管理。合法用户必须在自己的权限范围内进行数据操作。通过授权给用户来指定用户可以访问的数据库对象的权限。 2022/7/18552. SQL Server 的安全验证模式安全性帐户验证模式

29、:是指系统确认用户身份的方式。SQL Server 有两种安全验证模式,即Windows安全验证模式和混合安全认证模式。2022/7/1856Windows安全验证模式:是指SQL Server服务器通过使用Windows身份验证来验证用户的身份。SQL Server服务器不必再提供一个单独的登录账号及口令。混合安全验证模式:表示用户即可以使用Windows身份验证,也可以使用 SQL Server身份验证。若使用 SQL Server身份验证,用户必须输入有效的SQL Server登录账号及口令,这里的登陆帐号是由数据库管理员在SQL Server中创建并分配给用户的。2022/7/1857

30、 Windows安全验证模式主要有以下优点:(1)数据库管理员的工作可以集中在管理数据库方面,而不是管理用户账户。(2)Windows有着更强的用户账户管理工具。可以设置账户锁定、密码期限等。(3)Windows的组策略支持多个用户同时被授权访问SQL Server。如果网络中有多个SQL Server服务器,就可以选择通过Windows身份验证机制来完成。 2022/7/1858混合身份验证模式具有以下优点:(1)创建了Windows之上的另外一个安全层次。(2)支持更大范围的用户,如非Windows客户、Novell网用户等。(3)一个应用程序可以使用单个的SQL Server登录账号和口

31、令。 2022/7/1859利用企业管理器进行认证模式的设置2022/7/1860系统管理员帐户Sa: 在安装SQL Server后,系统默认创建的登录帐号。该用户具有三级安全体系的所有权限,是超级用户。对于sa账号我们必须进行最强的保护,包括使用一个超级复杂的密码,同时不要让sa账号的密码写于应用程序或者脚本中。 最好不要在数据库应用中使用sa账号,建议数据库管理员新建立个拥有与sa一样权限的超级用户来管理数据库。 2022/7/18613. SQL Server 的安全管理数据库的安全管理主要是对数据库用户的合法性和操作权限的管理。SQL Server的安全性管理包括以下几个方面:数据库系

32、统登录用户管理、数据库用户管理、数据库系统角色管理以及数据库访问权限的管理。2022/7/1862(1)数据库系统登录用户管理在SQL Server中,账号有两种:一种是登录服务器的登录账号(Login Name),另外一种是使用数据库的用户账号(User Name)。登录用户是服务器级用户,用户以登录用户身份登录进SQL Server系统。用户可以自己创建登陆用户 2022/7/1863查看服务器的登录账号 使用企业管理器Enterprise Manager 进入Enterprise Manager,展开“SQL Server组”,找到所要连接的SQL Server服务器;展开该服务器对应的

33、文件夹,再展开“安全性”文件夹,单击“登录”选项,即可看到系统创建的默认登录账号及已建立的其他登录账号 。使用存储过程 EXEC sp_helplogins 2022/7/1864创建服务器的登录账号使用企业管理器 SQL ServersSQL Servers组要建立登录账户的服务器安全性登录。右击“登录”,选择“新建登录”,在“新建登录”对话框中输入登录用户名,选择身份验证模式,选择登录到SQL Server之后要连接的默认数据库。最后单击“确定”按钮 。使用存储过程 格式:SP_ADDLOGIN LOGINAME=登录名, PASSWD=口令,DEFDB=默认数据库名 例如:SP_ADDL

34、OGIN LOGINAME=user1, PASSWD =123456,DEFDB=pubs 2022/7/1865更改登录帐号属性使用存储过程sp_password可改变登录帐号的密码。格式是:EXEC sp_password 旧密码, 新密码, 登录帐号名称例:EXEC sp_password 123456, m123456, user1 此语句将user1帐号的密码由原来的123456改为m123456 。删除登录账号 使用企业管理器使用存储过程 sp_droplogin 登录账号2022/7/1866(2) 数据库用户管理数据库用户是指具有合法身份的数据库使用者。数据库用户的作用范围局

35、限于其所属的数据库。数据库用户必须对应到登录用户。登录用户只有成为(对应到)数据库用户后才能访问数据库,数据库用户可以与登录用户同名,也可以不同名。每个登录账号在一个数据库中只能有一个用户账号,但每个登录账号可以在不同的数据库中各有一个用户账号。 2022/7/1867在企业管理器中创建新的数据库用户 在企业管理器的控制台中展开某个数据库,右击“用户”文件夹,选择“新建数据库用户”命令,在新建用户对话框的“登录名”下拉框中选择要创建的数据库用户对应的登录名,然后在“用户名”的文本框中键入数据库用户名。利用SQL的存储过程来创建数据库用户 格式:SP_GRANTDBACCESS LOGINAME

36、 = 登录用户名,NAME_IN_DB = 数据库用户名 例如: SP_GRANTDBACCESS LOGINAME = user1, NAME_IN_DB = user1 2022/7/1868(3)数据库系统角色管理 角色:是一组访问权限的集合。利用角色,SQL Server管理者可以将某些用户设置为某一角色,这样只对角色进行权限设置便可以实现对所有用户权限的设置,大大减少了管理员的工作量。SQL Server提供了服务器角色和数据库角色。固定服务器角色:在SQL Server安装时,系统自动创建,其权限固定。可以指派给登录用户。被指派角色的用户可以在服务器上进行相应角色的管理操作,完全独

37、立于某个具体的数据库。2022/7/1869固定服务器角色2022/7/1870固定服务器角色包括: sysadmin(系统管理)/拥有最高权力,可以执行服务器范围内的一切操作 securityadmin(安全管理) serveradmin(服务器管理) setupadmin(启动管理) processadmin(进程管理) diskadmin(磁盘管理) dbcreator(数据库创建) bulkadmin(备份管理)可以使用SQL Server企业管理器将登录用户添加到某一指定的固定服务器角色作为其成员。2022/7/1871 数据库角色数据库角色:是为用户授予不同级别的管理或访问数据库以

38、及数据库对象的权限。数据库角色限制在单个数据库的范围之内,一个数据库用户可以具有多个数据库角色。SQL Server提供了两种类型的数据库角色:即固定的数据库角色和用户自定义的数据库角色。固定数据库角色:是指SQL Server 为每个数据库提供的固定角色。系统默认创建10个固定的标准角色。2022/7/1872固定数据库角色2022/7/1873固定数据库角色名称 角色描述db_owner 在数据库中有全部权限。db_accessadmin 可以添加或删除用户ID。db_securityadmin 可以管理全部权限、对象所有权、角色 和角色成员资格。 db_ddladmin 可以发出 ALL

39、 DDL,但不能发出 GRANT、REVOKE 或 DENY 语句。 db_backupoperator 可以发出 DBCC、CHECKPOINT 和 BACKUP 语句。db_datareader 可以选择数据库内任何用户表中的所有 数据。db_datawriter 可以更改数据库内任何用户表中的所有 数据。db_denydatareader 不能选择数据库内任何用户表中的任何 数据。db_denydatawriter 不能更改数据库内任何用户表中的任何 数据。Public 特殊的角色,每个数据库用户都属于它 2022/7/1874用户定义数据库角色 由用户决定它们将包含什么许可权限。用户定

40、义的数据库角色种类:标准角色和应用 程序角色标准角色(Standard Role):用于正常的用户管理,它可以包括成员。创建标准用户角色格式: USE 数据库名 EXEC sp_addrole角色名,拥有者例:USE Study EXEC sp_addroleMyrole,dbo2022/7/1875应用程序角色(Application Role):是一种特殊角色,在编写数据库的应用程序时自己定义应用程序角色。应用程序的操作者本身并不需要在SQL Server上有登录帐号以及用户帐号,通过写的程序来间接存取SQL Server的数据。如此可以避免操作者自行登录SQL Server。需要指定口令

41、,是一种安全机制。当某一用户使用了应用程序角色时,便放弃了已被赋予的所有数据库专有权限,所拥有的只是应用程序角色被设置的角色。2022/7/1876(4) SQL Server权限管理权限用来控制用户如何访问数据库对象通常权限可以分为三种类型:对象权限、语句权限和隐含权限。 对象权限对象权限是用于控制用户对数据库对象执行某些操作的权限。数据库对象通常包括表、视图、存储过程。对象权限是针对数据库对象设置的,它由数据库对象所有者授予、禁止或撤消。2022/7/1877对象权限适用的对象和语句操作权限数据库对象SELECT(查询)表、视图、表和视图中的列UPDATE(修改)表、视图、表的列INSER

42、T(插入)表、视图DELETE(删除)表、视图EXECUTE(调用过程)存储过程DRI(声明参照完整性)表、表中的列2022/7/1878使用SQL Server 企业管理器管理来实现对对象权限的管理,从而实现对用户选项的设定。(数据库角色-属性)2022/7/1879 语句权限语句权限是指用户执行一些数据库定义语句的权利。创建数据库或数据库中的项目. 语句权限用于语句本身,它只能由sa或dbo授予、禁止或撤消。2022/7/1880语句权限适用的语句和权限说明 Transact-SQL语句权限说明CREATE DATABASE创建数据库CREATE DEFAULT创建缺省CREATE PRO

43、CEDURE创建存储过程CREATE RULE创建规则CREATE TABLE创建表CREATE VIEW创建视图BACKUP DATABASE备份数据库BACKUP LOG备份日志文件2022/7/1881 设置语句权限的页特定数据库-属性2022/7/1882通过Transact-SQL语句进行对象和语句的授权、收回权限和拒绝权限 对象和语句的授权 给对象授权:GRANT ON TO 给语句授权:GRANT TO 收回用户对象和语句的权限 收回对象的权限:REVOKE ON FROM 收回语句的权限:REVOKE FROM 2022/7/1883 隐含权限隐含权限指系统预定义而不需要授权就

44、有的权限(内置权限),包括固定服务器角色成员、固定数据库角色成员、数据库所有者(dbo)和数据库对象所有者(dboo)所拥有的权限。例如,sysadmin固定服务器角色成员可以在服务器范围内做任何操作,dbo可以对数据库做任何操作,dboo可以对其拥有的数据库对象做任何操作,对他不需要明确的赋予权限。2022/7/1884用户和角色的权限问题 用户是否具有对数据库存取的权力,要看其权限设置而定,但是,它还要受其角色的权限的限制。用户权限继承角色的权限数据库角色中可以包含许多用户,用户对数据库对象的存取权限也继承自该角色。假设用户User1属于角色Role1,角色Role1已经取得了对表Tabl

45、e1的SELECT权限,则用户User1也自动取得对表Table1的SELECT权限。如果Role1对Table1没有INSERT权限,而User1取得了对表Table1的INSERT权限,则User1最终也取得对表Table1的INSERT权限。而拒绝是优先的,只要Role1和User1中的之一拒绝,则该权限就是拒绝的。 2022/7/1885用户分属不同角色如果一个用户分属于不同的数据库角色如:用户User1既属于角色Role1,又属于角色Role2,则用户User1的权限基本上是以Role1和Role2的并集为准。2022/7/18861、什么是数据库的完整性数据库的完整性:是指数据库中

46、数据的正确性、有效性和相容性。正确性:是指数据的真实合法性;有效性:是指数据的值是否属于所定义的有效范围;例: 学生的年龄必须是整数,取值范围为1429;学生的成绩只能是大于或等于0的数字;学生的性别只能是男或女;相容性:是指表示同一事实的两个或多个数据必须一致,不一致就是不相容。例如:学号必须惟一。3.4.2 数据库的完整性2022/7/1887完整性:数据是否真实地反映现实世界,防止不合语义的数据进入数据库。完整性受到破坏的常见原因:有用户误操作输入错误的数据,各种硬软件故障,并发更新数据,人为破坏等。2022/7/18882. 完整性约束条件与完整性控制机制为维护数据库的完整性,DBMS

47、必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件,这些加在数据库数据之上的语义约束条件称为数据库的“完整性约束条件” 简称为“完整性约束”,它们作为模式的一部分存入数据库中。而DBMS中保障数据满足完整性条件的机制称为完整性控制机制。2022/7/1889DBMS的完整性控制机制由以下几部分功能组成:定义功能:即提供定义完整性约束条件的功能。检查功能:即检查用户发出的操作请求是否违背了完整性约束条件。违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则执行一定的动作来保证数据的完整性。2022/7/18903. 完整性约束条件分类完整性约束条件可以从其作用对象的粒度和

48、状态两个角度进行分类。粒度:关系数据库系统中,完整性约束条件的作用对象主要有列级、元组级和关系级三种粒度。状态:可以是静态的,也可以是动态的。2022/7/1891完整性约束条件作用的对象可以是关系、元组和列三种。列约束主要是列的数据类型、取值范围、精度、排序等约束条件。元组的约束是元组中各个字段间的联系的约束。关系的约束是若干元组间、关系之间的联系的约束。2022/7/1892完整性约束条件从约束对象的状态分:静态约束:是指数据库每一确定状态时的数据对象所应满足的约束条件。它是反映数据库状态合理性的约束。例如,一个教务管理数据库的任何一个状态都必须满足条件“0学生成绩100”。动态约束:是指

49、数据库从一种状态转变为另一种状态时,新旧值之间所应满足的约束条件。它是反映数据库状态变迁的约束。例如,更新职工表时,工资不能负增长。2022/7/1893综合上述两方面,完整性约束条件分为以下六类.(1)静态列级约束 静态列级约束是施加于单列数据上的约束,是对一个列的取值域的说明,包括以下几方面:对数据类型的约束:包括数据的类型、长度、单位、精度等。对数据格式的约束: 例如:规定日期的格式为YYYYMMDD;2022/7/1894对取值范围或取值集合的约束。例如,规定成绩的取值范围为0100。对空值的约束:空值表示未定义或未知的值,它与零值和空格不同。有的列允许空值,有的则不允许。2022/7

50、/1895(2)静态元组约束 静态元组约束是施加于单个关系的元组上的约束,它规定组成一个元组的各个列之间的约束关系。 例:订货关系中发货量=订货量(3)静态关系约束 静态关系约束是一个关系的各个元组之间或者若干关系之间存在的各种联系或约束。常见的静态关系约束有以几种:2022/7/1896实体完整性约束:实体完整性约束是指构成关系主键的属性或属性集合不能为空。参照完整性约束:参照完整性约束维护关系间的参照完整性不被破坏。统计约束:统计约束指一个关系的某属性的值与该关系的多个元组的统计值之间的关系。 例:职工平均工资的2倍=部门经理的工 资= 原来工资, 年龄只能增长。2022/7/1898(5

51、)动态元组约束 动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。 例如,职工工资调资调整时,新工资=原来工资+工龄*1.2。(6)动态关系约束 动态关系约束是指加在关系变化前后状态上的限制条件。动态关系约束实现起来开销较大。2022/7/18994.实现参照完整性考虑的问题(1)删除被参照关系的元组时的问题 删除被参照关系的某个元组而参照关系有若干元组的外码值与被删除的被参照关系的主码值相同 例1:学生选课数据库 要删除Student关系中Sno=950001的元组,而SC关系中又有4个元组的Sno都等于950001。2022/7/18100 系统可有三种

52、策略级联删除(CASCADES)受限删除(RESTRICTED)置空值删除(NULLIFIES)这三种处理方法,哪一种是正确的,要依应用环境的语义来定2022/7/18101级联删除将参照关系中外码值与被参照关系中要删除元组主码值相对应的元组一起删除。例1中将SC关系中所有4个Sno=950001的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去 受限删除当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主码值相对应时,系统才执行删除操作,否则拒绝此删除操作例1中,系统将拒绝执行此删除操作。 2022/7/18102置空值删除删除被参照关系的元组

53、,并将参照关系中与被参照关系中被删除元组主码值相等的外码值置为空值。置空值删除:将SC关系中所有Sno=950001的元组的Sno值置为空值。在学生选课数据库中,只有第一种方法是对的。另外两种方法不符合应用环境语义。如一个同学退学其所有元组会被全部删除。(2)修改被参照关系中主码的问题 系统所采取的三种策略与删除类似2022/7/181035. 数据完整性约束的定义方法 在具体的DBMS中,定义数据完整性约束一般是在服务器端完成的,其定义方法通常有两种:(1)声明式定义 即通过声明的方式定义完整性,如实体完整性约束、一些简单的域约束都是通过声明的方式定义。2022/7/18104例1:在学生选

54、课数据库中建立表的约束,当对主表student进行更新或删除操作时,对从表sc采用级联操作;当对主表course进行更新或删除操作时,对从表sc采用cascade, no action方式(用SQL Server 实现)。Create table student(sno char(9) primary key,sname)Create table course (cno char(4) primary key,sname)2022/7/18105Create table sc(sno char(9) CONSTRAINT PK_SNOforeign key (sno) references s

55、tudent(sno) on delete cascade on update cascade,cno char(4) CONSTRAINT PK_CNO foreign key (cno) references course(cno) on delete no action on update no action ,Grade smallint );-cascade表示主从表删除时一致,进行级联删除-no action 表示回滚主表的删除操作,为默认设置2022/7/18106(2)过程式定义 即通过编写特殊的程序,如触发器(Trigger)来定义和实现完整性控制,触发器是用户编写的一系列S

56、QL语句组成的程序,当对数据库做修改(包括插入、删除和更新)时,它自动被系统执行,以实现一些用户自定义的完整性约束。2022/7/18107例2:对于数据库中的数据表sc,创建一个触发器,插入记录时,当字段grade小于60时,自动改为0(用SQL Server 实现)。CREATE TRIGGER sc_grade ON scFOR insertAS beginupdate sc set grade =0 where grade=0 AND Grade= 18 and age 1 beginprint Cannot insertrollback transaction end2022/7/1

57、8145INSTEAD OF触发器可以在表和视图上定义INSTEAD OF触发器。INSTEAD OF触发器代替原触发动作执行,增加了视图上所能进行的更新的种类。每个表上对每个触发动作(INSERT、UPDATE或DELETE)只能定义一个INSTEAD OF触发器。不能在具有WITH CHECK OPTION选项的视图上创建INSTEAD OF触发器。2022/7/18146例:创建一个包括学生和教师编号、姓名以及类别的视图,在视图上建立更新触发器,可通过视图更新结果返回到源基本表中。 create view s_t(ID,Name,Type) as SELECT gh , xm, teac

58、her FROM js UNION SELECT xh , xm, student FROM xs2022/7/18147CREATE TRIGGER s_t_updateON s_tINSTEAD OF UPDATEASbegin IF UPDATE(Name) begin declare ID varchar(255),name varchar(255), type varchar(15) select ID=ID,name=name,type=type from inserted if type=student update xs set xm=name where xh=ID if t

59、ype=teacher update js set xm=name where gh=ID endend2022/7/181481.插入选课记录时,检查若该门课选课人数已满50人,则拒绝插入。CREATE TRIGGER SC_insert ON SC AFTER INSERTASIF(SELECT COUNT(*) FROM SC ,INSERTED WHERE SC.CNO=INSERTED.CNO )50 BEGINPRINT 选课已满ROLLBACK transactionEND练习2022/7/181492.使用触发器实现级联删除。CREATE TRIGGER student_del

60、ete ON sAFTER DELETE AS DELETE FROM sc WHERE sno in (select sno from deleted) 它的作用是在student表中删除某学生记录后,能自动(级联)地从sc表中删去有关该学生的选课记录。2022/7/181503.在订单表(ORDER)中插入或修改订购数量(NUM),必须满足客户相应等级的数量上限和下限。CUSTOMERCUSTOMERLEVELORDER2022/7/18151CREATE TRIGGER CHECK_NUM ON ORDER AFTER INSERT, UPDATEASIF UPDATE(NUM)BEGI

温馨提示

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

评论

0/150

提交评论