第四章数据库安全性问题的提出数据库的一大特点是数据可以共享,但数据共享必然带来数据库的安全性问题。数据库系统中的数据共享不能是无条件的共享例:军事秘密、国家机密、新产品实验数据、客户档案、医疗档案、银行储蓄数据数据库中数据的共享是在DBMS统一的严格的控制之下的共享,即只允许有合法使用权限的用户访问允许他存取的数据。数据库系统的安全保护措施是否有效是数据库系统主要的性能指标之一。第四章数据库安全性4.1计算机系统安全性概述4.2数据库安全性控制4.3数据库存取控制方法4.4视图机制4.5审计4.6统计数据库安全性4.7小结4.1计算机系统安全性概述什么是数据库的安全性数据库的安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。数据库的安全性与计算机系统安全性紧密相关。什么是计算机系统安全性是指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。计算机系统有三类安全性问题:技术安全类、管理安全类、政策法律类。计算机系统的三类安全性问题1)技术安全指计算机系统中采用具有一定安全性的硬件、软件来实现对计算机系统及其所存数据的安全保护,当计算机系统受到无意或恶意的攻击时仍能保证系统正常运行,保证系统内的数据不增加、不丢失、不泄露。2)管理安全指管理不善导致的软硬件意外故障、场地的意外事故、计算机设备和数据介质的物理破坏、丢失等安全问题。3)政策法律类政府部门建立的有关计算机犯罪、数据安全保密的法律道德准则和政策法规、法令。第四章数据库安全性4.1计算机系统安全性概述4.2数据库安全性控制4.3数据库存取控制方法4.4视图机制4.5审计4.6统计数据库安全性4.7小结4.2数据库安全性控制一、数据库安全性控制概述二、用户标识与鉴别三、存取控制一、数据库安全性控制概述应用DBMSOSDB低高安全性控制层次用户标识和鉴定存取控制、视图、审计操作系统安全保护数据密码存储计算机系统中的安全模型数据库安全性控制概述(续)数据库安全性控制的常用方法用户标识和鉴定存取控制视图审计密码存储4.2数据库安全性控制一、数据库安全性控制概述二、用户标识与鉴别三、存取控制二、用户标识与鉴别基本方法系统提供一定的方式让用户标识自己的名字或身份,系统内部记录着所有合法用户的标识;每次用户要求进入系统时,由系统核对用户提供的身份标识,通过鉴定后才提供系统使用权。用户标识和鉴定可以重复多次用户名/口令简单易行,容易被人窃取其他方式每个用户预先约定好一个计算过程或者函数,系统提供一个随机数,用户根据自己预先约定的计算过程或者函数进行计算,系统根据用户计算结果是否正确鉴定用户身份。4.2数据库安全性控制一、数据库安全性控制概述二、用户标识与鉴别三、存取控制三、存取控制存取控制机制的组成1)定义存取权限在数据库系统中,为了保证用户只能访问他有权存取的数据,必须预先对每个用户定义存取权限。2)检查存取权限对于通过鉴定获得上机权的用户(即合法用户),系统根据他的存取权限定义对他的各种操作请求进行控制,确保他只执行合法操作。若用户的操作请求超出了定义的权限,系统将拒绝执行此操作用户权限定义和合法权检查机制一起组成了DBMS的安全子系统存取控制(续)常用的存取控制方法1)自主存取控制(DiscretionaryAccessControl,简称DAC)同一用户对于不同的数据对象有不同的存取权限;不同的用户对同一对象也有不同的权限;用户还可将其拥有的存取权限转授给其他用户。2)强制存取控制(MandatoryAccessControl,简称MAC)每一个数据对象被标以一定的密级;每一个用户也被授予某一个级别的许可证;对于任意一个对象,只有具有合法许可证的用户才可以存取。DAC比较灵活,MAC比较严格。第四章数据库安全性4.1计算机系统安全性概述4.2数据库安全性控制4.3数据库存取控制方法4.4视图机制4.5审计4.6统计数据库安全性4.7小结一、用户权限用户权限由两个要素组成:数据对象和操作类型关系数据库中用户的权限二、建立用户建立用户分两步:1)建立服务器登录用户点击服务器(local)-》双击“安全性”-》双击“登录”,按右键拉出菜单,选择“新建登录”-》输入新用户名称;选SQLServer身份验证,输入密码。点击“确定”退出。2)数据库用户的建立选定某数据库,点击展开-》点击“用户”,按右键拉出菜单,选“新建数据库用户”,在服务器登录用户中选择登录名,用户名和登录名一致。点击“确定”退出。三、授权与回收1、授权使用GRANT语句为用户授权,其一般格式如下:GRANT权限[,权限]...[ON对象名]TO用户[,用户]...[WITHGRANTOPTION];功能:将对指定操作对象的指定操作权限授予指定的用户。带WITHGRANTOPTION选项,获得某种权限的用户还可以把这种权限再授予别的用户。否则只能使用该权限,不能传播该权限。由DBA和表的建立者(即表的属主)发出命令基本表或视图的属主拥有对该表或视图的一切操作权限例题例1把查询Student表的权限授给用户U1GRANTSELECTONStudentTOU1;例2把对Course表的全部权限授予用户U2和U3(P127)GRANTALLONCourseTOU2,U3;例3把对表SC的查询权限授予所有用户GRANTSELECTONSCTOPUBLIC;//PUBLIC表示全体用户例4把查询Student表和修改学号的权限授给用户U4GRANTUPDATE(Sno),SELECTONStudentTOU4;上机操作:点击某数据库如s_c数据库,进入查询分析器,输入上述命令并执行,以下各例相同。例题(续)例5把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户GRANTINSERTONSCTOU5WITHGRANTOPTION;执行例5后,U5不仅拥有了对表SC的INSERT权限,还可以传播此权限:GRANTINSERTONSCTOU6WITHGRANTOPTION;同样,U6还可以将此权限授予U7:GRANTINSERTONSCTOU7;但U7不能再传播此权限。U5--U6--U72、收回权限授予的权限可以由DBA或其他授权者使用REVOKE语句收回,其一般格式为:REVOKE权限[,权限]...[ON对象名]FROM用户[,用户]...;功能:从指定用户那里收回对指定对象的指定权限例题例6把用户U4修改学生学号的权限收回REVOKEUPDATE(Sno)ONStudentFROMU4;例7收回所有用户对表SC的查询权限REVOKESELECTONSCFROMPUBLIC;例题(续)例8把用户U5对SC表的INSERT权限收回REVOKEINSERTONSCFROMU5CASCADE;系统将收回直接或间接从U5处获得的对SC表的INSERT权限,若U5将INSERT权限传给了U6和U7,则收回U5、U6、U7获得的对SC表的INSERT权限。3、创建数据库模式的权限GRANTCREATETABLETOCAO;GRANTCREATEVIEWTOCAO;//在某一数据库下完成,如点击student数据库,进入查询分析器,输入上述命令并执行。GRANTCREATEDATABASETOCAO;//在master数据库下完成。REVOKEcreateviewfromcao按右键拉出菜单,选择“属性”查看用户即用户权限4.数据库角色数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。我们可以为一组具有相同权限的用户创建一个角色,以简化授权过程。角色创建CREATEROLE角色名给角色授权GRANT权限[,权限]ON对象名TO角色[,角色]将一个角色授予其他角色或用户GRANT角色1[,角色2…]TO角色3[,用户1…]sqlserver不支持命令方式,但支持角色的概念和方法。WITHADMINOPTION角色3和用户1具有角色1和角色2的权限和,如果带有WITHADMINOPTION选项,则角色3和用户1可以将角色1和角色2的权限授予其他角色。执行者是角色的创建者或在其上有ADMINOPTION。角色权限的收回REVOKE权限[,权限…]ON对象类型对象名FROM角色1[,角色2…]执行者是角色的创建者或在其上有ADMINOPTION。数据库角色例11通过角色来实现将一组权限授予一个用户CREATEROLER1;//创建角色R1GRANTSELECT,UPDATE,INSERTONStudentTOR1;//给角色R1授权GRANTR1TO王平,张明,赵玲;//将R1授予王平,张明,赵玲REVOKER1FROM王平;//收回王平三项权限例12角色权限的修改GRANTDELETEONStudentTOR1;//给角色R1增加DELETE权限REVOKESELECTONStudentFROMR1;//减少R1对Student表的SELECT权限数据库角色第四章数据库安全性4.1计算机系统安全性概述4.2数据库安全性控制4.3数据库存取控制方法4.4视图机制4.5审计4.6统计数据库安全性4.7小结4.4视图机制视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。视图机制与授权机制配合使用:首先用视图机制屏蔽掉一部分保密数据,然后在视图上面再进一步定义存取权限。例:CREATEVIEWCS_Student//先建立计算机系学生的视图ASSELECT*FROMStudentWHERESdept=‘CS’在视图上进一步定义存取权限GRANTSELECTONCS_StudentTO王平;GRANTALLPRIVILIGESONCS_StudentTO张明;第四章数据库安全性4.1计算机系统安全性概述4.2数据库安全性控制4.3数据库存取控制方法4.4视图机制4.5审计4.6统计数据库安全性4.7小结4.5审计什么是审计启用一个专用的审计日志(AuditLog)将用户对数据库的所有操作记录在上面;DBA可以利用审计日志中的追踪信息找出非法存取数据的人;安全级别较高的DBMS必须具有审计功能。审计功能的可选性审计很费时间和空间DBA可以根据应用对安全性的要求,灵活地打开或关闭审计功能。审计(续)审计一般可以分为用户级审计和系统级审计1)用户级审计是任何用户都可以设置的审计,主要是用户针对自己创建的表或视图进行审计,记录所有用户对这些表或视图进行的操作。2)系统级审计由DBA设置,监测登录操作、GRANT和REVOKE操作、数据库操作。审计(续)AUDIT语句用来设置审计功能,NOAUDIT语句用来取消审计功能。例1:对修改SC表结构和修改SC表数据的操作进行审计AUDITALTER,UPDATEONSC;例2:取消对SC表的一切审计NOAUDITALLONSC;SQLSERVER通过管理功能来实现。第四章数据库安全性4.1计算机系统安全性概述4.2数据库安全性控制4.3数据库存取控制方法4.4视图机制4.5审计4.6统计数据库安全性4.7小结4.6统计数据库安全性统计数据库允许用户查询聚集类型的信息(如合计、平均值等)统计数据库中特殊的安全性问题隐蔽的信息通道,能从合法的查询中推导出不合法的信息(工资计算,根据总数和固定部分,推出浮动部分)统计数据库安全性(续)规则1:任何查询至少要涉及N(N足够大)个以上的记录规则2:任意两个查询的相交数据项不能超过M个规则3:任一用户的查询次数不能超过1+(N-2)/M数据库安全机制的设计目标:试图破坏安全的人所花费的代价得到的利益第四章数据库安全性4.1计算机系统安全性概述4.2数据库安全性控制4.3数