资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数据库系统概论,*,普通高等教育十五规划教材,数据库系统原理,第,4,章 数据库安全性,主讲:张中军,数据库安全性,问题的提出,数据库的一大特点是数据可以共享,数据共享必然带来数据库的安全性问题,数据库系统中的数据共享不能是无条件的共享,例:军事秘密、国家机密、新产品实验数据、,市场需求分析、市场营销策略、销售计划、,客户档案、医疗档案、银行储蓄数据,数据库安全性,2/4/2026,3,数据库系统概论,4.1,安全性概述,计算机系统安全性是指为计算机系统建立和采取各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止因偶然或恶意的原因使系统遭到破坏、数据遭到更改或泄露。,数据库的安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。,2/4/2026,4,数据库系统概论,安全性概述,(,续,),数据共享是数据库的重要特性,但是数据的共享必然会带来安全上的隐患。,例如,数据库可能涉及军事秘密、国家机密、实验数据等敏感信息数据库的安全包括许多内容,:,防火、防盗、防破坏、防病毒等,数据安全也和法律法规、伦理道德、安全管理,(软硬件意外故障、场地的意外事故、管理不善导致的计算机设备和数据介质的物理破坏、丢失等),等密切相关。这些超出了本书的讨论范围,本书主要讨论技术层面上,如何保证数据库中数据的安全性,。,2/4/2026,5,数据库系统概论,安全性概述,(,续,),1.,数据库安全保护的多层面,为了保护数据库,必须在几个层面上采取安全性措施,物理层,:计算机系统所位于的结点必须物理上受到保护,以防止入侵者强行闯入或暗中潜入。,人际层,:对用户的,授权,必须格外小心,以减少授权用户接受贿赂或其它好处而给入侵者提供访问机会的可能性。,网络层,:由于几乎所有的数据库系统都允许通过网络进行远程访问,因此不管在因特网上还是在企业私有的网络内,网络软件的安全性和物理安全性一样重要。,2/4/2026,6,数据库系统概论,安全性概述,(,续,),数据库系统层,:数据库系统的某些用户获得的授权可能只允许他访问数据库中有限的部分,而另外一些用户获得的授权可能允许他查询数据,但不允许他修改数据。保证这样的授权限制不被违反是数据库系统的责任,操作系统层,:不管数据库系统多么安全,操作系统安全性方面的弱点总是可能成为对数据库进行未授权访问的一种手段,2/4/2026,7,数据库系统概论,安全性概述,(,续,),为了保证数据库安全,必须在上述所有层次上进行安全性维护,。如果较低层次上(物理层)安全性存在缺陷,高层安全性措施即使很严格也可能被绕过。,许多应用中,为保持数据库完整性和安全性而付出极大的努力是很值得的,。对于窃贼来说,包含薪水或其他财务数据数据库是具有吸引力的目标。公司运作数据库可能是不道德竞争对手的兴趣所在。,在上述安全性涉及的几个层次中,物理层、人际层、操作系统层和网络层虽然很重要,但超过了讨论的范围,我们,主要从数据库用户的角度,,讨论数据库管理系统提供的数据库安全性保护措施。,2/4/2026,8,数据库系统概论,安全性概述,(,续,),2.,数据库安全保护的,任务,防止数据一致性的意外破坏比防止对数据库的恶意访问要容易。下面是一些,恶意访问,的形式:,未经授权读取数据(窃取信息);,未经授权修改数据;,未经授权删除数据。,完全杜绝对数据库的恶意滥用是不可能的,但可以使那些企图在没有适当授权情况下访问数据库的,代价足够高,,阻止绝大多数这样的访问企图。,数据库的安全性,旨在保证数据库的任何部分都不受到恶意侵害或未经授权的存取和修改,2/4/2026,9,数据库系统概论,安全性概述,(,续,),数据库管理员(,DBA,)的重要的责任之一是,保证数据库的安全性,,保护数据库涉及的任务:,防止对数据的,未经过授权的存取,,确保敏感信息没有被不“需要知道”这些信息的人访问得到;,防止,未经过授权的人员删除和修改数据,;,监视对数据的访问和更改,等使用情况。,也就是说,采用具有一定安全性的硬件、软件来实现对计算机系统及其所存数据的安全保护,当计算机系统受到恶意攻击时仍能保证系统正常运行,保证系统内的数据不增加、不丢失、不泄露。,2/4/2026,10,数据库系统概论,安全标准简介,TCSEC,标准,CC,标准,2/4/2026,11,数据库系统概论,安全标准简介(续),信息安全标准的发展历史,2/4/2026,12,数据库系统概论,安全标准简介(续),TCSEC/TDI,标准的基本内容,TCSEC/TDI,,从,四个方面,来描述安全性级别划分的指标,安全策略,责任,保证,文档,2/4/2026,13,数据库系统概论,TCSEC/TDI,安全级别划分,TCSEC/TDI,安全级别划分,安 全 级 别,定 义,A1,验证设计(,Verified Design,),B3,安全域(,Security Domains,),B2,结构化保护(,Structural Protection,),B1,标记安全保护(,Labeled Security Protection,),C2,受控的存取保护,(,Controlled Access Protection,),C1,自主安全保护,(,Discretionary Security Protection,),D,最小保护(,Minimal Protection,),2/4/2026,14,数据库系统概论,TCSEC/TDI,安全级别划分(续),按系统可靠或可信程度逐渐增高,各安全级别之间:偏序向下兼容,2/4/2026,15,数据库系统概论,TCSEC/TDI,安全级别划分(续),B2,以上的系统,还处于理论研究阶段,应用多限于一些特殊的部门,如军队等,美国正在大力发展安全产品,试图将目前仅限于少数领域应用的,B2,安全级别下放到商业应用中来,并逐步成为新的商业标准,2/4/2026,16,数据库系统概论,CC,CC,提出国际公认的表述信息技术安全性的结构,把信息产品的安全要求分为,安全功能要求,安全保证要求,CC,文本组成,简介和一般模型,安全功能要求,安全保证要求,2/4/2026,17,数据库系统概论,CC,(续),CC,评估保证级划分,评估保证级,定义,TCSEC,安全级别,(近似相当),EAL7,形式化验证的设计和测试(,formally verified design and tested,),A1,EAL6,半形式化验证的设计和测试(,semiformally,verified design and tested,),B3,EAL5,半形式化设计和测试(,semiformally,designed and tested,),B2,EAL4,系统地设计、测试和复查(,methodically designed,,,tested,,,and reviewed,),B1,EAL3,系统地测试和检查(,methodically tested and checked,),C2,EAL2,结构测试(,structurally tested,),C1,EAL1,功能测试(,functionally tested,),2/4/2026,18,数据库系统概论,4.2,数据库安全性控制,2/4/2026,19,数据库系统概论,4.2,数据库安全性控制,非法使用数据库的情况,编写合法程序绕过,DBMS,及其授权机制,直接或编写应用程序执行非授权操作,通过多次合法查询数据库从中推导出一些保密数据,2/4/2026,20,数据库系统概论,数据库安全性控制(续),计算机系统中,安全措施是一级一级层层设置,计算机系统的安全模型,2/4/2026,21,数据库系统概论,安全性控制,数据库安全保护的措施,数据库系统的,安全保护措施是否有效,是数据库系统主要的,性能指标,之一,数据库系统常用的安全性控制方法包括:,用户标识与鉴别,存取控制,视图,审计,数据加密,在接下来的几节,我们将讨论这些方法,并介绍,SQL,对安全性的支持,2/4/2026,22,数据库系统概论,4.2.1,用户标识与鉴别,用户标识与鉴别,用户标识与鉴别是系统提供的最外层安全保护措施,基本方法,系统提供一定的方式让用户,标识自己的名字或身份,;,系统内部记录着所有,合法用户,的标识;,每次用户要求进入系统(与数据库连接)时,由系统,核对用户提供的身份标识,;,通过鉴别的合法用户才能进入系统,建立数据库连接。,2/4/2026,24,数据库系统概论,用户标识与鉴别,(,续,),用户标识容易被盗用,因此当用户进入系统时,系统要求用户同时提供,用户标识(用户名)和口令,(,password,)。,口令一般由字母、数字等组成,其长度一般是,516,个字符。口令由用户选择,口令的选择既要便于记忆,又要不易被猜出。系统中保留一张表,登记每个用户的口令。,用户输入口令时,系统,不回显,口令。,这种认证方式不需要附加的设备,简单、易行,广泛地用于操作系统、数据库系统和其它软件系统。然而,口令可能被窃取。例如,当口令在网络上传送时,可能被,截获,2/4/2026,25,数据库系统概论,用户标识与鉴别,(,续,),防止窃听者截获用户口令的,基本方法是避免在网络上直接传递口令,使用一种不可逆的,加密方法,对口令进行加密,系统登记加密后的口令,当用户口令通过网络传送时,用相同的方法进行,加密,系统接收到用户口令时,不必解密,而直接,与保存在系统中的加密后的口令进行比较,,进行用户身份认证。,询问,-,应答系统,提供另一种避免直接在网络上传递口令的方法,数据库系统向用户发送一个,询问字符串,,用户,用口令加密,该字符串,并返回数据库系统,数据库系统,用同样的口令解密,,并与原字符串比较,鉴别合法用户,2/4/2026,26,数据库系统概论,用户标识与鉴别,(,续,),公钥系统,可以用于讯问,-,应答系统的加密,数据库系统用,公钥加密,一个字符串,并发送给用户,用户用他的,私钥解密,,并将结果返回数据库系统,数据库系统随后检查这个应答,这种方案直接用,私钥作为口令,,不需要在系统中存储口令,可以进一步防止其他人冒充用户。,2/4/2026,27,数据库系统概论,用户标识与鉴别,(,续,),随着技术的进步,更多的方法已经用于用户身份认证。这些方法包括,利用,只有用户具有的物品,鉴别用户,使用磁卡、,IC,卡等作为用户身份的凭证,必须有相应的,读卡设备,例如,银行广泛使用磁卡,+,密码鉴别储户身份,用,用户的个人特征,鉴别用户,指纹、视网膜、声波等都是用户个人特征,利用这些用户个人特征来鉴别用户非常可靠,但需要相应的设备,因而影响了它们的推广和使用,2/4/2026,28,数据库系统概论,4.2.2,存取控制,4.2.2,存取控制,存取控制机制组成,定义用户权限,合法权限检查,用户权限定义和合法权检查机制一起组成了,DBMS,的安全子系统,2/4/2026,30,数据库系统概论,存取控制,存取控制,是数据库系统的主要安全措施,存取控制有两种,自主存取控制,(,Discretionary Access Control,,,DAC,),同一用户对于不同的数据对象具有不同的存取权限,但是哪些用户对哪些数据对象具有哪些存取权限并无固有限制;,强制存取控制,(,Mandatory Access Control,,,MAC,),每一个数据对象被标以一定的,密级,,每一个用户也被授予某一,许可证级别,。只有具有一定许可证级别的用户才能访问具有一定密级的数据对象。,2/4/2026,31,数据库系统概论,存取控制(续),自主存取控制比较灵活,,DBMS,都提供对它的支持;,而强制存取控制比较严格,只有那些“,安全的,”,DBMS,才提供对它的支持。,在自主存取控制中,用户可以自主地决定将数据对象的何种存取权限授予何人,并决定被授权的用户能否将获得的权限传播给其他用户,自主存取控制是通过授权实现的,因此又称授权,2/4/2026,32,数据库系统概论,自主存取控制,1.,存取权限,在关系数据库系统中,存取控制的对象不仅包括数据本身,而且包括数据库模式。,数据对象可以是数据库、关系(表或视图)、属性(列)或元组。数据对象上允许的操作可以是,SELECT,:允许读(查询)数据,但不允许修改数据,INSERT,:允许插入新数据,但不允许修改已有数据,UPDATE,:允许修改数据,但不允许删除数据,DELETE,:允许删除数据元组。,2/4/2026,33,数据库系统概论,自主存取控制,(,续,),数据库对象可以是模式、基本表、视图和索引,,用户可以获得的授权可以是,RESOURCE,:获得资源,可以创建模式、基本表或索引,CREATE VIEW,:可以创建视图,ALTER,:修改模式、基本表,DROP,:删除模式、基本表、视图和索引,2/4/2026,34,数据库系统概论,自主存取控制,(,续,),2.,存取控制的任务,用户对哪些数据对象具有何种权限是政策问题,而不是技术问题。换句话说,用户对哪些数据对象具有何种权限是由,业务规则,决定的,DBMS,存取控制机制要确保这些业务规则能得到实施。,存取控制机制的,主要任务,授权,:在,DDL,中提供相应的授权语句,允许用户自主地定义存取权限,并将用户的授权登记在数据字典中,合法权限检查:当用户发出存取数据库的操作请求后,,DBMS,将查找数据字典,,根据用户权限进行合法权检查,;如果用户的操作请求超出了定义的权限,则系统将拒绝执行此操作。,2/4/2026,35,数据库系统概论,自主存取控制,(,续,),3.,权限的授予和回收,初始,,所有的权限都归,DBA,。,一般来说,一个数据库系统中至少有一个用户具有,DBA,特权。,DBA,可以创建模式、基本表、视图和索引,并将这些数据对象的访问权授予其他用户。,DBA,还可以通过授权,允许其他用户创建模式、基本表、视图和索引。,一般来说,数据对象,/,模式的创建者拥有该数据对象,/,模式的所有权限,并且可以通过授权将数据对象,/,模式的存取权授予其他用户。,2/4/2026,36,数据库系统概论,自主存取控制,(,续,),通常,,获得授权的用户不能传播授权,。,DBMS,允许在授权的同时将,传播授权的许可,授予用户。获得这种许可的用户可以,传播授权,,将他获得的授权转授其他用户。,对同一个数据库对象,O,的访问权限,P,的授权传播可以用,授权图,表示。,授权图中的,节点代表用户,,而,边代表授权,。如果用户,U,i,将,O,上的访问权限,P,授予,U,j,,则授权图中存在一条,从,U,i,到,U,j,的有向边,。,2/4/2026,37,数据库系统概论,自主存取控制,(,续,),图,4.1,是,Students,上的,UPDATE,授权图,。,DBA,将,Students,上的,UPDATE,权限授予用户,U,1,,,U,2,和,U,3,,而,U,1,又将该权限传播到,U,4,,,U,2,将该权限传播给,U,4,和,U,5,。,为了确保,DBA,对整个数据库具有,绝对控制权,系统不允许,循环授,权,,即授权图中,不存在环,。,DBA,U,1,U,2,U,3,U,4,U,5,图,4.1 Students,上的,UPDATE,授权,2/4/2026,38,数据库系统概论,自主存取控制,(,续,),被授予的权限可以被,DBA,或授权者,收回。谁授予的权限谁回收,但是可能导致级联回收,例如,考虑图,4.1,,如果,DBA,收回对,U,1,的授权,则,U,1,对,U,4,的授权也将被回收,注意:,U,4,从,U,1,和,U,2,得到授权。由于,U,2,对,U,4,的授权并未回收,因此,U,4,仍然继续拥有对,Students,的,UPDATE,权限。,用户权限定义和合法权检查机制一起组成了,DBMS,的安全子系统,在授权机制中,授权定义中数据,粒度越细,,授权子系统就,越灵活,,能够提供的安全性就越完善。,授权粒度越细,系统检查权限的,开销也越大,2/4/2026,39,数据库系统概论,自主存取控制,(,续,),4.,角色,角色是一个命名的,权限的集合,当,一组,用户必须,具有相同,的存取权限时,使用,角色,定义存取权限,并对用户授权是方便的,可以简化授权,并有利于授权管理,2/4/2026,40,数据库系统概论,自主存取控制,(,续,),例如,银行可以有,多个出纳,,所有出纳都,具有相同的数据库存取权限,我们可以创建一个,角色,Teller,,并将出纳应当具有的权限授予,Teller,当一个职工出任出纳时,可以标示她为,Teller,(即授予她,Teller,具有的权限),当一个职工不再担任出纳,可以收回授予她的,Teller,权限,此外,如果出纳的权限需要改变(如,增加对某个关系的修改权限),则只需要将新增加的权限授予,Teller,,而不必对每个出纳一一授予新增的权限。,2/4/2026,41,数据库系统概论,自主存取控制,(,续,),5.,授权与视图,视图,是定义外模式,为用户提供个性化数据库模型的一种手段,视图可以隐蔽不希望用户看到的数据,视图的这种隐藏数据的能力可以简化系统的使用,可以,与授权结合,,限制用户只能访问所需要的数据,实现一定程度的安全保护,2/4/2026,42,数据库系统概论,自主存取控制,(,续,),利用视图实现安全保护的,基本思想,是:,首先通过定义视图,屏蔽掉一部分需要对某些用户保密的数据,然后,在视图上定义存取权限,将对视图的访问权授予这些用户,而不允许他们直接访问定义视图的关系(基本表),由于视图是用查询定义的,而查询是求满足某个谓词(查询条件)的元组集,因此,视图与授权配合使用,实际上间接实现了使用谓词定义用户的存取权限。,2/4/2026,43,数据库系统概论,自主存取控制,(,续,),需要说明的是,创建视图的用户,不一定能够获得该视图上的所有权限,为了有效地阻止用户透过视图越权访问数据库,创建视图的用户在视图上所获得的权限,不能超过,他在定义视图的基本表上所拥有的权限,例如,假设用户,U,对基本表,T,1,拥有,修改权,(,UPDATE,),对基本表,T,2,拥有,读取数据权,(,SELECT,),用户,U,基于基本表,T,1,和,T,2,创建了一个视图,V,,则用户,U,只能,查询,视图,V,2/4/2026,44,数据库系统概论,强制存取控制,在,自主存取控制,中,系统根据用户对数据库对象的,存取权限,来进行安全控制,而不考虑数据库对象本身的,安全等级,这样,自主存取控制不能阻止,副本,的非授权传播,例如,甲将自己权限内的数据存取权授予乙,本来只是允许乙本人操纵这些数据。但是,乙可以,复制这些数据,制造副本,,并在未征得甲同意的情况下传播副本。,强制存取控制,(,MAC,)是系统为保证,更高程度的安全性,,按照,可信计算机系统评估准则关于可信数据库系统的解释,(,TCSEC/TDI,),安全策略的要求所采取的强制存取检查手段。,MAC,不是用户能直接感知或进行控制的,,适用于对数据有严格而固定,密级分类,的部门,如军事部门、政府部门等,2/4/2026,45,数据库系统概论,强制存取控制,(,续,),MAC,机制就是通过,对比主体和客体的敏感度标记,,确定主体是否能够存取客体。,1.,主体与客体,在,MAC,中,,DBMS,管理的全部实体分为,主体和客体,两大类:,主体,是系统中的活动实体,主体可以是,DBMS,管理的实际用户、代表用户的各进程,客体,是系统中的被动实体,是受主体操纵的,如文件、基本表、索引、视图等。,2/4/2026,46,数据库系统概论,强制存取控制,(,续,),2.,敏感度标记,对于主体和客体,,DBMS,为它们的每个实例(值)指派一个,敏感度标记,(,Label,),敏感度标记分成若干级别,如绝密(,Top Secret,)、机密(,Secret,)、秘密(,Confidential,)、公开(,Public,),主体的敏感度标记称为,许可证级别,(,Clearance Level,)。,客体的敏感度标记称为,密级,(,Classification Level,),2/4/2026,47,数据库系统概论,强制存取控制,(,续,),强制存取控制规则,当某一用户(或主体)注册时,系统要求他对任何客体的存取必须遵循下面,两条规则,1.,仅当主体的许可证级别,大于或等于,客体的密级时,该主体才能读取相应的客体;,2.,仅当主体的许可证级别,等于,客体的密级时,该主体才能写相应的客体。,2/4/2026,48,数据库系统概论,强制存取控制,(,续,),某些系统修正了第,2,条规则:,2.,仅当主体的许可证级别,小于或等于,客体的密级时,该主体才能写相应的客体;,即用户可以为写入的数据对象赋予高于自己的许可证级别的密级。,这样一旦数据被写入,该用户自己也不能再读该数据对象。,修正前后的规则的共同点:,均禁止拥有高许可证级别的主体更新低密级的数据对象,从而防止了敏感数据的泄漏。,2/4/2026,49,数据库系统概论,强制存取控制,(,续,),MAC,是对数据本身进行,密级标记,,无论数据如何复制,标记与数据是一个,不可分,的整体。只有符合密级标记要求的用户才可以操纵数据,从而提供了,更高级别的,安全性。,MAC,与,DAC,比较,MAC,比,DAC,具有,更高,的保护级别,因此支持,MAC,的系统,必须支持,DAC,,由,DAC,与,MAC,共同构成,DBMS,的安全机制。,同时提供,DAC,和,MAC,保护的系统称为,多级安全系统,。,在多级安全系统中,系统,首先进行,DAC,检查,对通过,DAC,检查的允许存取的数据对象,再由系统自动进行,MAC,检查,,只有通过,MAC,检查的访问才是允许的,2/4/2026,50,数据库系统概论,4.3 SQL,的授权,SQL,的授权与回收,SQL,支持自主存取控制,提供强大的定义授权机制,1.,授权语句,授予权限语句,GRANT,语句的形式如下:,GRANT,ON,TO,WITH GRANT OPTION,该语句功能:将,所标识的对象上的一种或多种存取权限赋予一个或多个用户或角色。,存取权限由,指定,用户或角色由,指定。,2/4/2026,52,数据库系统概论,SQL,的授权与回收,(,续,),包含可选短语,WITH GRANT OPTION,时,获得授权的用户还可以把获得权限授予其他用户;缺省时,获得权限的用户不能传播权限。,授权者必须是,DBA,或执行授权语句的用户。,执行授权语句的用户必须是数据库对象的创建者或拥有并可以传播相应权限的用户,2/4/2026,53,数据库系统概论,SQL,的授权与回收,(,续,),可以是,ALL PRIVILEGES,(所有权限),(,SQLServer2005,中建议不再使用,),SELECT,:查询,DELETE,:删除元组,INSERT,:插入,UPDATE,:修改,2/4/2026,54,数据库系统概论,SQL,的授权与回收,(,续,),REFERENCES,(,),:赋予用户创建关系时定义外码的能力,如果用户在创建的关系中包含参照其他关系的属性的外码,那么用户必须在这些属性上具有,REFERENCES,权限。,可以是基本表或视图名,.,当对象名为基本表名时,表名前可以使用保留字,TABLE,(可以省略),可以是,PUBLIC,(所有用户)或指定的用户或角色的列表,2/4/2026,55,数据库系统概论,SQL,的授权与回收,(,续,),例,5.8,把查询,Students,表权限授予所有用户可使用:,GRANT SELECT ON,Students,TO PUBLIC,;,将对,Students,和,Courses,表的所有权限授予用户,U1,和,U2,GRANT UPDATE ON,Students,TO,U1,U2;,GRANT UPDATE ON,Courses,TO,U1,U2;,说 明,:,U1,和,U2,都不能传播他们获得的权限。,2/4/2026,56,数据库系统概论,SQL,的授权与回收,(,续,),如果允许他们传播得到的权限,可以用:,GRANT UPDATE ON,Courses,TO,U1,U2,WITH GRANT OPTION,;,GRANT UPDATE ON,Students,TO,U1,U2,WITH GRANT OPTION,;,把对表,SC,的插入元组权限和修改的权限授予用户,U3,,可以用:,GRANT INSERT,UPDATE,ON,SC,TO,U3;,2/4/2026,57,数据库系统概论,SQL,的授权与回收,(,续,),2.,基于视图的授权,SQL,支持基于视图的授权,允许定义视图,并将视图上的存取权授予其他用户,适当地定义视图,使用视图上的授权,可以进一步将用户对数据库的访问限制在关系的某些元组和,/,或某些属性上,例,5.9,假设,u2,是计算机科学系(,CS,)的教务员。我们只允许她对计算机科学系的学生的选课关系,SC,进行访问(查询、插入、删除和修改)。我们可以定义一个视图,CS_SC,,它仅包含计算机科学系学生的选课纪录,2/4/2026,58,数据库系统概论,SQL,的授权与回收,(,续,),CREATE VIEW,CS_SC,AS,SELECT,Sno,Cno,Grade,FROM,SC,WHERE,Sno,IN,(,SELECT,Sno,FROM,Students,WHERE,Sdept,=CS),;,2/4/2026,59,数据库系统概论,SQL,的授权与回收,(,续,),将视图,CS_SC,上的所有存取权都授予,u2,:而不允许她访问,SC,GRANT SELECT,INSERT,UPDATE,ON,CS_SC,TO,u2;,这样,,u2,就获得了对计算机科学系学生成绩的处理权,同时可以阻止她对其他院系学生的选课记录进行操作,2/4/2026,60,数据库系统概论,SQL,的授权与回收,(,续,),例,5.10,假设我们允许辅导员,u3,查询计算机科学系学生的成绩,显示学号、姓名、课程名和成绩,那么先创建一个视图,CS_Grades,:,2/4/2026,61,数据库系统概论,SQL,的授权与回收,(,续,),CREATE VIEW,CS_Grades,AS,SELECT,S.Sno,Sname,Cname,Grade,FROM,Students S,SC,Courses C,WHERE,S.Sno,=,SC.Sno,AND,C.Cno,=,SC.Cno,AND,S.Sno,IN,(,SELECT,Sno,FROM,Students,WHERE,Sdept,=CS);,用授权语句将查询视图,CS_Grades,的权限授予,u3,:,GRANT SELECT ON,CS_Grades,TO,u3,;,2/4/2026,62,数据库系统概论,SQL,的授权与回收,(,续,),3.,收回授权,收回授权使用,REVOKE,语句,格式如下:,REVOKE,ON,FROM,CASCADE,该语句将,所标识的对象上的一种或多种存取权限从一个或多个用户或角色收回,指定存取权限,与授权语句相同,指定用户或角色与授权语句相同,2/4/2026,63,数据库系统概论,SQL,的授权与回收,(,续,),CASCADE,表示回收是级联的,当数据对象,O,上的权限,P,从用户,U,回收时,级联回收导致其它用户从,U,获得的数据对象,O,上的权限,P,也被回收,例,4.11,假设在,Students,上的,UPDATE,授权传播如图,4.1,所,DBA,执行,REVOKE UPDATE ON,Students,FROM,U2;,将返回一个错误信息,而不会收回用户,U2,在,Students,上的,UPDATE,权限,因为用户,U4,和,U5,还持有,U2,授予的,Students,上的,UPDATE,权限。,2/4/2026,64,数据库系统概论,SQL,的授权与回收,(,续,),DBA,执行,REVOKE UPDATE ON,Students,FROM,U2,CASCADE,;,将收回用户,U2,在,Students,上的,UPDATE,权限,同时级联地收回,U2,授予,U4,和,U5,的,Students,上的,UPDATE,权限,注意:,U1,授予,U4,的,Students,上的,UPDATE,权限并未收回。,2/4/2026,65,数据库系统概论,SQL,对角色的支持,SQL-99,支持角色。,使用角色进行授权必须先创建角色,将数据库对象上的存取权限授予角色,才能将角色授予用户,使得用户拥有角色所具有的所有存取权限。,SQL-99,允许收回赋予角色的存取权,收回授予用户的角色。,1.,创建角色和角色授权,创建角色使用如下形式的语句:,CREATE ROLE,该语句创建一个角色,用,命名,可以像对用户授权那样,使用授权语句对角色进行授权,2/4/2026,66,数据库系统概论,SQL,对角色的支持,(,续,),例,5.12,语句,CREATE ROLE,FUDAOYUAN;,创建一个名为,FUDAOYUAN,的角色,语句,GRANT SELECT ON Students TO FUDAOYUAN,GRANT SELECT ON Courses TO FUDAOYUAN,GRANT SELECT ON Teach TO FUDAOYUAN,将关系,Students,Courses,Teach,上的查询权授予角色,FUDAOYUAN,2/4/2026,67,数据库系统概论,SQL,对角色的支持,(,续,),2.,使用角色授权,使用如下语句将一个角色授予一个用户,/,角色:,EXEC,sp_addrolemember,其中,是已创建的角色名,是已经存在的用户名或角色名,获得角色授权的用户或角色具有,所具有的全部权限。,2/4/2026,68,数据库系统概论,SQL,对角色的支持,(,续,),例,5.13,语句,CREATE ROLE,Manager,;,创建一个名为,Manager,的角色。,语句,EXEC,sp_addrolemember,FUDAOYUAN,Manager,将角色,FUDAOYUAN,授予角色,Manager,。这样,,Manager,当中就有了角色,FUDAOYUAN,中的所有权限。,2/4/2026,69,数据库系统概论,SQL,对角色的支持,(,续,),语句,GRANT SELECT,ON,SC,TO,Manager,将关系,SC,上的查询权限授予角色,Manager,若,u5,是校领导,可使用如下语句将角色,Manager,授予,u5,:,EXEC,sp_addrolemember,Manager,u5,注意,:,可能存在着一个角色链。例如,角色,FUDAOYUAN,被分配给所有的,Manager,,这样,Manager,角色就被授予了,FUDAOYUAN,拥有的权限以及直接赋给,Manager,的权限,2/4/2026,70,数据库系统概论,SQL,对角色的支持,(,续,),3.,收回授予角色的权限,像从用户回收授权一样,使用,REVOKE,语句回收授予角色的授权。,从角色,R,收回对象,O,上的存取权,P,后,角色,R,就不再具有对象,O,上的存取权,P,,这将影响所有具有角色,R,的用户或角色。,2/4/2026,71,数据库系统概论,SQL,对角色的支持,(,续,),例,5.14,使用如下语句可以收回角色,FUDAOYUAN,在关系,Courses,上的查询权:,REVOKE SELECT ON,Courses,FROM,FUDAOYUAN,;,该语句执行后,所有具有角色,FUDAOYUAN,的用户都不能再对关系,Courses,进行查询操作,并且也同样影响角色,Manager,,导致具有,Manager,角色的领导,u5,也不能再对关系,Courses,进行查询操作。,2/4/2026,72,数据库系统概论,SQL,对角色的支持,(,续,),4.,收回角色,从一个用户或角色收回角色,具有稍微不同的语法:,EXEC,sp_droprolemember,就是从,手中收回其具有的,代表的角色。,例,5.15,如果,u2,不再担任辅导员,则可以用如下语句收回他的,FUDAOYUAN,角色:,EXEC,sp_droprolemember,FUDAOYUAN,u2,2/4/2026,73,数据库系统概论,SQL,的其他特性,一个对象(关系,/,角色)的创建者拥有该对象的,所有权限,,包括,授予别人权限的权限,。,SQL,标准指定了数据库模式的原始授权机制:只有,模式属主,才能对模式进行修改。因此,模式的修改(如关系的创建和删除,添加或去掉关系中的属性,以及添加或去掉索引)只能由模式的属主来执行。,一些数据库实现对数据库模式有更加强有力的授权机制,类似与前面讨论的那些机制,但这些机制并不是标准的,2/4/2026,74,数据库系统概论,SQL,的其他特性,(,续,),有些系统允许用,CREATE USER,创建用户,并将用户分成三类:,CONNECT,:可以连接数据库,经过授权可以访问(查询、更新)数据对象。,RESOURCE,:拥有,CONNECT,权限,并且可以创建关系(基本表和视图)。,DBA,:超级用户,拥有所有权限;即拥有,RESOURCE,权限,并且可以创建其他用户和模式。,2/4/2026,75,数据库系统概论,SQL,的其他特性,(,续,),例,5.16,语句,CREATE USER,SuperUser,DBA,将创建一个名为,SuperUser,的超级用户,他具有,DBA,权限。,CREATE USER,LiHua,RESOURCE,将创建一个用户,LiHua,,她拥有,RESOURCE,权限,可以创建基本表。,2/4/2026,76,数据库系统概论,SQL,授权的局限性,SQL,标准不提供元组级授权,如果希望所有的学生都能看到自己的成绩,但看不到其他人的成绩,那么授权就必须在元组级上进行。然而,,SQL,标准并不支持这种授权。,基于,Web,的应用授权问题,随着互联网的增长,数据库访问主要来自,Web,应用服务器。终端用户可能不会拥有在数据库上的个人用户标识,实际上,对于来自一个应用服务器上的所有用户,数据库中只有一个用户标识,这样,授权的任务就落到应用服务器上,而整个,SQL,授权机制都被忽略,好处是会有细致的授权,但也带来新的问题,2/4/2026,77,数据库系统概论,SQL,授权,(,续,),例如,那些给每一个单独元组的授权可以由应用程序来实现。这样就会产生下面的两个问题:,(1),检查权限的代码会和应用程序的其他代码混合在一起。,(2),通过应用的代码来实现授权,而不是在,SQL,声明授权,很难确保没有漏洞。由于一个疏忽,一个应用程序可能不检查权限而使没有权限的用户去访问机密数据。,要确保所有应用程序都具备所需的权限检查,其验证工作包括通读所有应用程序服务器的代码,这在一个大的系统中是个非常艰巨的任务。,2/4/2026,78,数据库系统概论,4.3,其他安全措施,其他安全措施,用户标识与鉴别、存取控制是数据库系统的最重要,也是最基本的安全保护措施。这些措施旨在防止未经授权的访问。,一些安全的数据库应用软件还需要更多的安全措施。这些措施包括,审计,数据加密,统计数据库安全性,我们简略介绍这些技术。,2/4/2026,80,数据库系统概论,审计,1.,审计,与存取控制不同,,审计技术是一种监视措施,,它跟踪数据库中的访问活动,监测可能的不合法行为。,审计启用一个专门的,审计日志,(,Audit Log,),自动记录所有用户对数据库的更新(插入、删除和修改),审计日志记录如下信息:,操作类型,(插入、删除、修改);,操作,终端标识与操作者标识,;,操作,日期和时间,;,操作,涉及的数据
展开阅读全文