《实验七-数据库安全性实验》由会员分享,可在线阅读,更多相关《实验七-数据库安全性实验(7页珍藏版)》请在金锄头文库上搜索。
1、实验七 数据库安全性实验一、实验目的学习数据库安全性设置,掌握授权语句。二、实验环境硬件:PC机软件:SQL Server 2000三、实验原理1. SQL Server安全管理在Microsoft SQL Server中工作时,用户要经过两个安全性阶段:身份验证和授权(权限验证)。身份验证模式验证用户连接到SQL Server实例的权限。Microsoft SQL Server可以在两种安全(身份验证)模式之一下工作: l Windows身份验证模式Windows身份验证模式使用户得以通过Microsoft Windows NT或Windows 2000用户帐户进行连接。SQL Server
2、通过回叫Windows NT或Windows 2000以获得信息,验证帐户名和密码。l 混合模式(Windows身份验证和SQL Server身份验证)混合模式使用户得以使用Windows身份验证或SQL Server身份验证与SQL Server实例连接。在Windows身份验证模式或混合模式下,通过Windows NT或Windows 2000用户帐户连接的用户可以使用信任连接。如果创建单个Windows 2000组并向该组添加所需的所有用户,则需要授予Windows 2000组登录到SQL Server的权限以及对任何必需数据库的访问权限。权限验证当验证了用户的身份并允许其登录到SQL
3、Server实例之后,在用户必须访问的每个数据库中都要求单独的用户帐户。每个数据库中的用户帐户都用于为该数据库中的对象(表、视图和存储过程等)应用安全权限。2. 登录账号每个用户必须通过登录账号建立自己的连接能力(身份验证),以获得对SQL Server实例的访问权限。添加Windows登录当授予Windows NT或Windows 2000用户连接到SQL Server实例的权限时,需指定用户所属的Windows NT或Windows 2000域名或计算机名,然后依次输入反斜线和用户名或组。sp_grantlogin loginame = 域用户添加SQL Server登录sp_addlog
4、in loginame = 登录名 , passwd = 密码 , defdb = 登录的默认数据库 , deflanguage = 默认语言 查看登录sp_helplogins LoginNamePattern = 登录名 删除Windows登录sp_revokelogin loginame = 域用户删除SQL Server登录sp_droplogin loginame = 登录名3. 数据库用户授予Windows用户/组或SQL Server登录访问数据库的权限若要获得对SQL Server数据库的访问权限,Windows用户/组或SQL Server登录在需要访问的每个数据库中,必须有
5、相应的用户账号。sp_grantdbaccess loginame = 登录账号 , name_in_db = 数据库用户名注:省略数据库用户名时,则数据库用户名与登录账号名相同。查看数据库用户sp_helpuser name_in_db = 数据库用户名 删除数据库用户sp_revokedbaccess name_in_db = 数据库用户名4. 数据库角色创建数据库角色sp_addrole rolename = 数据库角色名 , ownername = 角色所有者 添加数据库角色成员sp_addrolemember rolename = 角色, membername = 用户名添加固定服务
6、器角色成员sp_addsrvrolemember loginame = 登录名, rolename = 固定服务器角色名删除数据库角色sp_droprole rolename = 数据库角色名删除数据库角色成员sp_droprolemember rolename = 角色, membername = 用户名删除固定服务器角色成员sp_dropsrvrolemember loginame = 登录名, rolename = 固定服务器角色名5. 权限管理用户若要进行任何涉及更改数据库定义或访问数据的活动,则必须有相应的权限。管理权限包括授予或废除执行以下活动的用户权限:l 处理数据和执行过程(对
7、象权限)l 创建数据库或数据库中的项目(语句权限)l 利用授予预定义角色的权限(暗示性权限)授予权限语法:GRANT ALL | CREATE DATABASE| CREATE DEFAULT| CREATE FUNCTION| CREATE PROCEDURE| CREATE RULE| CREATE TABLE| CREATE VIEW| BACKUP DATABASE| BACKUP LOG ,.n TO 安全账号 ,.n 或:GRANT ALL PRIVILEGES | SELECT| INSERT| DELETE| REFENENCES| UPDATE ,.n ( 列名 ,.n )
8、ON 表名 | 视图名 | ON 表名 | 视图名 (列名 ,.n ) | ON 存储过程 | 用户自定义函数 TO 安全账号 ,.n WITH GRANT OPTION AS 组 | 角色 删除权限REVOKE ALL | CREATE DATABASE| CREATE DEFAULT| CREATE FUNCTION| CREATE PROCEDURE| CREATE RULE| CREATE TABLE| CREATE VIEW| BACKUP DATABASE| BACKUP LOG ,.n FROM 安全账号 ,.n 或:REVOKE ALL PRIVILEGES | SELECT|
9、 INSERT| DELETE| REFENENCES| UPDATE ,.n ( 列名 ,.n ) ON 表名 | 视图名 | ON 表名 | 视图名 (列名 ,.n ) | ON 存储过程 | 用户自定义函数 FROM 安全账号 ,.n CASCADE AS 组 | 角色 四、实验内容1. 利用系统存储过程,创建登录账号要求:创建Windows登录账号:基于Windows组成员或用户账号创建登录账号:Workgroup(域名或计算机名)guest05。 参考:sp_grantlogin Workgroupguest05注意:创建Windows登录账号时,需确定在Windows系统中,已存在
10、该用户或组。创建SQL Server登录账号:基于SQL Server创建登录账号guest05,默认数据库pay。参考:EXEC sp_addlogin guest05, 12345, pay2. 利用系统存储过程,进行数据库用户设置要求:基于Windows登录的设置:授权Windows登录账号Workgroupguest05以guest051用户身份访问数据库master。 参考:use mastergosp_grantdbaccess Workgroupguest05, guest051基于SQL Server登录的设置:授予guest05登录账号以guest05用户身份访问数据库mas
11、ter和pay。参考:use mastergosp_grantdbaccess guest05use paygosp_grantdbaccess guest05将guest用户账号添加到数据库pay中。参考:use paygosp_grantdbaccess guest从数据库master中删除guest051用户。参考:use mastergosp_revokedbaccess guest0513. 利用系统存储过程,进行SQL Server角色管理要求:固定服务器角色管理:新建SQL Server登录账号guest06,并将guest06用户添加到数据库创建者角色中。参考:EXEC sp_
12、addlogin guest06, 12345EXEC sp_addsrvrolemember guest06, dbcreator固定数据库角色管理:将guest06用户添加到pay数据库的db_owner角色中。参考:use paygoEXEC sp_grantdbaccess guest06 /*向数据库pay增加登录guest06的映射用户*/EXEC sp_addrolemember db_owner, guest06注意:在数据库pay中需已存在guest06用户用户自定义角色的使用:定义一个新的数据库角色Managers,该角色由DBO用户账号所有,然后将guest05用户添加到
13、Managers角色中。参考:use paygo EXEC sp_addrole Managers, DBOEXEC sp_addrolemember Managers, guest054. 利用T-SQL语句,进行语句和对象授权要求:语句授权:授权用户guest05创建数据库,然后授权角色Managers建表。参考:use mastergoGRANT CREATE DATABASE TO guest05use paygoGRANT CREATE TABLE TO Managers注意:授权创建数据库,只能在master中进行对象授权:授权用户guest05对表person进行插入和更新数据操作,然后授权Managers对表pay进行插入和查询操作。参考:use paygoGRANT INSERT, UPDATE ON person TO guest05GRANT INSERT, SELECT ON pay TO Managers5. 利用系统存储过程,删除角色及登录账号删除角色:从Managers角