实验三:数据库的安全性
一、实验目的
1. 掌握Windows 认证模式下数据库用户帐号的建立与取消方法; 2. 掌握混合模式下数据库用户帐号的建立与取消方法; 3. 掌握数据库用户权限的设置方法;
4. 熟悉数据库数据库用户帐号的权限分配、回收等方法;
5. 了解数据库角色的分类、作用及使用方法。
二、实验环境
SQL Server 企业版 三、实验学时
2学时 四、实验原理:
1. Microsoft? SQL Server? 可以在两种安全(身份验证)模式: (1)Windows 身份验证模式(Windows 身份验证)
Windows 身份验证模式使用户得以通过 Microsoft Windows NT? 4.0 或 Windows? 2000 用户帐户进行连接。
(2)混合模式(Windows 身份验证和 SQL Server 身份验证)
混合模式使用户得以使用 Windows 身份验证或 SQL Server 身份验证与 SQL Server 实例连接。在 Windows 身份验证模式或混合模式下,通过 Windows NT 4.0 或 Windows 2000 用户帐户连接的用户可以使用信任连接。
2. SQLServer的安全机制
(1)服务器级别所包含的安全对象主要有登录名、固定服务器角色等。其中登录名用于登录数据库服务器,而固定服务器角色用于给登录名赋予相应的服务器权限。SQL Server
中的登录名主要有两种:第一种是Windows登录名,第二种是SQL Server登录名。Windows登录名对应Windows验证模式,该验证模式所涉及的账户类型主要有Windows本地用户账户、Windows域用户账户、Windows组。SQL Server登录名对应SQL Server验证模式,在该验证模式下,能够使用的账户类型主要是SQL Server账户。
(2)数据库级别所包含的安全对象主要有用户、角色、应用程序角色、证书、对称密钥、非对称密钥、程序集、全文目录、DDL事件、架构等。用户安全对象是用来访问数据库的。如果某人只拥有登录名,而没有在相应的数据库中为其创建登录名所对应的用户,则该用户只能登录数据库服务器,而不能访问相应的数据库。
(3)架构级别所包含的安全对象主要有表、视图、函数、存储过程、类型、同义词、聚合函数等。架构的作用简单地说是将数据库中的所有对象分成不同的集合,这些集合没有交集,每一个集合就称为一个架构。数据库中的每一个用户都会有自己的默认架构。这个默认架构可以在创建数据库用户时由创建者设定,若不设定则系统默认架构为dbo。数据库用户只能对属于自己架构中的数据库对象执行相应的数据操作。至于操作的权限则由数据库角色所决定。一个数据库使用者,想要登录服务器上的SQL Server数据库,并对数据库中的表执行数据更新操作,则该使用者必须经过如下图所示的安全验证。
3.数据库的存取控制:授权和撤销权限 (1)GRANT
在安全系统中创建项目,使当前数据库中的用户得以处理当前数据库中的数据或执行特定的 Transact-SQL 语句
语法: 1)语句权限:
GRANT { ALL | statement [ ,...n ] } TO security_account [ ,...n ] 2)对象权限: GRANT
{ ALL [ PRIVILEGES ] | permission [ ,...n ] } {
[ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } }
TO security_account [ ,...n ] [ WITH GRANT OPTION ] [ AS { group | role } ]
(2)REVOKE
删除以前在当前数据库内的用户上授予或拒绝的权限。 语法 语句权限:
REVOKE { ALL | statement [ ,...n ] } FROM security_account [ ,...n ] 对象权限:
REVOKE [ GRANT OPTION FOR ]
{ ALL [ PRIVILEGES ] | permission [ ,...n ] } {
[ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } }
TO | FROM }
security_account [ ,...n ] [ CASCADE ]
[ AS { group | role } ] 五、实验内容及步骤
以系统管理员身份登录到SQL Server服务器,在SQL Server2005界面中实现以下操作,并独立写出6—8题的程序代码;
1. 在当前计算机中增加一个用户zhang和cheng,密码为secret。使此用户通过
winows NT模式下登录SQL Server服务器,登录名分别为zhang和cheng; 2. 新建以混合模式登录SQL Server服务器的用户登录名为stu1、stu2和stu3,登
录密码为secret,默认登录数据库为stu;
3. 将帐号zhang添加为数据库stu的用户,用户名为zhang;
4. 在数据库stu中创建用户stu1、stu2和stu3,登录帐号分别为stu1、stu2和stu3; 5. 给数据库用户zhang赋予创建数据库的权限;
6. 给数据库用户stu1赋予对sc表进行插入、修改、删除操作权限;
7. 给数据库用户stu2和stu3赋予对student表、course表所有操作权限及查询sc
的操作权限,并允许再授权给其他用户;
8. 收回数据库用户stu2对student表和course表的删除操作的权限;
9. 若一个小组共5个成员,他们对数据库stu具有相同的操作权限,具体权限如下:
1) 对于student、course表只能进行数据查询; 2) 只能对student表中sname进行更改; 3) 对于sc表只能进行修改、删除或插入;
10. 将登录帐号cheng同时拥有服务器角色serveradmin 和 securityadmin的权限; 11. 删除服务器角色sysadmin的成员stu2和stu3;
六、样例模板 一、用户的创建
用户包括操作系统用户、服务器用户和数据库用户 1. 创建操作系统用户u1、u2
以管理员的身份登录到Windows,打开“控制面板”(Win7)中的“用户账户”,创建 操作系统用户u1、u2。
2. 创建数据服务器用户 (1) GUI方式(SQL Server2008为例):以DBA的身份登录到SQL Server Management Studio,在对象资源管理器中选择“安全性”,右击“登录名”,在弹出的快捷菜单中选择“新建登录名”菜单选项,在“新建登录名”窗口中单击“搜索”按钮添加Windows用户u1,选择“Windows身份验证模式”,单击“确定”按钮完成。
(2) 命令方式:
use master
create login [WIN-CF7AKAVRCJA\%u1] from windows
(3) 同样的方式将操作系统用户u2、u3加入到数据服务器。 3. 创建数据库用户
以系统管理员身份登录到数据库服务器,分别以GUI方式和命令方式创建数据库用户 (1)GUI方式(SQL Server2008为例):选中stu_12数据库,单击“安全性”,在其“用户”节点下右击,在弹出的快捷菜单中选择“新建用户”菜单项,在“数据库用户”窗口中输入要新建的数据库用户名和登录名,单击“确定”按钮。
(2)命令方式:
use stu_12 go
create user stu_12_login03 for login [WIN-CF7AKAVRCJA\%u3] go
(3)查看stu_12_login01的属性,此用户除了拥有默认架构外,没有分配相应权限。
(4) 切换到操作系统用户u1,以u1的身份登录到SQL Server Management Studio, 这时可以使用命令打开数据库stu_12。如下图:
此时,以stu_12数据库用户stu_12_login01访问数据库stuinfo,访问被拒接。
二、数据库角色管理
这里只讨论固定数据库角色。
1. 以界面方式为固定数据库角色添加成员:
在stu_12数据库中展开“安全性”?角色?数据库角色,选择“db.owner”,在弹出的