您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第四章数据库的安全性
第四章数据库安全性1、问题的提出•数据库的特点是数据可以共享•数据共享必然带来数据库的安全性问题•数据库系统中的数据共享不能是无条件的共享例:军事秘密、国家机密、新产品实验数据、市场需求分析、市场营销策略、销售计划、客户档案、医疗档案、银行储蓄数据等2、数据库的安全性:是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。3、数据库安全性和计算机系统、网络系统安全性是紧密联系、相互支持的。4、三类安全性问题•技术安全性•管理安全性•政策法律安全性问题:在技术上你能想到什么样的数据库安全保障措施吗?5、技术安全性案例•编写合法程序绕过DBMS及其授权机制•直接或编写程序执行非授权操作•通过多次合法查询数据库从中推导出一些保密数据数据库系统安全性控制1、用户标识和口令•可以在计算机硬件、操作系统、DBMS、应用程序等各环节进行设置;•也可以通过各种方法进行动态的计算来鉴别;•还可以通过人体的各种特征来鉴别。目的:提高非法用户进入系统的难度。2、视图机制:为不同用户定义不同的视图,限制数据对象的范围。3、数据加密存储与传输:显然会降低系统效率。数据库系统安全性控制(续)4、存取控制•定义用户权限•合法权限检查①权限:用户对某一数据对象的操作权力称为权限。②某个用户应该具有何种权限是管理和政策问题,不是技术问题。③定义用户存取权限就是定义用户可在哪些数据库对象上进行哪些类型的操作。④定义用户存取权限也称为授权。⑤存取控制是DBMS主要关心的问题。统计数据库的安全性统计数据库:即只允许用户查询聚集类型的信息(如合计、均值等),不允许查询单个记录信息。统计数据库的特殊安全性:能从合法的查询中推导出不合法信息。为此,可做如下的规定:①任何查询至少要涉及N个以上的记录;②任意两个查询的相交数据项不能超过M个;③任何用户的查询次数不能超过H次。……SQLServer身份验证方式的确认和设置在SQLServer中创建登录名和数据库用户要求SQLServer必须工作在“SQLServer和Windows混合身份验证”模式。确认和设置方法如下:1、启动SQLServer;2、在服务器名称上右键选择“属性”,打开“服务器属性”对话框。在“选择页”里选择“安全性”,在“服务器身份验证”里选择“SQLServer和Windows身份验证模式”,单击“确定”完成。切记:若改变了身份验证方式,必须重启SQLServer服务才能生效。SQLServer登录名和数据库用户登录名与数据库用户的创建:1、启动SQLServer;2、选择“安全性→登录名”,右击“登录名”,选择“新建登录名”,打开“登录名-新建”对话框。在“常规”选项卡中,输入登录名,选择“SQLServer身份验证”,输入密码和确认密码,去掉“强制实施密码策略”、“强制密码过期”、“用户在下次登录时必须更改密码”前的对勾,选择默认数据库;4、选择“用户映射”选项卡,选择数据库(可多选)。此时,所创建的登录名即做为所选数据库的用户;5、选择“状态”选项卡,“设置”里“是否允许连接到数据库引擎”选择“授予”,“登录”里选择“启用”,单击“确定”完成。登录名1SQLServerDB1DB2DBn用户1用户m将登录名1设为DB1和DB2的用户。此时用户1方可通过SQLServer使用数据库DB1和DB2。创建、删除登录名和数据库用户1、创建登录名lxmcreateloginlxmwithpassword='lxmlxm'2、创建数据库用户usemydbcreateuserlxm3、删除数据库用户:dropuserlxm将lxm设置为mydb数据库的用户。该用户几乎没有任何权限。4、删除登录名:droploginlxm5、查看当前数据库用户信息:execsp_helpuser6、查看用户lxm信息:execsp_helpuser'lxm'表级权限的授权与回收1、表级的用户权限设置可通过右击某个关系表(如student表)选择“属性”,打开“表属性”对话框,选择“权限”标签页进行设置。5、问题:谁能执行授权命令?2、grant语句(授权)一般格式:grant权限[,...]on表名|视图名[(列名[,…])]to用户[,…][withgrantoption]3、常用权限类型:insert、delete、update、select4、revoke语句(回收)一般格式:revoke[grantoptionfor]权限[,...]on表名|视图名[(列名[,…])]from用户[,…][cascade]DBA、数据库对象创建者(即属主Owner)、拥有授权权限的用户可以执行授权命令。授权示例1、把查询Student表权限授给用户lxm。grantselectonstudenttolxm3、把对student表的sno,sname属性的查询权限授给用户lxm。grantselectonstudent(sno,sname)tolxm2、把对course表的插入与删除权限授给用户lxm。grantinsert,updateoncoursetolxm4、把对sc表grade属性的修改权限授给用户lxm。grantupdateonsc(grade)tolxm授权示例(续)5、把对Student表操作的所有权限授给用户lxm。grantallonstudenttolxm7、把对student表查询权限授给用户lxm,同时授予授权的权限。grantselectonstudenttolxmwithgrantoption不推荐使用all8、查看用户lxm的权限信息:execsp_helprotectnull,'lxm'6、把对course表查询权限授给数据库的所有用户。grantselectoncoursetopublic注意:lxm用户只能将其权限范围内的权力授予其他用户。9、查看student表的授权信息:execsp_helprotect'student'回收1、回收用户lxm查询Student表的权限。revokeselectonstudentfromlxm3、回收所有用户对sc表的查询权限。revokeselectonscfrompublic问题:若用户lxm已经将其权限和授权的权限授给了其他用户呢?revokegrantoptionforselectonstudentfromlxmcascade2、回收用户lxm对course表cno,cname修改的权限。revokeupdateoncourse(cno,cname)fromlxm4、回收用户lxm查询student表和其授权的权限。revokegrantoptionforselectonstudentfromlxm数据库角色数据库角色:是被命名的一组与数据库操作相关的权限。即权限的集合。select:studentupdate:course(cname,credit)数据库角色r1用户U1...用户Un用户作为角色的成员:即建立用户与角色的对应关系。用户一旦作为某角色的成员,则该用户即被授予了角色所拥有的权限。若修改了角色内容,则与之对应的所有用户权限均将被改变。可见,角色概念的提出可方便DBA对用户权限的管理。数据库角色的使用1、创建数据库角色createroler14、从角色中回收权限revokeselectonstudentfromr12、授予角色权限内容grantselectonstudenttor1grantupdateoncourse(cname,credit)tor13、建立用户与角色的对应关系execsp_addrolemember'r1','U1'……execsp_addrolemember'r1','Un'5、删除角色中的用户execsp_droprolemember'r1','U1'6、删除角色droproler17、查看角色成员信息execsp_helprolememberr18、查看有哪些角色execsp_helprole9、查看角色权限内容execsp_helprotectnull,'r1'数据库固定角色1、查看有哪些固定角色execsp_helpdbfixedrole即SQLServer所定义的一些角色,该角色权限内容不能被修改。2、查看固定角色db_datareader的描述信息execsp_helpdbfixedroledb_datareader3、查看固定角色db_datareader权限内容execsp_dbfixedrolepermissiondb_datareader4、向固定角色db_datareader添加和删除用户execsp_addrolemember'db_datareader','lxm'execsp_droprolemember'db_datareader','lxm'SQLSever数据库固定角色固定角色权限db_owner数据库的所有者。可执行任何数据库管理工作。db_accessadmin数据库访问权限管理者。可添加或删除用户、组或登录名db_securityadmin管理角色成员、对象所有权、语句执行权、数据库访问权限。db_ddladmin数据库DDL管理员,可执行数据库定义语言。db_backupoperator执行数据库备份。db_datareader可对数据库中任何表执行select操作。db_datawriter可对数据中任何表执行更新操作,但不可查询。db_denydatawriter不能对任何表进行更新操作。db_denydatareader不能查询数据库中任何表的内容。完成下列要求要求:lxm用户是讲授DB课程的教师,她具有查看选修了DB课程的学生学号、姓名、所在系和成绩信息,同时对该成绩具有修改的权限。createroleDBTeachercreateviewDB_Course(sno,sname,sdept,grade)asselectstudent.sno,sname,sdept,gradefromstudent,course,scwherestudent.sno=sc.snoandcourse.cno=sc.cnoandcname='DB'grantselectonDB_CoursetoDBTeachergrantupdateonDB_Course(grade)toDBTeacherexecsp_addrolemember'DBTeacher','lxm'审计审计:即把用户对数据库的操作自动记录下来。DBA可利用这些信息进行安全分析与跟踪。1、在SQLServer上选择“工具”菜单下的“SQLServerProfiler”功能;2、选择“新建跟踪”,打开跟踪属性对话框;①输入跟踪名称;②选择“保存到表”,然后选择数据库,并输入存在跟踪信息的表名;③在“事件选择”标签页中可以选择跟踪事件的详细设置。3、点击“运行”。完成!4、当不需要跟踪时,选择“暂停”或“停止”即可;5、可以打开所建的跟踪表查看跟踪信息。6、审计(跟踪)也可以使用触发器来实现。注意:审计(跟踪)会降低系统效率。
本文标题:第四章数据库的安全性
链接地址:https://www.777doc.com/doc-5280677 .html