一、SQL SERVER 2000的安全性
数据库的安全性主要是指数据库的用户认证方式及其角色权限管理,保证合法用户访问数据库,合法用户只能存取被授权访问的资源。
SQL Server 2000的用户认证方式有两种:
1) Windows身份验证:是和Window操作系统集成的,SQL SERVER的登录用户必须是WINDOWS用户和组,适用于windows的客户端。
2) SQL SERVER验证:登录用户是SQL SERVER自己建立的,可以不是WINDOWS用户,适用于非WINDOWS的客户端,例如unix、linux。
具体采用哪种认证方式由SQL Server服务器的安全身份认证模式决定,如果身份认证模式是设定仅Windows身份验证模式则只能采用Windows身份验证;如果设定为混合模式,则Windows身份验证和SQL SERVER验证都可以。
SQL Server安全性有3个层次:服务器安全、数据库安全、对象权限。
服务器级别安全性包括登录帐户和服务器角色,在服务器级别的操作权限由登录帐户的固定服务器角色决定。
登录帐户包括:
1) Windows登录帐户(域名\用户名)
2) 标准SQL登录帐户(用户名)
3) 内置的登录帐户(sa、本地或域的Administrator、内置的组Administrators)这三类帐户有最高的权限,是sysadmin服务器角色的成员。
数据库级别安全性包括数据库用户和数据库角色,在数据库级别的操作权限由数据库用户的角色决定。默认数据库用户为dbo、guest,dbo映射登录帐户为sa(sysadmin服务器角色的成员), guest用户映射所有的登录帐户。登录帐户想访问某个数据库,则需为其建立该数据库访问帐户或者该数据库存在guest用户。
数据库角色包括:
1) 固定的标准数据库角色:是定义对所有表可以进行的操作。其中有一个特殊的角色:public,任何用户都具有public角色,角色名不能更改,权限可以进行更改,是定义所有用户可以对某一个或几个表可以进行的操作。
2) 用户自定义的标准数据库角色:是定义对某一个或几个表可以进行的操作。
3) 用户自定义的应用程序角色:是定义对某一个或几个表可以进行的操作。与用户无关,需要密码,在应用程序中激活生效。
对象权限包括:
1) 为表和视图授予的权限类别有SELECT、INSERT、UPDATE和DELETE语句权限以及DRI(REFERENCE)
2) 为列授予权限(SELECT、UPDATE)
3) 为存储过程和函数授予权限 ,只有EXEC一种
4) 为数据库授予权限(语句权限:创建和备份等)
5) 默认的权限或称暗示性权限:sysadmin, db_owner角色可以具有所有权限
对象权限的操作有授予、回收、拒绝三种。
综上所述,如果一个用户登录到SQL SERVER 2000后其具有哪些权限有如下规则:
1) 权限累加原则,综合考虑登录用户的服务器角色、登录用户对应的数据库角色,角色的权限,单独赋予的对象权限,默认的角色权限等。
2) 拒绝优先,不能拒绝的是默认的权限: sysadmin db_owner角色,sa、本地或域的Administrator、内置的组Administrators三类登录用户不能拒绝。
3) Public,应用程序角色优先,应用程序角色被激活后该用户只具有应用程序角色和public角色的权限,其所具有的其他角色失效。
二、SQL SERVER 2000的安全性测试
1、测试内容
针对以上叙述的数据库安全性功能要求,对其进行分析,对其进行功能相关分类,将容易一起进行测试的内容放到一起,保证功能的覆盖同时保证测试用例的高效。具体确定如下测试内容:
登录用户管理:登录用户的建立、修改、删除,验证服务器角色的作用
数据库用户管理:数据库用户的建立、修改、删除,和登录用户的映射关系,验证固定数据库角色的作用
角色管理:数据库自定义标准和应用程序角色的建立、删除、修改
权限管理:分别给角色授权,给用户赋予角色,根据权限适用原则验证用户具有的权限是否正确,验证权限适用原则
2、测试方法
该测试为系统功能性测试,所以采用黑盒测试方法,以人工测试为主。
3、测试用例设计
针对每一个测试点,设计完整的测试用例,先考虑通过测试,验证功能的实现;再考虑失败测试。运用等价类、边界值、因果图、正交法等测试用例设计技术。
测试用例格式包括:用例编号、相关用例编号、输入及操作说明、预期结果以及功能是否正确的判断标志(评价标准)等。采用EXCEL格式模版,便于管理和扩充。
几个典型的测试用例见测试用例设计.xls文档. 该文档有四个表单组成,分别表示上述四个测试内容列出的模块:登录用户管理、数据库用户管理、角色管理、权限管理。
三、总结
通过对SQL SERVER2000安全性测试的研究与实践,体会到测试需求的重要,一定对所测对象功能了解全面,通过相关资料、微软帮助等来帮助确定需求,综合考虑各种情况尤其默认情况,总结出了权限适用的原则。再根据需求确定测试计划,进行测试用例的设计。这次测试还是以验证功能为主,所以测试用例设计主要考虑功能的完全覆盖,对失败测试在时间允许条件下尽力去做,例如在登录用户建立时进行输入非法字符和超长字符,发现了其输入的边界值,并发现当用户名称输入大于128的字符时不给提示,自动截取128个字符,不给出任何提示,这很不友好,并且需要自己判断边界值。