数据库系统概论第4章数据库安全.ppt
1,第4章 数据库安全,4.1 计算机安全性概论4.2数据库安全性控制,2,9.1计算机安全性概论,数据库安全,指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏.,1.计算机系统的三类安全性问题.,计算机系统安全性:指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等.,计算机系统安全性的分类:,(1)技术安全(2)管理安全(3)政策法律类安全,3,2.可信计算机系统评测标准,从四个方面来评测计算机系统的安全性:(1)安全策略(2)责任(3)保证(4)文档,计算机系统的安全性等级:,D级:最小保护C1级:自主安全保护C2级:受控的存取保护B1级:标记安全保护B2级:结构化保护B3级:安全域A1级:验证设计,4,9.2 数据库安全性控制,用户标识与鉴别,用户标识与鉴别:是指由系统提供一定的方式让用户标识 自己的名字或身份.每次用户进入系统时,由系统进行核对,通过鉴定后才提供使用权.,5,常用的用户标识与鉴定方法:(1)用户名(2)口令(3)函数鉴定,例:用户A与系统约定的函数为f(x)=x*x+2;则某次上机,若系统提供的随机数为3,则A经计算 后回答11,则可进入系统,否则拒绝进入系统.,9.2.2 存取控制,存取控制机制:确保只授权给有资格的用户访问数据库的 权限,同时令所有未被授权的人员无法接近 数据.,6,存取控制机制包括两部分:(1)定义用户权限,并将用户权限登记到数据字典中,形成 安全规则.(2)合法权限检查,利用数据字典中的安全规则对用户的 请求进行检查.,两种存取控制机制:,自主存取控制方法(DAC),强制存取控制方法(MAC),7,自主存取控制方法(DAC),自主存取控制:用户对于不同的数据对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且 用户还可以将其拥有的存取权限转授给其他 用户.,SQL的自主存取控制,GrantRevoke,8,用户权限:,结构(数据库),数据(表或视图),数据(属性列),Create database,SelectInsert,update,deleteAll privileges,SelectInsert,update,deleteAll privileges,结构(表、视图),Create table,alter tableCreate viewCreate index,9,1.授权,Grant的语句格式:grant.on to.with grant option;,例子:把查询Student表的权限授给用户U1.,Grant selecton table studentto u1;,10,例子:说明以下语句完成的功能.,(1)grant all priviliges on table student,course to u2,u3;,(2)grant select on table sc to public;,(3)grant update(sno),select on table sc to u4;,(4)grant insert on table sc to u5;with grant option,(5)grant createtab on database S_C to u6;,11,2.收回权限,revoke的语句格式:revoke.on from.;,例子:把U4修改学生学号的权限收回.,Revoke update(sno)on table studentfrom u4;,12,例子:说明以下语句完成的功能.,(1)revoke select on table sc from public;,(2)revoke insert on table sc from u5 cascade;,13,3.创建用户,Sp_addlogin 用户名称,用户密码sp_addsrvrolemember 用户名称,dbcreatorsp_grantdbaccess 用户名称sp_addrolemember 数据库角色名称,用户名称,例子:(1)Sp_addlogin zgf,123(2)sp_addsrvrolemember zgf,dbcreator(3)在当前数据库(spj)中执行:sp_grantdbaccess zgf,zgfspj sp_addrolemember db_owner,zgfspj sp_droprolemember db_owner,zgfspj grant create table to zgfspj grant select on spj to zgfspj revoke select on spj to zgfspj grant create view to public,14,强制存取控制方法(MAC),强制存取控制:每一个数据对象被标以一定的密级,每一个 用户也被授予某一个级别的许可证,对于任 意一个对象,只有具有合法许可证的用户才 可以存取.,主体:系统中的活动实体,包括用户和代表用户的各进程.客体:系统中的被动实体,包括文件、基本表、索引、视图.,主体和客体的敏感度标记:绝密、机密、可信、公开等.,主体的敏感度标记称为许可证级别.客体的敏感度标记称为密级.,15,强制存取控制方法(MAC):,要求许可证级别为Label的主体对任何客体存取时必须遵守以下规则:(1)仅当主体的许可证级别大于或等于客体的密级时,该主 体才能读取相应的客体.(2)仅当主体的许可证级别等于客体的密级时,该主体才能 写相应的客体.,例子:,主体A(机密),客体B(机密),客体C(绝密),客体D(公开),R/W,R,16,DAC+MAC安全检查示意图:,检查用户权限,检查用户的许可证级别和数据的密级,17,9.2.5 视图机制,视图机制:为不同的用户定义不同的视图,把数据对象限制 在一定的范围内,通过视图机制把要保密的数据 对无权存取的用户隐藏起来,对数据提供一定程 度的安全保护.,例子:李勇把查询Student中计算机系学生的权限授予王平.,(1)建立计算机系学生的视图CS-Student.create view CS-Student as select*from student where Sdept=CS;(2)授限 grant select on CS-Student to 王平;,18,9.2.6 审计,审计:把用户对数据库的所有操作自动记录下来放入审计 日志中,DBA可以利用审计跟踪的信息,重现导致数 据库现有状况的一系列事件,找出非法存取数据的人、时间和内容.,9.2.7 数据加密,数据加密:根据一定的算法将原始数据变换为不可直接 识别的格式,从而使得不知道解密算法的人 无法获知数据的内容.,加密方法:,(1)替换方法(2)置换方法(3)替换方法+置换方法,19,9.3 统计数据库安全性,1.问题的提出,统计数据库:用户只能对聚集数据进行访问,而不能对单个 数据信息进行访问.,例子:(1)查询所有女高级程序员的人数.(2)查询所有女高级程序员的工资总额.如果查询(1)的结果为1,则查询(2)的结果就是这位女高级程序员的工资.,2.解决的方法,规定任何查询至少涉及N个以上的记录。,20,3.问题的提出,例子:如果用户A想知道用户B的工资,则可通过以下查询:(1)查询用户A与N名职工的总工资.(2)查询用户B与N名职工的总工资.查询(1)的结果为R查询(2)的结果为S用户A已知自己的工资为P,4.解决的方法,规定任意两个查询的相交数据项不能超过M个。,用户B的工资为:S-(R-P),21,SQL Server的安全控制,22,一、数据库权限的种类及用户的分类 1.权限的种类 第一类是对数据库管理系统进行维护的权限;第二类是对数据库中的对象和数据进行操作的权限;第一种是对数据库对象的权限,包括创建、删除和修改数 据库对象;第二种是对数据库数据的操作权,包括对表、视图数据的 增、删、改、查。2.数据库用户的分类 数据库中的用户按其操作权限的大小可分为如下三类:(1)数据库系统管理员:具有一切权限。(2)数据库对象拥有者:对其所拥有的对象具有一切权限。(3)普通用户:只具有对数据库数据的增、删、改、查权。,23,二、SQL Server的安全控制,一个用户如果要访问SQL Server数据库中的数据,他必须要经过三个认证过程:第一个认证过程是身份验证,这时用登录账号来标识用户,身份 验证只验证用户连接到SQL Server数据库服务器的资格,即验证该用户是否具有连接到数据库服务器的“连接权”。第二个认证过程是当用户访问数据库时,他必须具有对具体数据库的“访问权”,即验证用户是否是数据库的合法用户。第三个认证过程是当用户操作数据库中的数据或对象时,他必须具有所要进行的操作的“操作权”,即验证用户是否具有操作许可。,24,SQL Server的用户有两种类型:Windows授权用户:来自于Windows的用户或组;SQL授权用户:来自于非Windows的用户,我们也将这种用户称为 SQL用户。SQL Server为不同的用户类型提供有不同的安全认证模式:1.Windows身份验证模式 Windows身份验证模式允许用户Windows NT或Windows 2000用户连接到SQL Server。2.混合验证模式 混合验证模式表示SQL Server接受Windows授权用户和SQL授权用户。如果不是Windows操作系统的用户希望也能使用SQL Server,则应该选择混合验证模式。,25,3.设置验证模式 在企业管理器中设置SQL Server的身份验证模式的方法为:(1)在企业管理器的控制台上,在要设置验证模式的服务器名 上单击鼠标右键,然后在弹出的菜单上选择“属性”。(2)在窗口中选择“安全性”标签页,在窗口的“安全性”成组框中的“身份验证”部分,有两个选项:“SQL Server和Windows”以及“仅Windows”。前一个选项代 表混合验证模式,后一个选项代表Windows验证模式。(3)单击“确定”按钮。,26,27,三、管理SQL Server登录账号,内置系统帐号:,用户创建自己的登录帐号:,28,建立登录账号 使用企业管理器建立登录账号的步骤为:(1)展开“安全性”,单击“登录”节点。(2)右击内容窗格中的空白处,从弹出式菜单中选择“新建登录”命令。(3)设置如下选项:在“名称”文本框中输入登录的账号名。在“身份验证”区域中,有如下两个选择:“Windows身份验证”模式“SQL Server身份验证”模式在“数据库”下拉列表框中选择登录到SQL Server之后默认情况下要连接的数据库。在“语言”列表框中选择显示给用户的信息所使用的默认语言。,29,例子:添加一个windows用户user;添加一个SQL用户ss;,30,修改登录账号的属性 对于已经建立好的SQL Server登录账号,还可以对登录账号的密码等进行修改。使用企业管理器修改登录密码的步骤为:右击想要修改密码的登录账号,从弹出式菜单中选择“属性”命令,可以进行如下更改:更改密码:在“常规”选项卡上,可以在“密码”文本框中输入新的密码。更改默认数据库:在“数据库”列表框中选择一个新的数据库。更改显示给用户所使用的语言:在“语言”列表框中选择一个新的语言。,31,删除登录账号 若不再需要某个登录账号,或者不再允许某个登录账号访问SQL Server,则可以将其删除。使用企业管理器删除登录账号的步骤为:(1)在控制台上依次单击“Microsoft SQL Servers”和“SQL Server组”左边的加号,然后单击服务器,展开树形目录。(2)展开“安全性”节点,然后单击“登录”节点。(3)在右边的内容窗格中,右击想要删除的登录账号,从弹出的菜单中选择“删除”命令或按Delete键。(4)若确实要删除此登录账号,则单击“是”,否则单击“否”,取消删除操作。,32,四、管理数据库用户,用户具有了登录账号之后,他只能连接到SQL Server服务器上,但不具有访问任何用户数据库的能力,只有成为了数据库的合法用户后,才能访问此数据库。,建立数据库用户 使用企业管理器建立数据库用户的步骤为:(1)单击要建立数据库用户的数据库节点,右击“用户”,并在弹出的菜单上选择“新建数据库用户”命令。(2)在“登录名”列表框中选择一个登录账号名。默认时“用户名”文本框的内容和用户选择的登录账号一样,用户可以在“用户名”文本框中输入一个新的数据库用户名,也可以采用与登录账号一样的用户名。(3)单击“确定”关闭此窗口。,33,例子:添加SQL用户ss为用户数据库st的用户。,34,每个用户都属于public角色,使用户具有一些默认权限.,35,删除数据库用户 从当前数据库中删除一个用户,就是去掉了登录账号和数据库用户之间的映射关系。删除数据库用户之后,登录账号仍然存在。使用企业管理器删除数据库用户的过程为:(1)在控制台上,展开服务器组以及服务器。(2)展开“数据库”节点,然后展开要删除用户的数据库。(3)单击“用户”,然后在右边的内容窗格中右击想要删除的数据库用户,从弹出的菜单中选择“删除”命令。(4)在弹出的确认窗口中,单击“是”,删除此用户。,思考:如果某个登录帐号已是某些数据库的用户,这个帐户能删除吗?,36,五、管理权限,在SQL Server 2000 中,权限分为三种:1对象权限 对象权限是指用户对数据库中的表、视图等对象的操作权,相当于数据库操作语言(DML)的语句权限,2语句权限 语句权限相当于数据定义语言(DDL)的语句权限,这种权限专指是否允许执行下列语句:CREATE TABLE、CREATE VIEW等与创建数据库对象有关的操作。3隐含权限 隐含权限是指由SQL Server预定义的服务器角色、数据库角色、数据库拥有者和数据库对象拥有者所具有的权限,隐含权限相当于内置权限,不需要再明确地授予这些权限。,37,权限的管理包含如下三个内容:授予权限:允许用户或角色具有某种操作权。收回权限:不允许用户或角色具有某种操作权,或者收回曾经授 予 的权限。拒绝访问:拒绝某用户或角色具有某种操作权,既使用户或角色由 于继承而获得这种操作权,也不允许执行相应的操作。,对象权限语句权限隐含权限,38,1使用企业管理器管理数据库对象权限(1)展开“数据库”并展开要设置权限的数据库,单击“用户”节点。(2)在内容窗格中右击要设置权限的数据库用户,并从弹出的菜 单中选择“所有任务”下的“管理权限”命令。可以进行如下设 置:授予权限 拒绝权限 收回权限,39,例子:为数据库st用户ss添加表student的有关权限。,40,2使用企业管理器管理语句权限 使用企业管理器管理数据库用户的语句权限的过程为:(1)展开“数据库”,右击要设置语句权限的数据库,并从弹出 的菜单中选择“属性”,在弹出的窗口中,选择“权限”选项 卡。(2)在要设置的语句权限以及用户所对应的方框中单击鼠标,使其中出现相应标记。,41,例子:为数据库st用户ss添加语句权限。,例子:演示拒绝权限、收回权限的区别。,42,3使用Transact-SQL语句管理对象权限 在Transact-SQL语句中,用于管理权限的语句有三个:GRANT语句:用于授权;REVOKE语句:用于收回权限;DENY语句:用于拒绝权限。,43,管理对象权限的语句的语法格式为:GRANT|DENY 对象权限名,ON 表名|视图名|存储过程名 TO 数据库用户名|用户角色名,REVOKE 对象权限名,ON 表名|视图名|存储过程名 FROM 数据库用户名|用户角色名,,44,例1:为用户user1授予Student表的查询权。GRANT SELECT ON Student TO user1 例2:为用户user1授予SC表的查询权和插入权。GRANT SELECT,INSERT ON SC TO user1 例3:收回用户user1授予Student表的查询权。REVOKE SELECT ON Student FROM user1 例4:拒绝用户user1对SC表的更改权。DENY UPDATE ON SC TO user1,例子:为数据库st用户ss授予表student的插入权限。,45,4使用Transact-SQL语句管理语句权限 管理语句权限的语句同管理对象权限的语句一样,也有GRANT、REVOKE和DENY三个,其语法格式为:GRANT|DENY 语句权限名,TO 数据库用户名|用户角色名,REVOKE 语句权限名,FROM 数据库用户名|用户角色名,,46,例1:授予user1具有创建数据库表的权限。GRANT CREATE TABLE TO user1 例2:授予user1和user2具有创建数据库表和视图的权限。GRANT CREATE TABLE,CREATE VIEW TO user1,user2 例3:收回授予user1创建数据库表的权限。REVOKE CREATE TABLE FROM user1,47,六、角色,在数据库中,为便于对用户及权限的管理,将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户就称为角色(Role),角色,角色,系统预定义的固定角色,用户根据自己的需要定义的用户角色,固定的服务器角色,固定的数据库角色,是为整个服务器设置的,是为具体的数据库设置的,属于数据库一级的角色,48,1.固定的服务器角色,49,为用户设置服务器角色:,50,2.固定的数据库角色,数据库的用户一定是public角色.且该角色的权限可改。,例子:为数据库st公共用户授予表student的查询权限。,51,为用户设置数据库角色:,52,建立用户自定义的角色 使用企业管理器建立用户自定义的角色的过程为:(1)在控制台上展开服务器组,并展开服务器。(2)展开“数据库”,并展开要添加用户自定义角色的数据库。(3)右击“角色”节点,选择“新建数据库角色”命令。(4)在“名称”文本框中输入角色的名字。(5)选中“标准角色”单选按钮,以建立一个标准的数据库角色。(6)此时,可以在此单击“添加”按钮,直接在此角色中添加成员。(7)单击“确定”按钮,关闭此窗口。,53,54,1.用户自定义角色的授权2.添加和删除用户自定义角色的成员,