《数据库安全》第三章 数据库及其应用系统的安全语义

上传人:考试不挂****2941... 文档编号:242936196 上传时间:2024-09-12 格式:PPT 页数:326 大小:1.93MB
返回 下载 相关 举报
《数据库安全》第三章 数据库及其应用系统的安全语义_第1页
第1页 / 共326页
《数据库安全》第三章 数据库及其应用系统的安全语义_第2页
第2页 / 共326页
《数据库安全》第三章 数据库及其应用系统的安全语义_第3页
第3页 / 共326页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第 三 章,数据库及其应用系统,的安全语义,2024/9/12,1,本 章 概 要,3.1,安全的基本体系,3.2,系统安全基本原则,3.3,数据库安全的发展,3.4,数据库保护,2024/9/12,2,3.1,安全的基本体系,3.1.1,安全的特征,安全的五个基本特征,:,机密性:,是防止信息泄漏给非授权个人、实体或过程,只允许授权用户访问的特性。,完整性:,完整性是信息在未经合法授权时不能被改变的特性,也就是数据在生成、存储或传输过程中保证不被偶然或蓄意地删除、修改、伪造、乱序、插入等破坏和丢失的特性。完整性要求保持数据的原样,即信息的正确生成、存储和传输。,2024/9/12,3,可用性:,可用性是数据库系统中,在需要时允许授权用户或实体使用的特性;或者是不正常情况下能自我恢复及状态保护,为授权用户提供有效服务的特性,.,/,延迟和拒绝使用,非抵赖性:,非抵赖性也称作不可否认性,即在数据库系统的信息交互过程中所有参与者都不可能否认或抵赖曾经完成的操作的特性。,可控性:,在授权范围内控制信息流向和行为方式,对信息的传播和信息的内容具有控制能力。,机密性,、,完整性,和,可用性,是信息安全的核心三要素,也是数据库安全的三要素。,2024/9/12,4,3.1.2,基本安全服务,安全服务的种类,:,鉴别服务,:,提供对通信中对等实体和数据来源的鉴别。也称为认证服务。,(安全入口),对等实体鉴别,:,这种服务在连接建立或在数据传送阶段的某些时刻提供使用,用以证实一个或多个连接实体的身份。,数据来源鉴别,:,为数据单元的来源提供确认,鉴别数据项是否来自某个声称的实例,.,鉴别服务对数据单元的复制或篡改不提供保护,2024/9/12,5,访问控制服务,:根据规定的安全策略和安全模式,对合法用户进行授权,,防止对任何资源的非法访问。所谓非法访问是指未经授权的使用、泄露、销毁以及发布等及合法授权用户的非法访问。,(,实现最基本的安全目标,),机密性服务:,确保数据交换安全,防止非法截获或泄漏给非授权个人、实体或过程,只允许授权用户访问的特性。对付被动攻击。,被动攻击:,窃听和监视数据传输。获取数据。被动攻击两种形式是,内容泄露,和,流量分析,。,2024/9/12,6,完整性服务:,主要是防止数据被非法增删、修改或替代,从而改变数据的价值或存在。这种服务对付主动攻击。,主动攻击:,对数据流篡改或伪造数据流,划分为四类:重放、假冒、篡改消息和拒绝服务。,抗抵赖服务:,限制合法授权用户的安全责任,为安全行为纠纷提供可以取证的凭据。以防止发送方或接收方否认已发送或已接收一个消息的事实。,2024/9/12,7,安全服务,主要安全服务,全称,认证(,AU,),对等实体认证,数据起源认证,访问控制(,AC,),自主访问控制,强制访问控制,机密性(,CO,),连接机密性,无连接机密性,选择字段机密性,业务流机密性,完整性(,IN,),可恢复的连接完整性,不可恢复的连接完整性,选择字段的连接完整性,无连接完整性,选择字段的无连接完整性,非否认(,ND,),数据起源的非否认,传递过程的非否认,2024/9/12,8,3.1.3,系统安全的八大机制,安全机制(,security mechanism,):,用来检测、防范安全攻击,或者可恢复系统的机制。,数据加密机制,访问控制机制,数据完整性机制,数字签名机制,鉴别交换机制,业务填充机制,路由控制机制,公证机制,2024/9/12,9,一、数据加密机制,向数据和业务信息流提供保密性,对其他安全机制起补充作用。,加密算法,:,对称,密码体制,非对称,密码体制,需要,加密层选择、加密算法选择和密钥管理。,密钥管理:,包括密钥的产生、存储、密钥分配、销毁、更新及应用。,实现服务种类:,鉴别服务、机密性服务、完整性服务,2024/9/12,10,二、访问控制机制,访问控制的目的是防止对信息资源的非授权访问和非授权使用信息资源。它允许用户对其常用的信息库进行适当权限的访问,限制他随意删除、修改或拷贝信息文件。,实现服务种类:,访问控制服务,2024/9/12,11,访问控制采用最小特权原则:,即在给用户分配权限时,根据每个用户的任务特点使其获得完成自身任务的最低权限,不给用户赋予其工作范围之外的任何权力。,使用的技术:,访问控制矩阵、权限、安全标记、访问时间等。,2024/9/12,12,三、数据完整性机制,是保护数据,以免未授权的数据乱序、丢失、重放、插入和纂改。,实现服务种类:,完整性服务、抗抵赖服务。,2024/9/12,13,例,1,通常通过消息验证码来提供完整性。,Hash,算法特点:,可以把任意长度的字符串经过运算生成固定长度的字符串,并且这个产生的字符串代表着原来字符串里的所有字符。通常叫消息,摘要。,如:“,admin”,加密后,:16,位,8f00b204e980099832,位,d41d8cd98f00b204e9800998ecf8427e,该算法是不可逆的,即不能还原源代码。,2024/9/12,14,如,MD5,算法生成,128,位比特的摘要消息。,设,A,发给,B,内容为,“,Hello,”,了一个,Email,当,B,收到后使用了,Hash,算法来确定这封,Email,在传送过程中没被修改过,以保证数据的完整性,工作方式如下,:,1.A,写一封,Email,内容为,Hello,2.A,用,Hash,算法对,Hello,进行编码,3.A,将原始,Email,的,Hello,及经过,Hash,算法编码过后的原始,Email,的消息摘要,一起发送给,B,2024/9/12,15,4.B,接收到了,A,的,Email,,首先分离由,2,部分组成的邮件。,5.B,通过,Hash,算法,根据收到的,Email,的内容,重新计算出该,Email,的摘要信息,.,6.B,将自己计算出的摘要信息和收到的摘要信息进行比较,如果比较结果一样,则认为这封,Email,在中途没有被修改过,否则的话,这封,Email,在中途一定被修改过,因此内容不可信。保证了原始数据的完整性。,2024/9/12,16,例,2,数据库设计中设计参照完整性时注意的,几个方面。,1,外键的取名规则。,2,参照完整性约束中,主表中被参考的字段与从表中被定义为外键的字段,无论是数据类型还是数据的长度都必须一致。,3,主表中的某个字段被其他表作为外键的话,则这个表的修改与删除就会受到限制。可通过,“,级联修改,”,或者,“,级联删除,”,实现这个功能。,2024/9/12,17,在数据库分别建立表,t_food,(菜单)和表,t_book(,订单,),,如下所示:,t_food:,food_id,(主键),food_name food_price,1,苹果,2.4,2,香蕉,3.5,t_book:,idfood_id,(外键),num,1 1 5,2 2,4,2024/9/12,18,如果你想删除,t_food,中的某一行数据,就有可能会出现如下错误:,Cannot delete or update a parent row: a foreign key constraint 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,。这样,在删除主键对应数据时,外键对应的数据也会被删除。,2024/9/12,19,CREATETABLEt_book(,idintNOTNULLPRIMARYKEY,foodid intNOTNULL,numintNULL,FOREIGN,KEY(food_id,),REFERENCESt_food(food_id),ONDELETECASCADE,),此外还有级联修改,它跟级联删除一样会出现以上问题,解决方法相似。建立数据库时,设置主外键,on update cascade,。,2024/9/12,20,对数据单元进行签名和校验。防止数据单元的伪造、假冒、篡改和否认。,数字签名:,是附加在数据单元上的一些数据,或是对数据单元所作的密码变换,来代替书写签名或印章。,决定于两个过程:,对数据单元签名;,验证签过名的数据单元。,数字签名是基于公钥密码体制的,。,它采用了双重加密的方法来实现防伪、防骗 。,实现服务种类:,鉴别服务、部分完整性服务、抗抵赖服务。,四、数字签名机制,2024/9/12,21,例,3,用户,A,通过银行汇款,1,万元。,1,用户,A,将被发送文件,m,用,SHA,编码加密产生,128bit,的数字摘要,s,。,2,用户,A,具有密钥对,。其中,k1,为公开的加密密钥,,k2,为私有的解密密钥。用户,A,用自己的私用密钥通过,sig = DK2(s),运算对摘要加密,对文件,m,就形成了数字签名。,3 A,将,Dk2(s),作为文件,m,的签名与,m,组合传送给银行。,2024/9/12,22,4 银行通过查找A的公钥k1,对摘要s解密:Ek1(sig) = Ek1(Dk2(s) = s,通过解密还原摘要s。同时对收到的文件m用SHA编码加密产生又一摘要s,。,5 将解密后的摘要s和收到的文件在接收方重新加密产生的摘要s,相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过。确认消息确实来源于A。因为除了A之外,无人知晓k2,任何人都不能从s计算出sig来。,2024/9/12,23,五、鉴别交换机制,鉴别交换机制通过互相交换信息的方式来确定彼此的身份。,用于鉴别交换技术有:,认证口令:发送方与接收方则根据口令来判断对方的身份。,密码技术:发送方将加密信息发给接收方,接收方在收到已加密的信息时,通过自己掌握的密钥解密,能够确定信息的发送者的身份。,认证实体的特征:,例如磁卡、,IC,卡、指纹、唇纹、声音等。,实现服务种类:,鉴别服务,2024/9/12,24,六、路由控制机制,路由控制机制可使信息发送者选择特殊的路由,以保证连接、传输的安全。,路由可以动态选择,也可以预定义,以便只用物理上安全的子网、中继或链路进行连接和传输;,2024/9/12,25,七、业务填充机制,流量填充机制提供针对流量分析的保护。,所谓的业务填充即使在业务闲时发送无用的随机数据,制造假的通信、产生欺骗性数据单元的安全机制。该机制可用于提供对各种等级的保护,用来防止对业务进行分析,同时也增加了密码通讯的破译难度。发送的随机数据应具有良好的模拟性能,能够以假乱真。该机制只有在业务填充受到保密性服务时才有效。,流量填充的实现方法是:随机生成数据并对其加密,再通过网络发送。,2024/9/12,26,八、公证机制,有关在两个或多个实体之间通信的数据的性质,如完整性、原发、时间和目的地等能够借助公证机制而得到确保。,这种保证是由第三方公证人提供的。公证人为通信实体所信任,并掌握必要信息以一种可证实方式提供所需的保证。,每个通信实例可使用数字签名、加密和完整性机制以适应公证人提供的服务。当这种公证机制被用到时,数据便在参与通信的实体之间经由受保护的通信和公证方进行通信。,2024/9/12,27,安全服务与安全机制的关系,安全服务是由安全机制来实现的,一种安全机制可以实现一种或者多种安全服务,一种安全服务可以由一种或者多种安全机制来实现,2024/9/12,28,机 制,服 务,加密,数字签名,访问,控制,数据完整性,认证交换,业务流填充,路由控制,公证,认,证,对等实体认证,数据起源认证,访问控制,自主访问控制,强制访问控制,机,密,性,连接机密性,无连接机密性,选择字段机密性,业务流机密性,完,整,性,可恢复的连接完整性,不可恢复的连接完整性,选择字段的连接完整性,无连接完整性,选择字段的无连接完整性,非否认,数据起源的非否认,传递过程的非否认,安全服务与安全机制的关系,2024/9/12,29,3.2,系统安全基本原则,隔离原则,最小特权原则,纵深防御原则,用户输入不信任原则,关卡检察原则,失效保护原则,最弱连接安全化原则,建立默认原则,减少攻击面原则,2024/9/12,30,隔离原则:,分解并减少攻击面。,分隔基本思想:,如果我们将系统分成尽可能多的独立单元,那么我们可以将对系统可能造成损害的量降到最低。,采取措施:,防火墙、最小特权账户、最小特权,代码。,一、隔离原则,2024/9/12,31,最小特权:,指的是,“,在完成某种操作时所赋予系统中每个主体(用户或进程),必不可少,的特权,”,。每个用户只能拥有刚够完成工作的最小权限。,二、最小特权原则:,2024/9/12,32,最小特权原则规定:,只授予执行操作所必需的最少访问权,对于该访问权只准许用所需的最少时间并最小化有特权的模块。,例,1,DBA,在为用户分配初始权限时,通常只赋予其相应服务的最小权限,“,只读,”,,然后再根据实际需求以及对用户的了解程度提升其权限。,例,2,UNIX,的,passwd,命令能用于修改密码,只能修改密码。,2024/9/12,33,纵深防御原则:,采取多种有效防御措施促使攻击搁浅。,思想:,使用多重防御策略来管理风险,以便在一层防御不够时,在理想情况下,另一层防御将会阻止完全的破坏。,例,某公司安全措施。,公司建立防火墙来阻止入侵者侵入。,对数据库数据进行加密,三、纵深防御原则,2024/9/12,34,失效保护原则:,系统失效时,不能让敏感数据丧失保护被任意访问,返回信息既友好又不能泄露系统内部详细信息。,例,备份磁带是在网络系统由于各种原因出现灾难事件时最为重要的恢复和分析的手段和依据。通过备份磁带,一方面可以恢复被破坏的系统和数据;另一方面,通过恢复磁带数据,攻击者也可以获得系统的重要数据,例如系统加密口令、数据库各种存档以及用户其它数据直接造成重要失密事件。,四、失效保护原则,2024/9/12,35,最弱连接安全化原则:,强化系统最薄弱环节的安全监测和缓解措施。意识到系统弱点,保护整个系统安全。,系统最薄弱部分就是最易受攻击影响的部分,。,例,平等对待安全的各个方面而不能有偏重。如不能只防外部入侵,而忽视内部攻击。,五、最弱连接安全化原则,2024/9/12,36,用户输入不信任原则:,用户输入是对目标系统攻击的主要武器。应用程序应该彻底验证所有用户输入,然后再根据用户输入执行操作。,例,防止缓冲区溢出采取本原则,方法就是不信任用户的输入。,六、用户输入不信任原则,2024/9/12,37,不管是用户也好,程序的攻击者也好,当提供的数据长度大于应用程序预期的长度时,便会发生缓冲区溢出,此时数据会溢出到内部存储器空间。,若开发人员没有预料到外部提供的数据会比内部缓冲区大。溢出导致了内存中其他数据结构的破坏,这种破坏通常会被攻击者利用,以运行恶意代码。,2024/9/12,38,例:,void DoSomething(char *cBuffSrc, DWORD cbBuffSrc) char cBuffDest32; memcpy(cBuffDest,cBuffSrc,cbBuffSrc);,如果,cBuffSrc,和,cbBuffSrc,来自可信赖的源,则这段代码没有任何问题。然而,如果数据来自不可信赖的源,也未得到验证,那么攻击者(不可信赖源)很容易就可以使,cBuffSrc,比,cBuffDest,大,同时也将,cbBuffSrc,设定为比,cBuffDest,大。当,memcpy,将数据复制到,cBuffDest,中时,来自,DoSomething,的返回地址就会被更改,因为,cBuffDest,在函数的堆栈框架上与返回地址相邻,此时攻击者即可通过代码执行一些恶意操作。,2024/9/12,39,弥补的方法就是不要信任用户的输入,并且不信任,cBuffSrc,和,cbBuffSrc,中携带的任何数据:,void DoSomething(char *cBuffSrc, DWORD cbBuffSrc) char cBuffDest32;,const DWORD cbBuffDest = 32; memcpy(cBuffDest, cBuffSrc, min( cbBuffDest, cbBuffSrc); ,2024/9/12,40,使用默认安全原则:,需要为系统安全提供默认配置。如:默认账号、权限、策略。是简化系统的重要方式。创建安全的默认值。,保护对默认帐号的访问,七、使用默认安全原则,2024/9/12,41,关卡检查原则:,及早实施认证与授权。将攻击阻止在第一道门槛之外。,八、关卡检查原则,2024/9/12,42,减少攻击面原则:,禁用应用程序不需要的模块和组件、协议和服务。减少攻击可利用的漏洞。,如果不使用服务、协议和功能的话,将其删除或将其禁用。来减小受攻击的区域范围。,九、减少攻击面原则,2024/9/12,43,萌芽阶段(,60,年代末,-70,年代中期),军事主导阶段(,70,年代中期,-80,年代中期),标准化阶段(,80,年中期,-90,年代初),多样化阶段(,90,年代初,-,现在),3.3,数据库安全的发展,2024/9/12,44,数据库安全性,数据库完整性,数据库并发控制,数据库备份与恢复,3.4,数据库保护,2024/9/12,45,数据库的安全性,数据库的安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。,防范对象是非法用户的非法操作,3.4.1,数据库安全性,2024/9/12,46,数据库的安全性控制,的一般方法,OS,DB,AP1,AP2,AP3,DBMS,访问控制,(,用户标识和鉴别与授权,),存取控制,(,视图和查询修改,),OS,安全保护,数据加密存储,审计,2024/9/12,47,1,、用户身份验证,2,、存取控制,3,、通过视图调整授权,4,、保护机密数据,5,、审计跟踪,一、数据库安全保护措施,2024/9/12,48,1.,访问控制,访问控制,是对用户访问数据库各种资源,(,包括基表、视图、各种目录以及实用程序等,),时的创建、撤消、查询、更新、执行等权限的控制。,DBMS,通过用户标识和鉴别、用户授权来进行访问控制,用户标识和鉴别由系统提供一定的方式让用户标识自己的名字或身份,系统内部记录这些数据,每次用户请求访问数据时系统进行核对,以鉴别此用户是否有权访问。,方法,由数据库系统管理员为用户创建立用户名和密码。,允许用户尝试,3,次,如果,3,次均未通过,系统自动退出。,2024/9/12,49,2.,存取控制,对有权访问数据库的用户做进一步限制,定义每个数据库用户的各种操作权限。,存取权限由数据对象和操作类型两要素构成。,存取权限,(,操作类型,),:建立、修改、检索(模式);,查找、插入、修改、删除(数据)。,授权对象,(,数据对象,),:表、属性列、行(记录),在数据库系统中,定义用户存取权限称为授权 。这些授权定义经过编译后以一张授权表的形式存放在数据字典中。,对于授权表,一个衡量授权机制的重要指标就是授权粒度,即可以定义的数据对象的范围,在关系数据库中,授权粒度包括关系、记录或属性。授权粒度越细,授权子系统就越灵活,能够提供的安全性就越完善。,2024/9/12,50,3.,视图机制,为不同权限的用户定义不同的视图,把要保密的数据对无权存取这些数据的用户隐藏起来,可以限制用户的访问范围,从而自动地为数据提供一定程度的安全保护。,2024/9/12,51,4.,数据加密,加密的基本思想是根据一定的算法将原始数据加密成为不可直接识别的格式,数据以密文的形式存储和传输。,加密方法:,替换方法,该方法使用密钥将明文中的每一个字符转换为密文中的字符。,转换方法,该方法将明文中的字符按不同的顺序重新排列。对高度敏感数据,以密码形式存储和传输。,数据加密和解密占用大量系统资源,此功能为可选项。,2024/9/12,52,5.,审计,审计是一种监视措施,它利用审计日志文件记录用户对数据库的更新功能,对其进行事后分析。,记录的内容一般包括:,操作类型(如修改、查询等),操作终端标识与操作者标识,操作日期和时间,操作所涉及到的相关数据(如基本表、视图、记录、属性等),数据的前象和后象等。,一旦发现潜在的窃密企图,例如重复的、相似的查询,数据库管理员就可以利用审计日志跟踪的信息,进行事后分析和调查导致数据库现有状况的一系列事件,找出非法存取数据的用户、时间和内容。,2024/9/12,53,二、,SQL Server 2000,的,安全控制机制,1. SQL Server,安全体系结构,SQL Server,安全体系结构由三级组成,:,数据库管理系统级,数据库级,对象与语句级,SQL Server,安全体系结构,2024/9/12,54,数据库服务器级安全:,SQL Server,通过设置登录账号来创建一个安全层,用户只有登录成功,才能与,SQL Server,建立连接。,数据库级安全:,SQL Server,的特定数据库都有自己的用户和角色,用户登录后要使用服务器中的数据库时,必须要有用户帐号才能够存取数据库。,对象与语句级安全:,这一级,SQL Server,实施权限管理。合法用户必须在自己的权限范围内进行数据操作。通过授权给用户来指定用户可以访问的数据库对象的权限。,2024/9/12,55,2. SQL Server,的安全验证模式,安全性帐户验证模式:,是指系统确认用户身份的方式。,SQL Server,有两种安全验证模式,即,Windows,安全验证模式和混合安全认证模式。,2024/9/12,56,Windows,安全验证模式:,是指,SQL Server,服务器通过使用,Windows,身份验证来验证用户的身份。,SQL Server,服务器不必再提供一个单独的登录账号及口令。,混合安全验证模式:,表示用户即可以使用,Windows,身份验证,也可以使用,SQL Server,身份验证。若使用,SQL Server,身份验证,用户必须输入有效的,SQL Server,登录账号及口令,这里的登陆帐号是由数据库管理员在,SQL Server,中创建并分配给用户的。,2024/9/12,57,Windows,安全验证模式主要有以下优点:,(,1,)数据库管理员的工作可以集中在管理数据库方面,而不是管理用户账户。,(,2,),Windows,有着更强的用户账户管理工具。可以设置账户锁定、密码期限等。,(,3,),Windows,的组策略支持多个用户同时被授权访问,SQL Server,。,如果网络中有多个,SQL Server,服务器,就可以选择通过,Windows,身份验证机制来完成。,2024/9/12,58,混合身份验证模式具有以下优点,:,(,1,)创建了,Windows,之上的另外一个安全层次。,(,2,)支持更大范围的用户,如非,Windows,客户、,Novell,网用户等。,(,3,)一个应用程序可以使用单个的,SQL Server,登录账号和口令。,2024/9/12,59,利用企业管理器进行认证模式的设置,2024/9/12,60,系统管理员帐户,Sa:,在安装,SQL Server,后,系统默认创建的登录帐号。该用户具有三级安全体系的所有权限,是超级用户。对于,sa,账号我们必须进行最强的保护,包括使用一个超级复杂的密码,同时不要让,sa,账号的密码写于应用程序或者脚本中。,最好不要在数据库应用中使用,sa,账号,建议数据库管理员新建立个拥有与,sa,一样权限的超级用户来管理数据库。,2024/9/12,61,3. SQL Server,的安全管理,数据库的安全管理主要是对数据库用户的合法性和操作权限的管理。,SQL Server,的安全性管理包括以下几个方面:数据库系统登录用户管理、数据库用户管理、数据库系统角色管理以及数据库访问权限的管理。,2024/9/12,62,(,1,)数据库系统登录用户管理,在,SQL Server,中,账号有两种:一种是登录服务器的登录账号(,Login Name,),另外一种是使用数据库的用户账号(,User Name,)。,登录用户是服务器级用户,用户以登录用户身份登录进,SQL Server,系统。,用户可以自己创建登陆用户,2024/9/12,63,查看,服务器的登录账号,使用,企业管理器,Enterprise Manager,进入,Enterprise Manager,,展开“,SQL Server,组”,找到所要连接的,SQL Server,服务器;展开该服务器对应的文件夹,再展开“安全性”文件夹,单击“登录”选项,即可看到系统创建的默认登录账号及已建立的其他登录账号 。,使用存储过程,EXEC sp_helplogins,2024/9/12,64,创建,服务器的登录账号,使用企业管理器,SQL ServersSQL Servers,组要建立登录账户的服务器安全性登录。右击,“,登录,”,,选择,“,新建登录,”,,在,“,新建登录,”,对话框中输入登录用户名,选择身份验证模式,选择登录到,SQL Server,之后要连接的默认数据库。最后单击,“,确定,”,按钮 。,使用存储过程,格式:,SP_ADDLOGIN LOGINAME=,登录名,PASSWD=,口令,DEFDB=,默认数据库名,例如:,SP_ADDLOGIN LOGINAME=,user1, PASSWD =,123456,DEFDB=,pubs,2024/9/12,65,更改,登录帐号属性,使用存储过程,sp_password,可改变登录帐号的密码。,格式是:,EXEC sp_password,旧密码,新密码,登录帐号名称,例,:EXEC sp_password,123456,m123456,user1,此语句将,user1,帐号的密码由原来的,123456,改为,m,123456,。,删除,登录账号,使用企业管理器,使用存储过程,sp_droplogin ,登录账号,2024/9/12,66,(2),数据库用户管理,数据库用户是指具有合法身份的数据库使用者。数据库用户的作用范围局限于其所属的数据库。,数据库用户必须对应到登录用户。登录用户只有成为(对应到)数据库用户后才能访问数据库,数据库用户可以与登录用户同名,也可以不同名。,每个登录账号在一个数据库中只能有一个用户账号,但每个登录账号可以在不同的数据库中各有一个用户账号。,2024/9/12,67,在企业管理器中创建新的数据库用户,在企业管理器的控制台中展开某个数据库,右击,“,用户,”,文件夹,选择,“,新建数据库用户,”,命令,在新建用户对话框的,“,登录名,”,下拉框中选择要创建的数据库用户对应的登录名,然后在,“,用户名,”,的文本框中键入数据库用户名。,利用,SQL,的存储过程来创建数据库用户,格式:,SP_GRANTDBACCESS LOGINAME = ,登录用户名,,,NAME_IN_DB = ,数据库用户名,例如:,SP_GRANTDBACCESS LOGINAME = user1,NAME_IN_DB = user1,2024/9/12,68,(,3,)数据库系统角色管理,角色:,是一组访问权限的集合。,利用角色,,SQL Server,管理者可以将某些用户设置为某一角色,这样只对角色进行权限设置便可以实现对所有用户权限的设置,大大减少了管理员的工作量。,SQL Server,提供了服务器角色和数据库角色。,固定服务器角色:,在,SQL Server,安装时,系统自动创建,其权限固定。可以指派给登录用户。被指派角色的用户可以在服务器上进行相应角色的管理操作,完全独立于某个具体的数据库。,2024/9/12,69,固定服务器角色,2024/9/12,70,固定服务器角色包括:,sysadmin(,系统管理,)/,拥有最高权力,可以执行服务器范围内的一切操作,securityadmin(,安全管理,),serveradmin(,服务器管理,),setupadmin(,启动管理,),processadmin(,进程管理,),diskadmin(,磁盘管理,),dbcreator(,数据库创建,),bulkadmin(,备份管理,),可以使用,SQL Server,企业管理器将登录用户添加到某一指定的固定服务器角色作为其成员。,2024/9/12,71, 数据库角色,数据库角色:,是为用户授予不同级别的管理或访问数据库以及数据库对象的权限。,数据库角色限制在单个数据库的范围之内,一个数据库用户可以具有多个数据库角色。,SQL Server,提供了两种类型的数据库角色:即固定的数据库角色和用户自定义的数据库角色。,固定数据库角色:,是指,SQL Server,为每个数据库提供的固定角色。系统默认创建,10,个固定的标准角色。,2024/9/12,72,固定数据库角色,2024/9/12,73,固定数据库角色名称 角色描述,db_owner,在数据库中有全部权限。,db_accessadmin,可以添加或删除用户,ID,。,db_securityadmin,可以管理全部权限、对象所有权、角色,和角色成员资格。,db_ddladmin,可以发出,ALL DDL,,但不能发出,GRANT,、,REVOKE,或,DENY,语句。,db_backupoperator,可以发出,DBCC,、,CHECKPOINT,和,BACKUP,语句。,db_datareader,可以选择数据库内任何用户表中的所有,数据。,db_datawriter,可以更改数据库内任何用户表中的所有,数据。,db_denydatareader,不能选择数据库内任何用户表中的任何,数据。,db_denydatawriter,不能更改数据库内任何用户表中的任何,数据。,Public,特殊的角色,每个数据库用户都属于它,2024/9/12,74,用户定义数据库角色,由用户决定它们将包含什么许可权限。,用户定义的数据库角色种类:,标准角色和应用,程序角色,标准角色,(Standard Role),:,用于正常的用户管理,它可以包括成员。,创建标准用户角色,格式:,USE,数据库名,EXEC,sp_addrole,角色名,拥有者,例:,USE Study,EXEC,sp_addrole,Myrole,dbo,2024/9/12,75,应用程序角色,(Application Role),:,是一种特殊角色,在编写数据库的应用程序时自己定义应用程序角色。,应用程序的操作者本身并不需要在,SQL Server,上有登录帐号以及用户帐号,通过写的程序来间接存取,SQL Server,的数据。如此可以避免操作者自行登录,SQL Server,。需要指定口令,是一种安全机制。,当某一用户使用了应用程序角色时,便放弃了已被赋予的所有数据库专有权限,所拥有的只是应用程序角色被设置的角色。,2024/9/12,76,(,4,),SQL Server,权限管理,权限用来控制用户如何访问数据库对象,通常权限可以分为三种类型:对象权限、语句权限和隐含权限。, 对象权限,对象权限是用于控制用户对数据库对象执行某些,操作的权限,。数据库对象通常包括表、视图、存储过程。,对象权限是针对数据库对象设置的,它由数据库对象所有者授予、禁止或撤消。,2024/9/12,77,对象权限适用的对象和语句,操作权限,数据库对象,SELECT(,查询,),表、视图、表和视图中的列,UPDATE(,修改,),表、视图、表的列,INSERT(,插入,),表、视图,DELETE(,删除,),表、视图,EXECUTE(,调用过程,),存储过程,DRI(,声明参照完整性,),表、表中的列,2024/9/12,78,使用,SQL Server,企业管理器管理来实现对对象权限的管理,从而实现对用户选项的设定。,(,数据库角色,-,属性,),2024/9/12,79, 语句权限,语句权限是指用户执行一些,数据库定义,语句的权利。创建数据库或数据库中的项目,.,语句权限用于语句本身,它只能由,sa,或,dbo,授予、禁止或撤消。,2024/9/12,80,语句权限适用的语句和权限说明,Transact-SQL,语句,权限说明,CREATE DATABASE,创建数据库,CREATE DEFAULT,创建缺省,CREATE PROCEDURE,创建存储过程,CREATE RULE,创建规则,CREATE TABLE,创建表,CREATE VIEW,创建视图,BACKUP DATABASE,备份数据库,BACKUP LOG,备份日志文件,2024/9/12,81,设置语句权限的页,特定数据库,-,属性,2024/9/12,82,通过,Transact-SQL,语句进行对象和语句的授权、收回权限和拒绝权限, 对象和语句的授权,给对象授权:,GRANT ON TO ,给语句授权:,GRANT TO ,收回用户对象和语句的权限,收回对象的权限:,REVOKE ON FROM ,收回语句的权限:,REVOKE FROM ,2024/9/12,83, 隐含权限,隐含权限指系统预定义而不需要授权就有,的权限(,内置权限,),,包括固定服务器角色成员、固定数据库角色成员、数据库所有者,(dbo),和数据库对象所有者,(dboo),所拥有的权限。,例如,,sysadmin,固定服务器角色成员可以在服务器范围内做任何操作,,dbo,可以对数据库做任何操作,,dboo,可以对其拥有的数据库对象做任何操作,对他不需要明确的赋予权限。,2024/9/12,84,用户和角色的权限问题,用户是否具有对数据库存取的权力,要看其权限设置而定,但是,它还要受其角色的权限的限制。,用户权限,继承,角色的权限,数据库角色中可以包含许多用户,用户对数据库对象的存取权限也继承自该角色。,假设用户,User1,属于角色,Role1,,角色,Role1,已经取得了对表,Table1,的,SELECT,权限,则用户,User1,也自动取得对表,Table1,的,SELECT,权限。,如果,Role1,对,Table1,没有,INSERT,权限,而,User1,取得了对表,Table1,的,INSERT,权限,则,User1,最终也取得对表,Table1,的,INSERT,权限。,而拒绝是优先的,只要,Role1,和,User1,中的之一拒绝,则该权限就是拒绝的。,2024/9/12,85,用户分属不同角色,如果一个用户分属于不同的数据库角色,如:用户,User1,既属于角色,Role1,,又属于角色,Role2,,则用户,User1,的权限基本上是以,Role1,和,Role2,的并集为准。,2024/9/12,86,1,、什么是数据库的完整性,数据库的完整性:,是指数据库中数据的正确性、有效性和相容性。,正确性:,是指数据的真实合法性;,有效性:,是指数据的值是否属于所定义的有效范围;例,:,学生的年龄必须是整数,取值范围为,14,29,;学生的成绩只能是大于或等于,0,的数字;学生的性别只能是男或女;,相容性:,是指表示同一事实的两个或多个数据必须一致,不一致就是不相容。例如:学号必须惟一。,3.4.2,数据库的完整性,2024/9/12,87,完整性:,数据是否真实地反映现实世界,防止不合语义的数据进入数据库。,完整性受到破坏的常见原因:,有用户误操作输入错误的数据,各种硬软件故障,并发更新数据,人为破坏等。,2024/9/12,88,2.,完整性约束条件与完整性控制机制,为维护数据库的完整性,,DBMS,必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件,这些加在数据库数据之上的语义约束条件称为数据库的,“,完整性约束条件,”,简称,为,“,完整性约束,”,,它们作为模式的,一部分存入数据库,中。,而,DBMS,中保障数据满足完整性条件的机制称为,完整性控制机制。,2024/9/12,89,DBMS,的完整性控制机制由以下几部分,功能,组成:,定义功能:,即提供定义完整性约束条件的功能。,检查功能:,即检查用户发出的操作请求是否违背了完整性约束条件。,违约反应:,如果发现用户的操作请求使数据违背了完整性约束条件,则执行一定的动作来保证数据的完整性。,2024/9/12,90,3.,完整性约束条件分类,完整性约束条件可以从其作用对象的,粒度,和,状态,两个,角度,进行分类,。,粒度:,关系数据库,系统中,完整性约束条件的作用对象主要有列级、元组级和关系级三种,粒度。,状态:,可以是静态的,也可以是动态的,。,2024/9/12,91,完整性约束条件作用的对象可以是关系、元组和列三种。,列约束主要是列的数据类型、取值范围、精度、排序等约束条件。,元组的约束是元组中各个字段间的联系的约束。,关系的约束是若干元组间、关系之间的联系的约束,。,2024/9/12,92,完整性约束条件从约束对象的状态分,:,静态约束,:,是指数据库每一确定状态时的数据对象所应满足的约束条件。它是反映数据库状态合理性的约束。例如,一个教务管理数据库的任何一个状态都必须满足条件,“,0,学生成绩,100,”,。,动态约束,:,是指数据库从一种状态转变为另一种状态时,新旧值之间所应满足的约束条件。它是反映数据库状态变迁的约束。例如,更新职工表时,工资不能负增长。,2024/9/12,93,综合上述两方面,完整性约束条件分为以下六类,.,(,1,)静态列级约束,静态列级约束是施加于单列数据上的约束,是对一个列的取值域的说明,包括以下几方面:,对数据类型的约束,:,包括数据的类型、长度、单位、精度等。,对数据格式的约束,:,例如,:,规定日期的格式为,YYYY,MM,DD,;,2024/9/12,94,对取值范围或取值集合的约束。,例如,规定成绩的取值范围为,0,100,。,对空值的约束,:,空值表示未定义或未知的值,它与零值和空格不同。有的列允许空值,有的则不允许。,2024/9/12,95,(,2,)静态元组约束,静态元组约束是施加于单个关系的元组上的约束,它规定组成一个元组的各个列之间的约束,关系。,例:订货关系中发货量,=,订货量,(,3,)静态关系约束,静态关系约束是一个关系的各个元组之间或者若干关系之间存在的各种联系或约束。常见的静态关系约束有,以几种,:,2024/9/12,96,实体完整性约束:,实体完整性,约束是指构成关系主键的属性或属性集合不能为空,。,参照完整性约束:,参照完整性,约束维护关系间的参照完整性不被破坏,。,统计约束:,统计,约束指一个关系的某属性的值与该关系的多个元组的统计值之间的,关系。,例:职工平均工资的,2,倍,=,部门经理的工,资,=,原来工资,,年龄只能增长。,2024/9/12,98,(,5,)动态元组约束,动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。,例如,职工工资调资调整时,新工资,=,原来工资,+,工龄*,1.2,。,(,6,)动态关系约束,动态关系约束是指加在关系变化前后状态上的限制条件。动态关系约束实现起来开销较大。,2024/9/12,99,4.,实现参照完整性考虑的问题,(,1,)删除被参照关系的元组时的问题,删除被参照关系的某个元组而参照关系有若干元组的外码值与被删除的被参照关系的主码值相同,例,1,:学生选课数据库,要删除,Student,关系中,Sno=950001,的元组,而,SC,关系中又有,4,个元组的,Sno,都等于,950001,。,2024/9/12,100,系统可有三种策略,级联删除(,CASCADES,),受限删除(,RESTRICTED,),置空值删除(,NULLIFIES,),这三种处理方法,哪一种是正确的,要依应用环境的语义来定,2024/9/12,101,级联删除,将参照关系中外码值与被参照关系中要删除元,组主码值相对应的元组一起删除。,例,1,中将,SC,关系中所有,4,个,Sno=950001,的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去,受限删除,当参照关系中没有任何元组的外码值与要删除,的被参照关系的元组的主码值相对应时,系统,才执行删除操作,否则拒绝此删除操作,例,1,中,系统将拒绝执行此删除操作。,2024/9/12,102,置空值删除,删除被参照关系的元组,并将参照关系中与,被参照关系中被删除元组主码值相等的外码,值置为空值。,置空值删除:将,SC,关系中所有,Sno=950001,的元组的,Sno,值置为空值。,在学生选课数据库中,只有第一种方法是对的。另外两种方法不符合应用环境语义。如一个同学退学其所有元组会被全部删除。,(,2,)修改被参照关系中主码的问题,系统所采取的三种策略与删除类似,2024/9/12,103,5.,数据完整性约束的定义方法,在具体的,DBMS,中,定义数据完整性约束一般是在服务器端完成的,其定义方法通常有两种:,(,1,)声明式定义,即通过声明的方式定义完整性,如实体完整性约束、一些简单的域约束都是通过声明的方式定义。,2024/9/12,104,例,1,:在学生选课数据库中建立表的约束,当对主表,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,),2024/9/12,105,Create table sc,(,sno,char(9),CONSTRAINT PK_SNO,foreign key (,sno,) references,student(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,表示回滚主表的删除操作,为默认设置,2024/9/12,106,(,2,)过程式定义,即通过编写特殊的程序,如触发器(,Trigger,)来定义和实现完整性控制,触发器是用户编写的一系列,SQL,语句组成的程序,当对数据库做修改(包括插入、删除和更新)时,它自动被系统执行,以实现一些用户自定义的完整性约束。,2024/9/12,107,例,2,:对于数据库中的数据表,sc,,创建一个触发器,插入记录时,当字段,grade,小于,60,时,自动改为,0,(,用,SQL Server,实现)。,CREATE TRIGGER,sc_grade,ON sc,FOR insert,AS,begin,update sc set grade =0,where grade60 and,sno,in,(SELECT,inserted.sno,FROM inserted),end,2024/9/12,108,完整性约束类型,约束定义方式,完整性功能描述,实体完整性,PRIMARY KEY,指定主键,确保主
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!