【文档说明】2017第7章数据库安全性.pptx,共(72)页,245.715 KB,由精品优选上传
转载请保留链接:https://www.ichengzhen.cn/view-289119.html
以下为本文档部分文字说明:
第七章:数据库安全性❑数据库安全性概述❑数据库安全性控制❑Oracle数据库数据安全性控制介绍对数据库安全的威胁无意损坏天窗心存不满的专业人员数据库受保护数据物理损坏火灾,水灾等非法访问黑客数据复制工业间谍蓄意破坏者通信损坏典型的数据访问方式查询数据执行C/S结构服务
器客户执行数据查询数据库作为服务数据执行查询依赖于数据的方法数据库安全概述❑数据库系统的安全保护措施是否有效是数据库系统主要的性能指标之一❑数据库的安全性❑指保护数据库,防止因用户非法使用数据库所造成的数据泄漏、更改或破坏❑数据的保密❑指用户合法地访问到机密数据后能否对这些数据保密❑
通过制订法律道德准则和政策法规来保证非法使用数据库的情况⚫用户编写一段合法的程序绕过DBMS及其授权机制,通过操作系统直接存取、修改或备份数据库中的数据⚫直接或编写应用程序执行非授权操作⚫通过多次合法查询数据库
从中推导出一些保密数据–例如:某数据库应用系统禁止查询单个人的工资,但允许查任意一组人的平均工资。用户甲想了解张三的工资⚫首先查询包括张三在内的一组人的平均工资⚫然后查用自己替换张三后这组人的平均工资➔推导出张三的工资⚫破坏安全性的行为可能是
无意的,故意的,恶意的数据库系统的安全机制授权机制约束机制审计触发器存储过程用户身份验证操作系统数据库服务器(RDBMS)视图计算机系统中的安全模型应用DBMSOSDB低高安全性控制层次方法:用户标识和鉴定存取控制审计视图操作系统安全保护密码存储数
据库安全性控制的常用方法⚫用户标识和鉴定(Identification&Authentication)–系统提供的最外层安全保护措施⚫存取控制–访问权限⚫通过视图调整授权–定义可向用户授权数据库特定部分的用户视图⚫审计–追踪信息,重现导致数据库现有状况的一系列事件⚫密码存储–使用
加密技术保护机密数据用户标识与鉴定⚫基本方法–系统提供一定的方式让用户标识自己的名字或身份;–系统内部记录着所有合法用户的标识;–每次用户要求进入系统时,由系统核对用户提供的身份标识;–通过鉴定后才提供机器使用权。–
用户标识和鉴定可以重复多次用户标识与鉴定⚫让用户标识自己的名字或身份的方法–用户名/口令⚫简单易行,容易被人窃取–每个用户预先约定好一个计算过程或者函数⚫系统提供一个随机数⚫用户根据自己预先约定的计算过程或者函数进行计算⚫系统根据用户计算结果是否正确
鉴定用户身份用户标识和鉴定⚫SQLServer提供两种不同的方法来验证用户进入服务器。用户可以根据自己的网络配置决定使用其中一种。–Windows验证⚫NT以上O.S.:允许SQLServer使用O.S.的用户名和口令–SQLServe
r验证⚫用户传给服务器的登录信息与系统表syslogins中的信息进行比较。如果两个口令匹配,SQLServer允许用户访问服务器。如果不匹配,SQLServer不允许访问,并且用户会从服务器上收到一个出错信息用户标识和鉴定⚫服务器登录标识管理sa和Adm
inistrator是系统在安装时创建的分别用于SQLServer混合验证模式和Windows验证模式的系统登录名。如果用户想创建新的登录名或删除已有的登录名,可使用下列两种方法–使用SQLServer企业管理器管理登录名–使用SQLServer系统存储过程管理登录名用户标识和鉴定⚫数
据库用户管理在SQLServer中,登录对象和用户对象是SQLServer进行权限管理的两种不同的对象。–登录对象:服务器方的一个实体,使用一个登录名可以与服务器上的所有数据库进行交互。–用户对象:一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的
访问权限,一个登录名可以被授权访问多个数据库,一个登录名在每个数据库中只能映射一次。用户标识和鉴定⚫数据库用户管理SQLServer可使用下列两种方法来管理数据库用户–使用SQLServer企业管理器管理数
据库用户;–使用SQLServer系统存储过程sp_grantdbaccess管理数据库用户⚫在SQLServer中主要有两种类型的角色–服务器角色–数据库角色存取控制用户权限:用户对数据库中的不同数据对象允许执行的操作权限关系系统中的存取权限:不同的DBMS具体实现方法是存在一
些差别的数据本身:表、属性列外模式,模式,内模式不同类型的数据对象有不同的操作权力DBMS的存取控制SQL:GrantRevoke数据字典数据库DBMS用户、DBA用户SQL:查询⚫任意控制(DAC)⚫强制控制(MAC)
SQL语法分析语义检查DAC检查MAC检查继续安全检查❑存取控制机制包括:定义用户权限,该定义被存放到数据字典中合法权限检查,根据数据字典检查用户权限定义存储权限检查存储权限存取控制–授权(Authorization)❑谁定义?D
BA是表的建立者(即表的属主)❑如何定义?SQL语句:GRANT-将对指定操作对象的指定操作权限授予指定的用户REVOKE-从指定用户那里收回对指定对象的指定权限存取控制–授权❑GRANT语句的一般格式:grant<权限>[,<权限>]…[on<对象类型><对象名>]to<用
户>[,<用户>…][withgrantoption];❑例子:把查询Students表的权限授给用户wanggrantselectontableStudentstowang;❑例子:把对Students和SC表的所有访问权限授给全
部用户grantallpriviligesontableStudents,SCtopublic;❑DBA把在数据库SC中建立表的权限授予用户zhaograntcreatetabondatabaseSCtozhao;存取控制–授权❑withgrantoption子句例子:把
对表SC的查询权限、修改成绩权限授给wang和zhang,并允许wang和zhang将该权限授予他人grantselect,update(Grade)ontableSCtowang,zhangwithgrantoption;❑DBA、对象的建立者
和经过withgrantoption授权的用户可以把他们对该对象具有的操作权限授予其它的合法用户USER1USER2USER3USER4操作权限对象对象类型操作权限属性列TABLESELECT,INSERT,UPDATEDELET
E,ALLPRIVIEGES视图TABLESELECT,INSERT,UPDATEDELETE,ALLPRIVIEGES基本表TABLESELECT,INSERT,UPDATEDELETE,ALTER,INDEX,ALLPRIVIEGES数据库DATA
BASECREATETAB用户权限⚫建表(CREATETAB)的权限:属于DBA⚫DBA授予-->普通用户⚫基本表或视图的属主拥有对该表或视图的一切操作权限⚫接受权限的用户–一个或多个具体用户–PUBLIC(全
体用户)存取控制–授权回收⚫授出的权限可以由DBA或其他的授权者收回revoke<权限>[,<权限>]…[on<对象类型><对象名>]from<用户>[,<用户>…]⚫例子:把用户wang和zhang修改成绩的权限收回revokeupdate(Gra
de)ontableSCfromwang,zhang;⚫例子:收回所有用户对SC表的查询授权revokeSELECTonTABLESCfromPUBLIC;⚫授权回收操作是级联的USER1USER2USER3USER4数据库
角色(Role)⚫如果要给成千上万个雇员分配许可,将面临很大的管理难题,每次有雇员到来或者离开时,就得有人分配或去除可能与数百张表或视图有关的权限。这项任务不但耗时,而且容易出错。⚫一个相对简单有效的解决方案就是定义数据库角色。⚫数据库角色是被命
名的一组与数据库操作相关的权限,即一组相关权限的集合。⚫可以为一组具有相同权限的用户创建一个角色。使用角色来管理数据库权限可以简化授权的过程。授权管理DBARole用户用户用户用户授权授权属于任意控制视图机制⚫视图机制把要保密的数
据对无权存取这些数据的用户隐藏起来,从而自动地对数据提供一定程度的安全保护⚫视图机制更主要的功能在于提供数据独立性,其安全保护功能太不精细,往往远不能达到应用系统的要求视图机制⚫在实际应用中通常是视图机制与授权机制配合使用,首先用视图机制屏蔽掉一部分保密数据,然后
在视图上面再进一步定义存取权限⚫这时视图机制实际上间接实现了支持存取谓词的用户权限定义视图机制⚫例如:USER1只能检索计算机系学生的信息–(1)先建立计算机系学生的视图CS_StudentCREATEVIEWCS_StudentASSELECTFROMStudentWHERESde
pt=‘CS’;–(2)在视图上进一步定义存取权限GRANTSELECTONCS_StudentTOUSER1;SQLServer的安全机制⚫SQLServer采用4个等级的安全验证:–操作系统安全验证;–SQLServer安全验证;
–SQLServer数据库安全验证;–SQLServer数据库对象安全验证。SQLServer的安全机制⚫权限管理:在SQLServer中有三种类型的权限–语句权限:可以委派给其它用户–对象权限:可以委派给其它用户–隐含权限:只允许属于特定角色的人使用⚫在SQLServer中主要有两种类型的角色–
服务器角色与数据库角色SQLServer的安全机制⚫语句权限–是SQLServer中功能最强大的一些权限,这些权限只限分配在单个数据库,跨数据库的权限是不可能的–通常只给那些需要在数据库中创建或修改对象、执行数据库或事务日志备份的用户–当分配语句权限给用户时
,就给了他们创建对象的能力,通常使用对应的SQLServer命令来引用SQLServer的安全机制⚫语句权限–CREATEDATABASE创建数据库–CREATETABLE创建表–CREATEVIEW创建视图–CREATERULE创建规则–CREATEDEFAULT创建缺省–CREATEP
ROCEDURE创建存储过程–BACKUPDATABASE备份数据库–BACKUPLOG备份事务日志SQLServer的安全机制⚫对象权限–对象权限分配给数据库层次上的对象,并允许用户访问和操作数据库中已存在的对象–没有这些权限,用户将不能访问
数据库里的任何对象。这些权限实际上给了用户运行特定SQL语句的能力⚫对象授权操作–表:SELECT,INSERT,UPDATE,DELETE,REFERENCE–视图:SELECT,INSERT,UPDAT
E,DELETE–存储过程:EXECUTE–列:SELECT,UPDATEOracle数据库的安全性措施⚫ORACLE的安全措施:–用户标识和鉴定–授权和检查机制–审计技术–用户通过触发器灵活定义自己的安全性措施ORACLE的用户标
识和鉴定⚫ORACLE允许用户重复标识三次⚫如果三次仍未通过,系统自动退出ORACLE的授权与检查机制⚫ORACLE授权和检查机制的特色–ORACLE的权限包括系统权限和数据库对象的权限–采用非集中式的授权机制–每个用户授予与回收自己创建的数据库对象的权限–DBA负责授予与回收系统权限,也可以授
予与回收所有数据库对象的权限–允许重复授权,即可将某一权限多次授予同一用户,系统不会出错–允许无效回收,即用户不具有某权限,但回收此权限的操作仍是成功的。ORACLE的授权与检查机制⚫ORACLE的权限–系统权限(80多种)⚫创建会话⚫创建表⚫创建视图⚫创建用户……–数据库对象的权限Orac
le系统权限⚫DBA在创建一个用户时需要将其中的一些权限授予该用户⚫角色–ORACLE支持角色的概念–ORACLE允许DBA定义角色–ORACLE提供的预定义角色⚫CONNECT⚫RESOURCE⚫DBAOracle系统权限⚫CONNECT角色–允许用户登录数据库并执行数据查询和操
纵⚫ALTERTABLE⚫CREATEVIEW/INDEX⚫DROPTABLE/VIEW/INDEX⚫GRANT,REVOKE⚫INSERT,UPDATE,DELETE⚫SELETE⚫AUDIT/NOA
UDITOracle系统权限⚫RESOURCE角色–允许用户建表,即执行CREATETABLE操作–由于创建表的用户将拥有该表,因此他具有对该表的任何权限Oracle系统权限⚫DBA角色–允许用户执行授权命令,建表,对任何表的数据进行操纵。–DBA角色涵盖了前两种角色,此外还可以执行一
些管理操作。–DBA角色拥有最高级别的权限。Oracle系统权限例:DBA建立一用户U12后,欲将ALTERTABLE、CREATEVIEW、CREATEINDEX、DROPTABLE、DROPVIEW
、DROPINDEX,GRANT,REVOKE、INSERT、SELETE、UPDATE、DELETE、AUDIT、NOAUDIT等系统权限授予U12,则可以只简单地将CONNECT角色授予U12即可:GRANTCONNECTTOU12;这样就可以省略十几条GRANT语句。Oracle数据库对象的
权限⚫ORACLE可以授权的数据库对象–基本表–视图–序列⚫利用它可生成唯一的整数。一般用于自动生成主码值。避免了在应用层实现序列而引起的性能瓶颈。–同义词:一种映射关系⚫createpublicsynonymtable_nameforuser.table_name–存储过程–函数Oracle
数据库对象的权限⚫基本表的安全性级别–表级–行级–列级Oracle数据库对象的权限⚫表级安全性–表的创建者或DBA可以把对表的权限授予其他用户–表级权限⚫ALTER:修改表定义⚫DELETE:删除表记录⚫INDEX:在表上建索引⚫INSERT:向表中插入数据记录⚫
SELECT:查找表中记录⚫UPDATE:修改表中的数据⚫ALL:上述所有权限–表级授权使用GRANT/REVOKE语句例:GRANTSELECTONSCTOU12;Oracle数据库对象的权限⚫行级
安全性–ORACLE行级安全性由视图间接实现例:用户U1只允许用户U12查看自己创建的Student表中有关信息系学生的信息,则首先创建视图信息系学生视图S_IS:CREATEVIEWS_ISASSELECTSno
,Sname,Ssex,Sage,SdeptFROMStudentWHERESdept='IS';然后将关于该视图的SELECT权限授予U12用户:GRANTSELECTONS_ISTOU12;Oracle数据库对象的权限⚫列级安全性–借助视图实现
列级安全性CREATEVIEWS_VASSELECTSno,SnameFROMStudent;GRANTSELECTONS_VTOU12;–直接在基本表上定义列级安全性例:GRANTUPDATE(Sno,Cno)ONSCTOU12;Oracle数据库对
象的权限⚫三级对象的层次结构–表、行、列三级对象自上而下构成一个层次结构–上一级对象的权限制约下一级对象的权限例:当一个用户拥有了对某个表的UPDATE权限,即相当于在表的所有列了都拥有了UPDATE权限。Oracle数据库对象的权限⚫ORACLE对数据库对象的权限采用分散控制方式
–允许具有WITHGRANTOPTION的用户把相应权限或其子集传递授予其他用户⚫ORACLE不允许循环授权,即授权者不能把权限再授予其授权者或祖先U1───→U2───→U3───→U4↑│└───────×────────┘ORACLE的授权
与检查机制⚫ORACLE的权限检查机制–ORACLE把所有权限信息记录在数据字典中–当用户进行数据库操作时,ORACLE首先根据数据字典中的权限信息,检查操作的合法性–在ORACLE中,安全性检查是任何数据库操作的第一步以下内容供参考⚫强制控
制⚫审计⚫数据库加密⚫统计数据库的安全性强制控制⚫任意访问控制是关系数据库的传统方法,可对数据库提供充分保护,但它不支持随数据库各部分的机密性而变化,技术高超的专业人员可能突破该保护机制获得未授权访问⚫另外,由于用户对数据的存取权限是“自主”的,用户可以自由地决定将
数据的存取权限授予何人、决定是否也将“授权”的权限授予别人。在这种授权机制下,仍可能存在数据的“无意泄露”强制控制⚫强制访问控制克服了任意访问控制的缺点。⚫在强制访问控制方法中,不能由一个用户不加控制地将访问权限授予或传递给另一用户。⚫强
制访问控制方法是指系统为了保证更高程度的安全性,它不是用户能直接感知或进行控制的。⚫强制访问控制主要适用于对数据有严格要求而固定密级分类的部门,如军事部门或政府部门强制控制⚫强制访问控制模型基于与每个数据项和每个用户关联的安全性标识(SecurityLabel)。安
全性标识被分为若干级别–绝密(TopSecret)–机密(Secret)–秘密(Confidential)–一般(Public)⚫数据的标识称为密级(SecurityClassification)⚫用户的标识称为许可证级别(SecurityClearance)强制控制⚫当某一用户以某一密级进入系
统时,在确定该用户能否访问系统上的数据时应遵守如下规则–(1)当且仅当用户许可证级别大于等于数据的密级时,该用户才能对该数据进行读操作–(2)当且仅当用户的许可证级别小于或等于数据的密级时,该用户才能对该数据进行写操作审计⚫审计功能启用一个专
用的审计日志(AuditLog),系统自动将用户对数据库的所有操作记录在上面⚫DBA可以利用审计日志中的追踪信息,重现导致数据库现有状况的一系列事件,以找出非法存取数据的人C2以上安全级别的DBMS必须具
有审计功能审计⚫审计日志一般包括下列内容:–(1)操作类型(如修改、查询等)–(2)操作终端标识与操作人员标识–(3)操作日期和时间–(4)操作的数据对象(如表、视图、记录、属性等)–(5)数据修改前后的值审计功能的可选性⚫审计很费时间和空间,所以DBMS往往都将其作为可选特征–
DBA可以根据应用对安全性的要求,灵活地打开或关闭审计功能⚫审计技术是预防手段,监测可能的不合法行为⚫当数据相当敏感,或者对数据的处理极为重要时,就必须使用审计技术审计⚫审计一般可以分为–用户级审计是任何用户可设置的审计,主要是
针对自己创建的数据库或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作–系统级审计只能由DBA设置,用以监测成功或失败的登录要求、监测Grant和Revoke操作
以及其他数据库级权限下的操作数据库加密技术⚫防止数据库中数据在存储和传输中失密的有效手段⚫针对的情况–入侵者绕过系统访问数据库的信息内容–入侵者通过物理移除磁盘或备份磁盘盗走数据库–入侵者接入载有真实
用户数据的通信链路–聪明的入侵者通过运行程序突破操作系统防线来检索数据⚫在这些情况下,数据库系统的各种授权规则或许不能提供充分的保护。标准安全技术无法防范绕过系统访问数据的侵扰,这就需要采取其他保护措施来加强安全系统加密的基本思想⚫根据一定的算法将原始数据(术语为明文,Pla
intext)变换为不可直接识别的格式(术语为密文,Ciphertext)⚫不知道解密算法的人无法获知数据的内容加密方法⚫替换方法–使用密钥(EncryptionKey)将明文中的每一个字符转换为密文中的一
个字符⚫置换方法–将明文的字符按不同的顺序重新排列⚫这两种方法结合能提供相当高的安全程度例:美国1977年制定的官方加密标准:数据加密标准(DataEncryptionStandard,简称DES)数据库加密技术⚫基于文件的加密–把数据库文件作为整体,用加
密算法对整个数据库文件加密来保证信息的真实性和完整性。数据的共享是通过用户用解密密钥对整个数据库文件进行解密来实现的。⚫实际应用受到多方面的限制–数据修改的工作将变得十分困难,需要进行解密、修改、复制和加密四个操作,极大地增加了系统的时空开销–即使用户只是需要查看某一条记
录,也必须将整个数据库文件解密,这样无法实现对文件中不需要让用户知道的信息的控制数据库加密技术⚫字段加密(字段是最小的加密单位)⚫字段加密的原理–将重要的字段内容进行加密,当使用查询语句获取结果集后,再将这些重要的字段内容进行解密
。每个字段可以使用不同的密钥,也可以使用共同的密钥⚫字段加密的特点–较高的安全性–影响数据库的访问速度:对一个记录进行存取时需要多次的加/解密处理–对数据库管理系统(DBMS)的功能影响也很大➔在实际应用中,一般不会对所有记录都进行加
密处理,而是对部分安全性要求高的字段进行加密处理数据库加密技术⚫通常情况下,以下几种字段不宜加密–索引字段不能加密–关系运算的比较字段不能加密–表间的连接码字段不能加密数据库加密技术⚫记录加密–将表中的行的所有字段或部分字段组成一个整体,进行统一加密,当应用程序访问数据库中的表
记录时,再将行的所有字段或部分字段进行统一解密。数据库加密对DBMS的影响⚫数据库加密后对DBMS原有功能的主要影响–无法实现对数据制约因素的定义;–密文数据的排序、分组和分类;–SQL语言中的内部函数不能作用于加/解密数据;–DBMS的一些应用开发工具的使用受到限制⚫在对数据库进行加密时,应注
意以下几点–选择合适的加密算法–选择合适的加密方法–测试加密后访问数据库的效率统计数据库的安全性⚫统计数据库的特点–允许用户查询聚集类型的信息(如合计、平均值等)–不允许查询单个记录信息⚫示例:–允许查询“程序员的平均工资是多少”–不
允许查询“程序员张勇的工资”统计数据库的安全性⚫统计数据库中特殊的安全性问题–隐蔽的信息通道–从合法的查询中推导出不合法的信息统计数据库的安全性⚫例1:下面两个查询都是合法的–本公司共有多少女高级程序员?–本公司女高级程序员的工资总额是多少?如果第一
个查询的结果是“1”,那么第二个查询的结果显然就是这个程序员的工资数规则1:任何查询至少要涉及N(N足够大)个以上的记录统计数据库的安全性⚫例2:用户A发出下面两个合法查询–用户A和其他N个程序员的工资总额是多少?–用户B和其他N个程序员的工资总额是多少?若第一个查询的结果
是X,第二个查询的结果是Y,由于用户A知道自己的工资是Z,那么他可以计算出用户B的工资=Y-(X-Z)原因:两个查询之间有很多重复的数据项规则2:任意两个查询的相交数据项不能超过M个统计数据库的安全性⚫可以证明,在上述两条规定下,如
果想获知用户B的工资额A至少需要进行1+(N-2)/M次查询。规则3:任一用户的查询次数不能超过1+(N-2)/M。⚫如果两个用户合作查询就可以使这一规定失效。数据库安全机制的设计目标⚫试图破坏安全的人所花费的代价>>得到的利
益