【文档说明】数据库安全性课件.ppt,共(52)页,354.500 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92417.html
以下为本文档部分文字说明:
并发控制1、并发操作可能出现的问题2、并发控制方法——封锁技术(1)锁的类型(2)封锁粒度(3)活锁和死锁3、SQLServer的封锁机制7.5数据库安全性教学要求:了解数据库系统安全性所涉及的内容,掌握数据库安全性控制的常用方法
以及SQLServer中安全性控制机制和控制策略。教学重点:数据库中维护安全性的机制7.5.1问题的提出7.5.2数据库安全性控制概述7.5.3SQLServer的安全性机制7.5.4SQLServer访问控制策略
7.5.5统计数据库的安全性7.5.1问题的提出数据库的一大特点是数据可以共享数据不能是无条件的共享例:教学管理、银行储蓄数据、军事秘密、国家机密、新产品实验数据、市场营销策略、销售计划等。数据共享给数据库
带来的问题——安全性问题数据库的安全性:防止不合法访问数据库造成数据泄露、更改或破坏7.5.2数据库安全性控制概述一、数据库系统安全性涉及到哪些方面?计算机系统——三类安全性问题:技术安全类、管理安全类、政策法律类数据库系统——引进了数据库的计算机系统,安全性涉及到计
算机的物理层、使用人员、操作系统、网络层以及数据库管理系统本身等多个方面。物理层:防止入侵者强行进入或暗中潜入破坏物理文件人员层:严格控制用户的授权。操作系统层:OS安全对数据库存在着很大的威胁。网络层:为数据库系统的安全提供一个保障DBMS
层:DBMS有完善的访问控制机制。1、用户标识和鉴定系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的身份。每次用户要求进入系统时,由系统进行身份核对,通过鉴定后才有使用权。缺点:用户名和口令易被窃
取。二、数据库安全性控制的常用方法分为自主存取控制和强制存取控制方法1)自主存取控制方法(DAC)由用户自主决定对数据库对象的操作权限,用户可以对哪些对象进行操作,完全取决于用户之间的授权(通过GRANT和REVOKE语句实现)。SQLServer存取控制属于自主存
取控制方法。例:将成绩表SC的查询权限授予给student用户grantselectonsctostudent2、存取控制2)强制存取控制方法(MAC)为每一个数据库对象标以一定的密级,对每一个用户确定一个许可级别,不同级别的用户拥有的数据库的操作权限不同。优点:用户不能直接感知或进行权限控制,
保证了更高程度的安全性。适用于对数据有严格而固定密级分类的部门,如:军事部门、政府部门等。3、数据库角色角色:被命名的一组与数据库操作相关的权限。可以为一组具有相同权限的用户创建一个角色。简化授权的过程。例:T_role角色具有对成绩表的查
询、修改和删除权限。如果某教师(用户)希望得到对成绩表的查询、修改和删除权限,则可直接将T_role授予给该某教师。注意:不同的DBMS对角色操作的SQL语句略有不同4、视图机制目的:把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护。主要功能是
提供数据独立性。间接实现了用户权限定义。[例]建立计算机系学生的视图,把该视图的查询权限授于S。CREATEVIEWCS_StudentASSELECT*FROMStudentWHEREdeptno=‘C
S’;GRANTSELECTONCS_StudentTOS;5、审计审计:DBMS提供的一种可以记录下对数据库的所有操作活动和轨迹的可选功能。将用户对数据库的所有操作记录在审计日志上。DBA利用审计日志找出非法存取数据
的人、时间和内容用户级审计和系统级审计用户级审计:用户针对自己创建的数据库表或视图进行审计。记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作。系统级审计:DBA设置。监测成功或失败的登录要求,监测GRAN
T和REVOKE操作以及其他数据库级权限下的操作。6、用户自定义安全性可以通过触发器或存储过程实现自定义安全性。例:假设在MIS系统中,对工资表的修改必须是在上班时间(星期一到星期五的9:00-17:00),其余时间的插入和修改均库无效。
可以用如下的触器createtriggersecur_zgon职工forinsert,update,deleteasifdatename(weekday,getdate())='星期六'ordatename(weekday,getdate())=
'星期日'or(convert(int,datename(hour,getdate()))notbetween9and17)beginraiserror('只允许在工作时间操作数据!',16,1)rollbacktransactionend例:某企
业的数据库应用系统中用户类型如下:管理员:对数据库的所有数据进行操作和维护。生产部门用户:对生产数据有查询、修改、插入和删除权限。销售部门用户:对订单数据有查询、修改和删除权限。劳资用户:对人事、工资数据有查询、修改、插入和删除权限。普通职工:对自己的工资、产品信息具有查询权。如何实现该
系统的安全性?可以按以下策略设计:1)建立登录用户,并授予为数据库用户.2)对用户进行分类授权:可直接对各类用户授以相应的权限,也可以用角色授权,即,首先创建多个角色,将各类用户拥有的权限授予不同角色,再将角色授予给相应的用户。3)对于职工,可以用视图或存储过程实现权限管理
。4)可以用触发器,也可以用审计功能实现对数据操作的监控,以防渎职现象的发生。7.5.3SQLServer的安全性机制SQLServer的安全性机制可分为下图所示4个等级:数据库用户客户机SQLServer服务器客户操作系统安全性SQLServer登录安全性数据库的使用安全性数据库对象的使用
安全性数据库对象用户首先要登录到客户端的操作系统中提供口令和密码才能登录到SQLServer服务器具有访问数据库的权限具有访问数据库对象的权限7.5.4SQLServer访问控制策略SQLServer的用户通过授权获得对数据的访问权限。其访问控制分为如下两阶段:安全帐户认证:判定用户
是否有权连接到服务器并向服务器发送SQL命令。访问许可确认:判定是否有对数据库的访问权限1、SQLServer的安全帐户认证方式及认证模式1)身份验证方式——用户必须通过身份验证才能连接到SQLServer中。SQLServer有两种身份验证方式:集成验证方式(Wi
ndows身份认证方式):用户通过windows的身份验证后,不必提供SQLServer的Login账号和口令就自动进行SQLServer身份验证。标准身份验证方式(SQLServer身份验证方式):由数据库管理系统独立来管理自己的数据库安全。登录时,必须提供SQLServer自己的登录
账号和口令2)SQLServer的身份认证模式Windows身份验证模式:用Windows身份验证方式登录;混合模式:可以用Windows身份验证方式,也可以用SQLServer身份验证方式注意:如果在win98下安装的桌面版SQLServer,只能用SQLServer身份
验证方式登录。3)安全帐户管理可用T-SQL语句和企业管理器管理数据库帐户(服务器登录标识)特殊帐户sa:SQLServer完成安装以后,建立了sa。sa帐户拥有最高的管理权限,可以执行服务器范围内的所有
操作。(1)windows安全模式用户管理:sp_grantlogin:授予WindowsNT用户或组连接SQLServer服务器sp_denylogin:禁止用户或组连接到SQLServer服务器例:sp_grantlogin‘jxgl\users
’注意:对于没有建立WindowsNT帐户的用户,只能使用SQLServer登录标识来管理用户连接。或首先建立WindowsNT帐户,再用sp_grantlogin授予其连接SQLServer服务器的权限SQLSer
ver中用于用户管理的SQL语句(2)SQLServer身份验证模式sp_addlogin:创建登录用户sp_password:改变用户的口令sp_grantdbaccess:授权某个登录用户为数据库用户例:sp_addloginusers,us
ers2访问许可确认访问许可确认:用户连接到SQLServer服务器后,系统判断其是否拥有对数据库的访问许可权。授予用户的权限决定其对数据库所能执行的操作。安全帐户认证和访问许可确认的区别:安全帐户认证决定用户能否向SQLServer服务器
发送SQL命令;访问许可确认决定用户能在数据库中执行哪些SQL语句。1)SQLServer中的角色标准角色应用程序角色固定角色用户自定义角色public角色SQLServer角色固定服务器角色固定数据库角色固定角色固定角色:S
QLServer预先定义的角色。所拥有的权限涉及到服务器配置、服务器和数据库的访问控制等。用户只有加入固定角色才能获其特殊的许可权限。根据所作用的级别不同,划分为:固定服务器角色:SQLServer在安装时就已经创建好用于分配服务器管理权限的实体。固定数据库角色:设置在数据库级,提供最基本的数据
库权限的综合管理sysadmin:固定服务器角色,能够在服务器上执行所有操作。db_owner:固定数据库角色,拥有数据库最高权限。用sp_addsrvrolemember可将固定服务器角色分配给某登录帐户。sp_addro
lemember可将某个登录帐户加入某个固定数据库角色。例:sp_addsrvrolememberzzg‘sysadmin’用sp_addrolememberdb_owner,zzg主要的固定角色public角色:每
个数据库均具有这一角色,数据库的所有用户自动属于public角色,并且不能从public角色中删除。与固定角色一样,public角色也不能被用户删除。用户自定义角色:SQLServer中sysadmin、db_owner等固定角色中的成员可以自定义数据库角色。可以用SQL语句和Enter
priseManager管理用户自定义角色。SQLSerer中对角色管理的SQL语句:1)角色的创建:sp_addrole2)给角色授权:GRANT<权限列表>ON对象名TO<角色>[,<角色>]…3)将一个角色授予给其他的角色或用户:sp_addroleme
mber4)角色权限的收回REVOKE<权限列表>ON<对象名>FROM<角色>[,<角色>]…5)取消用户的角色:sp_droprolemember[例]通过角色实现将一组权限授予一个用户。步骤如下:1)sp_addro
leR1;2)GRANTSELECT,UPDATE,INSERTONStudentTOR1;3)sp_addrolememberR1,zhou4)revokeupdateonstudentfromR15)sp_dr
oprolememberR1,zcx;应用程序角色应用程序角色:是SQLServer中另一种访问控制实现方法,它是根据用户所运行的应用程序决定当前应用程序能否连接和访问数据库对象。使用应用程序角色的原因:见教材主在使用方法:请同学们查阅相关资料4)权限设置语句权限:决定用户能否操
作数据库和创建数据库对象,如表、视图、存储过程、默认和规则等。主要有CREATETABLE、CREATEVIEW、BACKUPDATABASE等语句权限。对象权限:决定用户对数据库对象所执行的操作,控制用户在表和视图上执行SELECT、INSERT、UPD
ATE、DELETE语句以及执行存储过程的能力。例:某企业开发一个数据库应用系统,系统中有用户:系统管理员:对数据库的所有数据进行操作和维护。生产部门用户:对生产计划表等数据具有查询、修改、插入和删除等
权限。销售部门用户:对订单数据有查询、修改和删除权限。劳资用户:对人事、工资具有查询、修改、插入和删除权限。普通职工:对自己的工资、对企业的生产以及产品信息具有查询权。如何实现该系统的安全性?答:1)建立登录用户,并授予为数据库用户
sp_addloginmanagersp_addloginscgl…………sp_grantdbaccessscgl……..2)可直接为用户授权;也可以通过角色授权Sp_addrolescgl_role……
.grantselect,update,delete,inserton生产计划表toscgl_role………….3)职工权限管理:用视图实现为各个用户创建一个视图,将该视图的查询权限授予给相应的用户。Createviewzg1asSelect*from职工表where职工号=‘001’G
rantselectonzg1to‘zg001’也可以用存储过程实现其权限管理创建存储过程:createprocP_gz@zghcharasSelect*from职工表where职工号@zgh将存储过程的执行权限授予给职工。7.5.5统计数据库的安全性统计数据库允许用户查询聚集
类型的信息(如合计、平均值等)不允许查询单个记录信息例如,一个单位的人均工资数可以公开查寻,而每个人的工资数要保密。统计数据库中特殊的安全性问题隐蔽的信息通道能从合法的查询中推导出不合法的信息策略
:1:任何查询至少要涉及N(N足够大)个以上的记录2:任意两个查询的相交数据项不能超过M个3:任一用户的查询次数不能超过1+(N-2)/M7.6.1数据库完整性简述7.6.2完整性约束条件的分类7.6.3关系模型的完
整性约束7.6数据库完整性教学内容:DBMS提供的数据完整性机制、数据完整性约束条件的分类及实现方法。重点:数据完整性约束条件的分类及实现方法。7.6.1数据库完整性简述数据库的完整性:数据的正确性和相容性数据的完整性和安全性的区别:数据的完整性防止数据库
中存在不正确的数据防范对象:不合语义的、不正确的数据数据的安全性保护数据库防止恶意的破坏和非法的存取防范对象:非法用户和非法操作一个给定的数据库可能受到多个完整性约束的限制,约束可能是简单的也可能是复杂的。例如:学生的学号必须唯一;
性别只能为男或女;学生所在的系必须是学校已开设的系。为维护数据库的完整性,DBMS必须:1.提供定义完整性约束条件的机制2.提供完整性检查的方法及违约处理7.6.2完整性约束条件的分类约束条件作用的对象可以是关系、元组和列
。列约束:列的类型、取值范围、精度、排序等约束条件。元组的约束:元组中各个字段间的联系的约束。关系的约束:若干元组间、关系集合上以及关系之间的联系的约束。完整性约束条件所涉及的对象的状态可以是静态的,也可以是动态的。静态约束:数据库每一确定状态
时的数据对象所应满足的约束条件。静态列级约束:列的取值域的约束。静态元组约束:元组各个列之间的约束关系。静态关系约束:一个关系的各个元组之间或者多个关系之间存在的约束动态约束:数据库从一种状态转变为另一种状态时,新、旧值之间所应满足的约束条件。
动态列级约束:修改列定义或列值时应满足的约束条件动态元组约束:修改元组时,元组中各字段之间应满足的约束条件动态关系约束:加在关系前后状态上的限制条件。7.6.3关系模型的完整性约束一、实体完整性在CREATETABLE中用PRIMARYKEY定义单属性
构成的码时:可定义为列级或表级约束条件多个属性构成的码时:只能定义为表级约束条件[例]将Student表中的Sno属性定义为码(1)在列级定义主码CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCH
AR(20)NOTNULL,SsexCHAR(2));(2)在表级定义主码CREATETABLEStudent(SnoCHAR(9),SnameCHAR(20)NOTNULL,SsexCHAR(2),PRIMARYKEY(Sno));[例2]将SC表
中的Sno,Cno属性组定义为码CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno));/*只能在表级定义主码*/实体完整性检查和违约处理插入或对主码列
进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括:1.检查主码值是否唯一2.检查主码的各个属性是否为空只要有一个条件不满足就拒绝插入或修改二、参照完整性定义在CREATETABLE中用FOREIGNKEY和REFERE
NCES短语定义[例]定义SC中的参照完整性CREATETABLESC(SnoCHAR(9)NOTNULLFOREIGNKEY(Sno)REFERENCESStudent(Sno),CnoCHAR(4)NOTNULL,GradeSMALLINT,FOREIGNKEY(Cno)REFERENCE
SCourse(Cno));参照完整性检查和违约处理三、用户定义的完整性CREATETABLE时定义列值非空(NOTNULL)列值唯一(UNIQUE)检查列值是否满足一个布尔表达式(CHECK)插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否满足。如果不满足则操作被拒绝执
行[例]建立部门表DEPT,如下所示CREATETABLEDEPT(Deptnointcheck(Deptno>=0andDeptno<=50),DnameCHAR(9)UNIQUE,LocationCHAR(10)notnull);[例]当学生
的性别是男时,其名字不能以Ms.打头。CREATETABLEStudent(SnoCHAR(9),SnameCHAR(8)NOTNULL,SsexCHAR(2),PRIMARYKEY(Sno),CHECK(Ssex='女'ORSnameNOTLIKE'Ms.%'));四、触
发器触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力定义触发器:CREATETRIGGER语句定义触发器执行触发器:由触发事件激活,
数据库服务器自动执行。删除触发器:DROPTRIGGER