数据库原理实验3数据库的安全性Word下载.docx
《数据库原理实验3数据库的安全性Word下载.docx》由会员分享,可在线阅读,更多相关《数据库原理实验3数据库的安全性Word下载.docx(31页珍藏版)》请在冰豆网上搜索。
SQLServer™可以在两种安全(身份验证)模式:
(1)Windows身份验证模式(Windows身份验证)
Windows身份验证模式使用户得以通过MicrosoftWindowsNT®
4.0或Windows®
2000用户帐户进行连接。
(2)混合模式(Windows身份验证和SQLServer身份验证)
混合模式使用户得以使用Windows身份验证或SQLServer身份验证与SQLServer实例连接。
在Windows身份验证模式或混合模式下,通过WindowsNT4.0或Windows2000用户帐户连接的用户可以使用信任连接。
2.SQLServer的安全机制
(1)服务器级别所包含的安全对象主要有登录名、固定服务器角色等。
其中登录名用于登录数据库服务器,而固定服务器角色用于给登录名赋予相应的服务器权限。
SQLServer中的登录名主要有两种:
第一种是Windows登录名,第二种是SQLServer登录名。
Windows登录名对应Windows验证模式,该验证模式所涉及的账户类型主要有Windows本地用户账户、Windows域用户账户、Windows组。
SQLServer登录名对应SQLServer验证模式,在该验证模式下,能够使用的账户类型主要是SQLServer账户。
(2)数据库级别所包含的安全对象主要有用户、角色、应用程序角色、证书、对称密钥、非对称密钥、程序集、全文目录、DDL事件、架构等。
用户安全对象是用来访问数据库的。
如果某人只拥有登录名,而没有在相应的数据库中为其创建登录名所对应的用户,则该用户只能登录数据库服务器,而不能访问相应的数据库。
(3)架构级别所包含的安全对象主要有表、视图、函数、存储过程、类型、同义词、聚合函数等。
架构的作用简单地说是将数据库中的所有对象分成不同的集合,这些集合没有交集,每一个集合就称为一个架构。
数据库中的每一个用户都会有自己的默认架构。
这个默认架构可以在创建数据库用户时由创建者设定,若不设定则系统默认架构为dbo。
数据库用户只能对属于自己架构中的数据库对象执行相应的数据操作。
至于操作的权限则由数据库角色所决定。
一个数据库使用者,想要登录服务器上的SQLServer数据库,并对数据库中的表执行数据更新操作,则该使用者必须经过如下图所示的安全验证。
3.数据库的存取控制:
授权和撤销权限
(1)GRANT
在安全系统中创建项目,使当前数据库中的用户得以处理当前数据库中的数据或执行特定的Transact-SQL语句
语法:
1)语句权限:
GRANT{ALL|statement[,...n]}
TOsecurity_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}
}
TOsecurity_account[,...n]
[WITHGRANTOPTION]
[AS{group|role}]
(2)REVOKE
删除以前在当前数据库内的用户上授予或拒绝的权限。
语法
语句权限:
REVOKE{ALL|statement[,...n]}
FROMsecurity_account[,...n]
对象权限:
REVOKE[GRANTOPTIONFOR]
TO|FROM}
security_account[,...n]
[CASCADE]
[AS{group|role}]
五、实验内容及步骤
以系统管理员身份登录到SQLServer服务器,在SQLServer2005界面中实现以下操作,并独立写出6—8题的程序代码;
1.在当前计算机中增加一个用户zhang和cheng,密码为secret。
使此用户通过winowsNT模式下登录SQLServer服务器,登录名分别为zhang和cheng;
(对象资源管理器—安全性—登录名—单击右键“新建登录名”然后如下图:
单击确定)
(在登录名下面就会出现新的用户登录名zhang和cheng,重新启动SQLServerManagementStudio,就可以使用“SQLServer身份验证”方式使用登录名和密码,成功连接SQLServerManagementStudio。
)
2.新建以混合模式登录SQLServer服务器的用户登录名为stu1、stu2和stu3,登录密码为secret,默认登录数据库为stu;
(和第一题相同的做法,只不过在新建登录名时将默认数据库设置为stu,然后设置用户映射为“Stu”数据库。
3.将帐号zhang添加为数据库stu的用户,用户名为zhang;
(右键单击账号“zhang”—属性—用户映射—设置如下图)
4.在数据库stu中创建用户stu1、stu2和stu3,登录帐号分别为stu1、stu2和stu3;
(同步骤三)
5.给数据库用户zhang赋予创建数据库的权限;
(数据库stu—安全性—右键单击数据库用户“zhang”—属性—安全对象—单击“添加”—特定类型的所有对象—确定-数据库—确定。
在权限设置中在“Createdatabase”后面的授予中打勾,确定。
6.给数据库用户stu1赋予对sc表进行插入、修改、删除操作权限;
(对象资源管理器—数据库“Stu”—安全性—用户stu1—属性—安全对象—添加—特定类型的所有对象—确定—表—确定。
选择表sc,在权限设置中在“Delete、Insert、Update”后面的授予中打勾—确定。
7.给数据库用户stu2和stu3赋予对student表、course表所有操作权限及查询sc的操作权限,并允许再授权给其他用户;
(对象资源管理器—数据库“Stu”—安全性—用户stu2—属性—安全对象—添加—特定类型的所有对象—确定—表—确定。
选择表student,在权限设置中所有的授予和具有授予权限中打勾;
表course执行相同的操作;
对于表sc,在去权限设置Select的授予和授予权限中打勾;
确定。
对于用户stu3执行与stu2相同的操作。
8.收回数据库用户stu2对student表和course表的删除操作的权限;
(只要在用户stu2的安全对象设置中把student表和course表的设置权限中的Delete中的授予中的对号去掉就可以了。
revokedeleteonstudentfromstu2
cascade
revokedeleteoncoursefromstu2
9.若一个小组共5个成员,他们对数据库stu具有相同的操作权限,具体权限如下:
1)对于student、course表只能进行数据查询;
2)只能对student表中sname进行更改;
3)对于sc表只能进行修改、删除或插入;
(先将登录名中的账号“cheng”的用户映射设置为数据库stu,然后执行对象资源管理器—数据库stu—安全性—角色—数据库角色—新建数据库角色—角色名称为“NEW”,所有者为“dbo”—角色成员—添加—浏览—选择五个数据库用户—确定—确定。
数据库角色“NEW”—属性—安全对象—添加—特定类型的所有对象—确定—表—确定。
对于表student和表course在权限设置中在“Selete”后面的授予中打勾;
对于表sc在权限设置中在“Delete、Insert、Update”后面的授予中打勾;
同时在表student权限设置中在“Update”后面的授予中打勾,然后点击“列权限”,在列Sname后面的授予中打勾,确定。
10.将登录帐号cheng同时拥有服务器角色serveradmin和securityadmin的权限;
登录名cheng—属性—服务器角色—选择服务器角色serveradmin和securityadmin—确定。
11.删除服务器角色sysadmin的成员stu2和stu3;
安全性—服务器角色sysadmin—属性—选择角色成员stu2—单击删除按钮—选择角色成员stu3—单击删除按钮—确定。
六、样例模板
一.用户的创建(用户包括操作系统用户、服务器用户和数据库用户)
1.创建操作系统用户u1、u2
以管理员的身份登录到Windows,打开“控制面板”(Win7)中的“用户账户”,创建操作系统用户u1、u2。
2.创建数据服务器用户
GUI方式(SQLServer2008为例):
以DBA的身份登录到SQLServerManagement
Studio,在对象资源管理器中选择“安全性”,右击“登录名”,在弹出的快捷菜单中选择“新建登录名”菜单选项,在“新建登录名”窗口中单击“搜索”按钮添加Windows用户u1,选择“Windows身份验证模式”,单击“确定”按钮完成。
(1)命令方式:
usemaster
createlogin[LISHUO-PC\u1]fromwindows
(2)同样的方式将操作系统用户u2、u3加入到数据服务器。
3.创建数据库用户
以系统管理员身份登录到数据库服务器,分别以GUI方式和命令方式创建数据库用户
(1)GUI方式(SQLServer2008为例):
选中stu_end数据库,单击“安全性”,在其“用户”节点下右击,在弹出的快捷菜单中选择“新建用户”菜单项,在“数据库用户”窗口中输入要新建的数据库用户名和登录名,单击“确定”按钮。
(2)命令方式:
usestu_end
go
createuserstu_end_login01forlogin[LISHUO-PC\u1]
(3)查看stu_end_login01的属性,此用户除了拥有默认架构外,没有分配相应权限。
(3)切换到操作系统用户u1,以u1的身份登录到SQLServerManagementStu