您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 广工数据库实验报告-数据库安全性
实验四数据库安全性一实验目的1.加深对数据安全性的理解。2.研究具体DBMS提供的安全性技术并实践。二实验平台操作系统:Windows7-64位数据库软件:SQLServer2008三实验准备研究具体DBMS所支持的安全性技术。并综述下列内容:1.数据库安全性概念数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。2.具体DBMS的数据库安全性措施数据库的安全一直是广大用户密切关注的一个问题,现有数据库安全主要通过九个措施来实现:包括用户标识和鉴定、存取控制问题、定义视图、数据加密、多级保护体制、限界、对象重用、审计和日志、攻击检测等四实验内容及要求实践具体DBMS所支持的安全性技术1.用户、权限和角色机制实践当用户登录数据库系统时,如何确保只有合法的用户才能登录到系统中?这是一个最基本的安全性问题,也是数据库管理系统提供的基本功能。在MicrosoftSQLServer2008系统中,通过身份验证模式和主体解决这个问题。(1)身份验证模式MicrosoftSQLServer2008系统提供了两种身份验证模式:Windows身份验证模式和混合模式。Windows身份验证模式:在该模式中,用户通过Windows用户账户连接SQLServer时,使用Windows操作系统中的账户名和密码。混合模式:在混合模式中,当客户端连接到服务器时,既可能采取Windows身份验证,也可能采取SQLServer身份验证。(2)主体主体是可以请求系统资源的个体或组合过程。SQLServer2008系统有多种不同的主体,不同主体之间的关系是典型的层次结构关系,位于不同层次上的主体其在系统中影响的范围也不同。位于层次比较高的主体,其作用范围比较大;位于层次比较低的主体,其作用范围比较小。Windows级别的主体Windows域登录名Windows本地登录名SQLServer级的主体SQLServer登录名数据库级的主体数据库用户数据库角色应用程序角色SQLServersa登录名SQLServersa登录名是服务器级的主体。默认情况下,该登录名是在安装实例时创建的。在SQLServer2005和SQLServer2008中,sa的默认数据库为master。这是对早期版本的SQLServer的行为的更改。public数据库角色每个数据库用户都属于public数据库角色。当尚未对某个用户授予或拒绝对安全对象的特定权限时,则该用户将继承授予该安全对象的public角色的权限。INFORMATION_SCHEMA和sys每个数据库都包含两个实体:INFORMATION_SCHEMA和sys,它们都作为用户出现在目录视图中。这两个实体是SQLServer所必需的。它们不是主体,不能修改或删除它们。基于证书的SQLServer登录名名称由双井号(##)括起来的服务器主体仅供内部系统使用。关于服务器登录名,服务器角色,数据库用户,数据库角色,数据库架构的关系:登录名一定属于某些角色,默认为public。主体Windows级Windows组Windows域登录名Windows本地登录名SQLServer级SQLServer登录名固定服务器角色数据库级数据库用户固定数据库角色应用程序角色安全对象服务器安全对象范围端点SQLServer登录名数据库数据库安全对象范围数据库用户/应用程序角色/角色/程序集/消息类型/路由/服务/远程服务绑定/全文目录/证书/非对称密钥/对称密钥/约定/架构架构安全对象范围类型/XML架构集合/聚合/约束/函数/过程/队列/统计信息/同义词/表/视图请求数据库用户对应于服务器登录名以便登录者可以操作数据库。根据权限需求可把数据库用户划分为一个数据库角色。数据库用户和数据库角色均持有数据库架构。数据库架构,类似于数据库对象的命名空间,用户通过架构访问数据库对象。关系图更加清晰:实验用例:SQLServer的用户和权限机制实践步骤:1.以系统管理员的身份登录到SQLServer2.创建数据库用户user1在创建数据库用户之前,了解到用户名和登录名是一对一的关系。即一个用户对应一个登陆名,同样一个登陆名也是对应一个用户名,这里假设数据库用户user1对应登陆名zhangfaguang,这里并没有指定default_schema,默认使用dbo作为架构。数据库用户由登录名映射而来,直接在数据库中创建用户而不指定登录名是无法通过的。如图:所以先创建一个登录:createloginzhangfaguangwithpassword='123456'然后创建数据库用户user1:createuseruser1forloginzhangfaguang此外,若有要求把默认架构设置为schema_3110006015,则:createuseruser1forloginzhangfaguangwithdefault_schema=schema_3110006015企业管理器:进入安全性,新建登录名,然后设置登录名和密码。企业管理器:进入数据库,右击安全性,找到用户,右键选择新建用户用户、登陆、架构的三者关系:user1是登陆zhangfaguang的一个用户,user1的默认架构为dbo(实验四-安全性数据库)3.分别通过SQLServer的工具和SQL语言授予数据库用户user1在学生课程数据库上的CREATETABLE权限SQL语句:grantcreatetabletouser1企业管理器:找到要设置语句权限的数据库,即实验四-安全性数据库。如图:然后单击右键,进入属性,打开“权限”,把创建表的“授予”框格打上勾。权限测试:createtabletest_create(test_snochar(10))执行结果:成功生成test_create表。4.分别通过SQLServer的工具和SQL语言授予数据库用户user1在Student表上的SELECT、DELETE权限SQL语句:grantselectonstudenttouser1grantdeleteonstudenttouser1企业管理器:进入【实验四-安全性】数据库,右击安全性,右键用户选择属性,添加安全对象。然后搜索dbo架构的所有对象。最后把授予的选择和删除权勾上即可。5.以user1的身份登录SQLServer,选择Student表,分别进行SELECT和INSERT操作,对比操作结果。刚开始无法登录:查阅了关于错误信息的提示发现是服务器身份验证未开启混合登录模式。修改之后要重启SQL服务才可以使修改生效,重启电脑之后解决了这个问题。SELECT权限验证:select*fromstudent执行结果:查询成功。还可以尝试检索未授权查询Course表的内容。select*fromcourse执行结果:系统拒绝执行。INSERT权限验证:insertintostudent(sno,sname,sex,sage,sdept)values('s5','Lambo','男','23','IS')执行结果:系统拒绝执行。DELETE权限验证:deletefromstudentwheresno='s2'执行结果:成功删除对应元组删除前后对比图:还可以尝试删除未授权的Course表的元组deletefromcoursewherecno='c2'执行结果:系统拒绝删除6.收回授予user1的相关权限收回用户user1在Student表上的SELECT、DELETE权限revokeselect,deleteonstudentfromuser1权限检测:select*fromstudent执行结果:系统拒绝执行。deletefromstudentwheresno='s3'执行结果:系统拒绝执行。角色机制:1、固定服务器角色固定服务器角色是服务器级别的主体,它们的作用范围是整个服务器。固定服务器角色已经具备了执行指定操作的权限,可以把其他登录名作为成员添加到固定服务器角色中,这样该登录名可以继承固定服务器角色的权限。SQLServer2008的服务器角色:2、数据库角色三种类型的数据库角色:固定数据库角色:微软提供的作为系统一部分的角色;用户定义的标准数据库角色:由用户自己定义的角色,将Windows用户以一组自义权限分组;应用程序角色:用来授予应用程序专门的权限,而非授予用户组或者单独用户。1)固定数据库角色2)用户自定义数据库角色在实验四-安全性数据库角色中新建一个数据库角色test_role。上面是运用企业管理器的可视化操作直接创建了数据库角色,这里同样可以用SQL语句实现。SQL语句:createroletest_role2执行结果:成功生成对应的数据库角色。创建了角色后,我们可以给角色授权。操作权限包括:授予权限(GRANT):授予权限以执行相关的操作。通过角色,所有该角色的成员继承此权限。撤销权限(REVOKE):撤销授予的权限,但不会显示阻止用户或角色执行操作。用户或角色仍然能继承其他角色的GRANT权限。拒绝权限(DENY):显式拒绝执行操作的权限,并阻止用户或角色继承权限,该语句优先于其他授予的权限。关于角色权限的操作案例(均在“实验四-安全性”数据库操作):1、授予角色“test_role”对”数据库-安全性”数据库中“student”表的delete、insert、update权限。SQL语句:grantdelete,insert,updateonstudenttotest_role执行结果:命令成功完成。当然,我们也可以用企业管理器的可视化操作执行,首先找出角色test_role,然后右键选择进入属性,打开安全对象,找到Student表,最后授予相应的权利。2、把用户user1添加到角色test_role中。SQL语句:sp_addrolemember'test_role','user1'企业管理器:进入角色属性,然后添加角色成员。3、把角色test_role授予test_role2。使test_role2具有角色test_role的全部权限。SQL语句:granttest_roletotest_role2这个是教材上的语法,与SQLServer2008有所不同。改用:sp_addrolemember'test_role','test_role2'执行结果:成功添加。4、在角色test_role的基础上增加对Student表的SELECT权限并收回DELETE权限。SQL语句:grantselectonstudenttotest_rolerevokedeleteonstudentfromtest_role执行结果:成功增加了SELECT权限和收回了删除权限。5、拒绝角色test_role对Student表的SELECT,DELETE权限,再让SELECT权限生效。SQL语句:denyselect,deleteonstudenttotest_rolegrantselectonstudenttotest_role执行结果:执行成功。3、应用程序角色应用程序角色允许用户为特定的应用程序创建密码保护的角色。创建一个程序角色:createapplicationroleapp1withpassword='123456'企业管理器:对着“应用程序角色”新建程序角色,输入角色名称、架构和密码即可。应用程序角色授权与数据据角色授权相同,可参考上面的例子,故不再详细叙述。2.视图机制实践视图,简单来说就是一种虚拟表,和真实的数据表一样,视图包含了一系列带有名称的行数据。视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。视图机制更主要的功能在于提供数据独立性,其安全保护功能太不精细,往往远不能达到应用系统的要求。在实际应用中通常是视图机制与授权机制配合使用,首先用视图机制屏蔽掉一部分保密数据,然后在视图上面再进一步定义存取权限。这时视图机制实际上间接实现了支持存取谓词的用户权限定义。实验案列:建立IS系所开设的课程的视图
本文标题:广工数据库实验报告-数据库安全性
链接地址:https://www.777doc.com/doc-3362511 .html