数据库课后题答案 第八章 管理SQL Server的安全性Word文件下载.docx
《数据库课后题答案 第八章 管理SQL Server的安全性Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库课后题答案 第八章 管理SQL Server的安全性Word文件下载.docx(7页珍藏版)》请在冰豆网上搜索。
(2)SQLServer认证进程
当SQLServer在WINDOWS环境中运行时,系统管理员必须指定系统的认证模式类型。
认证模式类型有两种:
(1)WINDOWS认证模式
(2)混合模式
WINDOWS认证模式只允许使用WINDOWS认证进程。
这时,用户不能指SQLServer的登录帐号。
混合认证模式既允许使用WINDOWS认证进程,又允许使用SQLServer认证进程。
在混合认证模式中,当某个用户希望登录SQLServer系统时,系统是采用WINDOWS认证进程还是采用SQLServer认证进程取决于该用户连接到系统的网络协议类型。
注意:
在SQLServer系统中,除了网络协议Namedpipes和TCP/IP,其他的网络通信协议都是非信任连接协议。
举例说明:
首先在SQLServer中建立一个登录帐户:
选中服务器下的“安全性”-》“登录”,右单击选择“新建登录”,在弹出的菜单常规选项卡中输入“帐号”例如:
hello,选择SQLServer身份验证,输入密码:
123456,在“服务器角色”卡中选择相应的服务器角色,例如选择:
securityadministrators和databasescreators,在“数据库访问”卡中选择允许该帐号访问的数据库名,例如选择:
studentborrow数据库。
单击确定,这样登录帐号:
hello就建立完成了。
此时,我们在服务器名右单击选择“编辑SQLServer注册属性”,在弹出的对话框中选择使用SQLServer身份验证,这时在登录名处输入新建立的帐号:
hello,选择总是提示输入用户名和密码,输入密码:
123456,单击“确定”,然后重新打开SQLServer,此时提示我们输入用户名和密码,并且只能创建数据库和只能访问studentborrow数据库。
如果我们在服务器上右单击选择属性,在“安全性”卡片上可以选择认证模式,如果选择“仅WINDOWS认证”,那么在重复刚才的操作,就不能够进入了,因为此时仅仅WINDOWS帐号才可以访问SQLServer。
二、帐号验证
SQLServer的安全性机制可以划分为4个等级:
(1)客户机操作系统的安全性
(2)SQLServer的登录安全性
(3)数据库的使用安全性
(4)数据库对象的使用安全性
因而使用数据库的帐户也应从四个方面进行验证
1、操作系统级别的验证
2、服务器级别的验证
SQLServer服务器级别安全性建立在控制服务器登录帐户和密码的基础上也就是前面所说的两种认证模式:
WINDOWS认证模式和混合模式。
3、数据库级别的验证
在默认情况下,数据库的所有者可以访问该数据库的对象,还可以分配访问权给别的用户,以便让别的用户也拥有针对该数据库的访问权利。
4、数据库对象级别的验证
默认情况下,只有数据库的所有者可以在该数据库下进行操作。
当一个非数据库所有者想访问数据库里的对象时,必须事先由数据库的所有者赋予该用户对指定对象的执行特定操作的权限。
第二节登录帐号管理
一、标准的SQL帐户管理
1、帐户的建立
方式有三种:
使用查询分析器,通过系统提供的存储过程;
通过SQLServer企业管理器;
使用SQLServer提供的创建登录向导
存储过程:
sp_addlogin建立标准登录帐户
语法:
sp_addlogin[@loginame=]’ligin’
[,[@passwd=]’psaaword’]
[,[@=defab]’database’]
[,[@eflanguage=]’language’]
2、修改和删除帐户
使用系统存储过程sp_defaultdb修改登录帐户的默认数据库
使用系统存储过程sp_defaultlanguage修改登录帐户的默认语言
使用系统存储过程sp_password修改登录帐户的密码
使用系统存储过程sp_droplogin来删除SQLServer标准登录帐户
3、注意:
(1)在SQLServer中删除帐户信息时,有如下限制:
●已经映射到数据库用户的帐户不允许被删除
●系统帐户SA不能被删除,正在使用的帐户不能被删除
●拥有数据库的帐户不能被删除
(2)在进行修改和删除操作时用到的所有存储过程和使用企业管理器进行的有关帐户、密码、角色、权限的操作,都只有被赋予SYSADMIN或securityadmin固定服务器角色的帐户才可以使用。
二、与WINDOWS集成的帐户管理
与标准的SQL帐户管理类似,在此仅介绍用系统存储过程的方法:
使用系统存储过程sp_grantlogin来使WINDOWS的用户或工作组映射为SQLServer的登录帐户。
sp_grantlogin[@loginame=]’login’
2、删除Windows帐户
sp_revokelogin可是从SQLServer中删除用sp_grantlogin创建的Windows帐户
sp_revokelogin[@loginame=]’login’
3、拒绝登录帐户
使用系统存储过程sp_denylogin可以设置不允许Windows的工作组或用户联接到SQLServer服务器。
sp_denylogin[@loginame=]’login’
第三节服务器角色管理
角色是SQLServer2000引进的用来集中管理数据库或服务器权限的概念。
SQLServer在服务器级提供了固定服务器角色,用户不能增加、修改和删除服务器角色。
一、固定服务器角色
1、固定服务器角色
服务器角色是一些系统定义好操作权限的用户组,其中的成员是登录帐户。
服务器角色不能增加或删除,只能对其中的成员进行修改。
服务器角色是SQLServer在安装是就创建好的用于分配服务器级管理权限的实体。
常用的固定服务器角色有:
sysadmin、serveradmin、securityadmin、dbcreator、diskadmin、processadmin、setupadmin和bulkadmin。
2、浏览服务器角色
使用系统存储过程sp_helpsrvrole浏览服务器角色
sp_helpsrvrole[[@srvrolename=]’role’]
二、管理服务器角色成员
一个登录帐户可以不属于任何角色,也可以同时属于多个角色。
将一个登录帐户加入一个角色,可以令使用该帐户登录的用户自动的具有角色预定义的权限。
Windows系统管理员组自动属于sysadmin角色
1、使用系统存储过程更改服务器角色成员
(1)将一个帐户加入一个服务器角色,可使用系统存储过程sp_addsrcrolemember
sp_addsrcrolemember[@loginame=]’login’
[@rolename=]’role’
(2)将某个帐户从服务器角色中删除,可以使用系统存储过程sp_dropsrvrolemember
系统存储过程sp_dropsrvrolemember的功能是收回分配给某登录帐户的指定固定服务器角色。
sp_dropsrvrolemember[@loginame=]’login’,[@rolename=]’role’
2、可以使用企业管理器更改服务器角色成员
三、服务器角色的权限
1、固定服务器角色的权限
(1)sysadmin拥有最高的权限,可以执行服务器范围内的一切操作.
(2)Securityadmin可以在服务器范围内进行有关权限的一切管理操作。
如管理登录帐户,管理数据库对象权限,阅读日志文件等。
(3)Serveradmin可以设置服务器范围的配置选项,关闭服务器。
(4)Dbcreator可以创建、更改和除去数据库
(5)Setupadmin可以管理链接服务器和启动过程
(6)Processadmin可以管理在SQLServer中运行的进程
(7)Diskadmin可以管理磁盘文件
(8)Bulkadmin可以执行bulkinsert语句
2、可以使用系统存储过程sp_srvrolepermission浏览固定服务器角色的权限
sp_srvrolepermission[[@srvrolename=]’role’]
第四节数据库角色管理
为了更高效的管理数据库用户的权限,SQLServer在数据库级提供了固定的数据库级角色。
用户不能修改固定数据库级角色的权限,也不能删除固定数据库级角色。
但用户可以自己创建新的数据库角色,在分配权限给新建的角色。
一、固定数据库角色
固定数据库角色是在每个数据库中都定义的预定义组。
管理员可以将一个用户加入一个或多个数据库角色中。
固定数据库角色不能被添加、修改或删除。
SQLServer在数据库级设置了固定数据库角色来提供最基本的数据库权限的总和管理。
1、使用系统存储过程sp_helpdbfixedrole浏览固定数据库角色
sp_helpdbfixedrole[[@rolename=]’role’]
例如:
execsp_helpdbfixedrole
2、固定数据库角色的权限
public:
维持所有的默认权限
db_owner:
可以执行所有数据库角色的活动
db_accessadmin:
可以加入或删除数据库用户、组和角色
db_ddladmin:
可以加入、修改或删除数据库对象
db_securityadmin:
管理角色、角色成员,管理对象和语句权限
db_backupoperator:
备份数据库
db_datareader:
可以从所有表中读数据
db_datawriter:
可以在所有表中增加、修改或删除数据
db_denydatareader:
看不到数据库任何数据
db_denydatawriter:
不能改变任何表的数据
3、管理固定数据库角色成员
(1)使用系统存储过程sp_addrolemember将某个登录帐户加入某个固定数据库角色。
sp_addrolemember[@rolename=]’role’,[@membername=]’security_account’
(2)使用系统存储过程sp_droprolemember从某个固定数据库角色中删除指定的登录帐户。
sp_droprolemember[@rolename=]’role’,[@membername=]’security_account’
4、角色的应用
(1)public角色
在前面提到的数据库角色中,SQLServer还有一个特殊的数据库角色public。
所有的数据库用户都属于public角色。
Public角色的特点是:
●替数据库用户捕获所有的数据库默认权限
●不能将public角色分配给任何用户、工作组,因为所有用户都默认为属于该角色
●public角色存在于每一个数据库中,包括系统数据库和用户建立的数据库
●public角色不允许被删除
(2)sysadmin角色与dbo
在所有数据库用户中,特殊用户dbo具有最高的管理权限。
它被认为是所有数据库对象的所有者,可以访问所有的数据库对象,可以在数据库范围内执行一切操作。
在固定数据库级角色和dbo之间有着一种奇特的对应关系。
任何被赋予sysadmin固定服务器角色的用户都映射着每个数据库的特殊用户dbo。
所有由sysadmin成员创建的数据库对象都自动将所有者设置为dbo。
如果用户hello是一个sysadmin固定服务器角色成员,而且在“studentborrow”数据库里创建了一个表名叫t,则表t属于studentborrow数据库的dbo用户,应该表示为dbo.t,而不是hello.t
相反,如果hello不是数据库所有者或者sysadmin固定服务器中的成员,那么由hello创建的表t属于hello,应该表示成hello.t
只有由数据库所有者和sysadmin固定服务器成员创建的数据库对象才属于dbo。
由任何其他用户创建的对象只属于创建对象的用户,而不属于dbo。
二、用户定义数据库角色