SQL Server数据库安全性管理
数据库的安全管理主要是对数据库用户的合法性和操作权限的管理。数据库用户(在不至于引起混淆的情况下简称用户)是指具有合法身份的数据库使用者,角色是具有一定权限的用户组。SQL Server的用户或角色分为二级:一级为服务器级用户或角色;另一级为数据库级用户或角色。
SQL Server的安全性管理包括以下几个方面:数据库系统登录管理、数据库用户管理、数据库系统角色管理以及数据库访问权限的管理。
9.3.1 数据库系统登录管理
1. 登录账号
登录账号也称为登录用户或登录名,是服务器级用户访问数据库系统的标识。为了访问SQL Server系统,用户必须提供正确的登录账号,这些登录账号既可以是Windows登录账号,也可以是SQL Server登录账号,但它必须是符合标识符规则的惟一名字。登录账号的信息是系统信息,存储在master数据库的sysxlogins系统表中,用户如需要有关登录账号的信息可以到该表中查询。
SQL Server 2000有一个默认的登录账号sa(SystemAdministrator),在SQL Server系统中它拥有全部权限,可以执行所有的操作。
2.查看登录账号
使用企业管理器可以创建、查看和管理登录账号。“登录账号”存放在SQL服务器的安全性文件夹中。当进入企业管理器,打开指定的SQL服务器组和SQL服务器,并选择【安全性】文件夹的系列操作后,就会出现如图9-2所示的屏幕窗口。通过该窗口可以看出安全性文件夹包括4个文件夹:登录、服务器角色、连接服务器和远程服务器。单击【登录】可以看到当前数据库服务器的合法登录用户的一些信息。
3.创建一个登录账号
创建一个登录账号的操作步骤为:右击【登录】文件夹,在弹出的菜单中选择【新建登录】选项后,会出现图9-3所示新建登录对话框界面,回答相应信息即可。也可以通过此界面设定该登录用户的服务器角色和要访问的数据库,这样该登录账号同时也作为数据库用户。
4.编辑或删除登录账号
单击【登录】文件夹,在出现的显示登录账号的窗口中,用鼠标右击需要操作的登录号:选择【属性】便可对该用户已设定内容进行重新编辑;选择【删除】便可删除该登录用户。
进行上述操作需要对当前服务器拥有管理登录(Security Administrators)及其以上的权限。

图9-2 安全性文件夹的屏幕界面 图9-3 新建登录对话框
9.3.2 数据库用户管理
1. 用户账号
用户账号也称为用户名,或简称为用户。他是数据库级用户,即是某个数据库的访问标识。在SQL Server的数据库中,对象的全部权限均由用户账号控制。用户账号可以与登录账号相同也可以不想同。
数据库用户必须是登录用户。登录用户只有成为数据库用户(或数据库角色)后才能访问数据库。用户账号与具体的数据库有关。例如,MyDb数据库中的用户账号use1不同于STUDENTES数据库中的用户账号use1。
每个数据库的用户信息都存放在系统表sysusers中,通过查看该表可以看到当前数据库所有用户的情况。在该表中每一行数据表示一个SQL Server用户或SQL Server角色信息。创建数据库的用户称为数据库所有者(dbo),他具有这个数据库的所有权限。创建数据库对象的用户称为数据库对象的所有者(dbo),他具有该对象的所有权限。在每一个SQL Server 2000数据库中,至少有一个名称为dbo用户。系统管理员sa是他所管理系统的任何数据库的dbo用户。
2. 查看用户账号
使用企业管理器可以创建、查看和管理数据库用户。每个数据库中都有“用户”文件夹。当进入企业管理器,打开指定的SQL服务器组和SQL服务器,并打开【数据库】文件夹,选定并打开要操作的数据库后,单击【用户】文件夹就会出现如图9-4所示的用户信息窗口。通过该窗口可以看到当前数据库合法用户的一些信息。
图9-4 查看用户信息窗口
3. 创建新的数据库用户
创建新的数据库用户有两种方法。
一种方法是在创建登录用户时,指定他作为数据库用户的身份。例如,在图9-3新建登录对话框中,输入登录名称(如user1),单击【数据库访问】选项卡,在【指定此登录可以访问的数据库[S]】区域的【许可】栏目下指定访问数据库(如MyDb),如图9-5所示,登录用户user1同时也成为数据库MyDb的用户。
另一种方法是单独创建数据库用户,这种方法适于在创建登录账号时没有创建数据库用户的情况,操作步骤如下:右击【用户】文件夹,在弹出的菜单中选择【新建数据库用户】命令后,会出现图9-6所示新建用户对话框界面,在【登录名】下拉框中选择预创建用户对
图9-5 创建登录时指定登录用户同时作为数据库用户界面
图9-6 单独创建数据库用户对话框
应的登录名,然后在【用户名】的文本框中键入用户名即可。如图9-6所示。通过此界面也可以设定该数据库用户的权限和角色的成员。
4. 编辑或删除数据库用户账号
单击【用户】文件夹,在出现的显示用户账号的窗口中,右击需要操作的用户账号,选择【属性】命令,出现该用户的角色和权限窗口,可对该用户已设定内容进行重新编辑;选择【删除】便可删除该数据库用户。
进行上述操作需要对当前数据库拥有用户管理(db_accessadmin)及其以上的权限。
9.3.3 数据库系统角色管理
在SQL Server 2000中可以把某些用户设置成某一角色,这些用户称为该角色的成员。当对该角色进行权限设置时,其成员自动继承该角色的权限。这样,只要对角色进行权限管理就可以实现对属于该角色的所有成员的权限管理,大大减少了工作量。
SQL Server中有两种角色,即服务器角色和数据库角色。
1.服务器角色
一台计算机可以承担多个 SQL Server服务器的管理任务。固定服务器角色是对服务器级用户即登录账号而言的。它是指在登录时授予该登录账号对当前服务器范围内的权限。这类角色可以在服务器上进行相应的管理操作,完全独立于某个具体的数据库。
固定服务器角色的信息存储在master数据库的sysxlogins系统表中。SQL Server 2000提供了8种固定服务器角色,如图9-7所示。
图9-7固定服务器角色
可以使用企业管理器将登录账号添加到某一指定的固定服务器角色作为其成员。步骤如下:登录服务器后,展开【安全性】文件夹,单击【服务器角色】文件夹,则会出现图9-7所示的固定服务器角色窗口,右击某一角色,在弹出的菜单中选择【属性】命令,可以查看该角色的权限,并可以添加某些登录账号作为该角色的成员,也可以将某一登录账号从该角色的成员中删除。
注意:
(1) 固定服务器角色不能被删除、修改何增加;
(2) 固定服务器角色的任何成员都可以将其他的登录账号增加到该服务器角色中。
2.数据库角色
在一个服务器上可以创建多个数据库。数据库角色对应于单个数据库。数据库的角色分为固定数据库角色和用户定义的数据库角色。
固定数据库角色是指SQL Server 2000为每个数据库提供的固定角色。SQL Server 2000允许用户自己定义数据库角色,称为用户定义的数据库角色。
(1) 固定数据库角色
固定数据库角色的信息存储在sysuers系统表中。SQL Server 2000提供了10种固定数据库角色,如表9-3所示。
表9-3固定数据库角色
角色
|
|
描述
|
public
|
|
维护默认的许可
|
db_ owner
|
|
执行数据库中的任何操作
|
db_accessadmin
|
|
可以增加或删除数据库用户、组和角色
|
db_addladmin
|
|
增加、修改或删除数据库对象
|
db_securityadmin
|
|
执行语句和对象权限管理
|
db_backupoperator
|
|
备份和恢复数据库
|
db_#reader
|
|
检索任意表中的数据
|
db_#writer
|
|
增加、修改和删除所有表中的数据
|
db_deny#reader
|
|
不能检索任意一个表中数据
|
db_deny#writer
|
|
不能修改任意一个表中的数据
|
可以使用企业管理器查看固定数据库角色,还可以将某些数据库用户添加到固定数据库角色中,使数据库用户成为该角色的成员。也可以将固定数据库角色的成员删除。
将用户添加到某一数据库角色的步骤为:打开指定的数据库,单击【角色】文件夹,右击某个固定数据库角色,在出现的菜单中选择【属性】命令,就会出现图9-8所示的数据库角色属性对话框,单击【添加】按钮,则会出现该角色的非成员用户,按提示信息操作可以将他们添加到该角色中;选中某一用户后,单击【删除】按钮可以将此用户从该角色中删除。
图9-8 数据库角色属性对话框
注意:
●SQL Server 2000提供的10种固定数据库角色不能被删除和修改。
●固定数据库角色的成员可以增加其他用户到该角色中。
(2) 用户定义的数据库角色
在许多情况下,固定数据库角色不能满足要求,需要用户自定义数据库新角色。
使用企业管理器创建数据库角色的步骤为:在企业管理器中打开要操作的数据库文件夹,右击【角色】文件夹,并在弹出的菜单中选择【新建数据库角色】命令,则出现新建数据库角色对话框如图9-9所示,按提示回答角色名称等相应信息后,单击【确定】按钮即可。
在新建数据库角色对话框中可完成3种操作:在名称栏中输入新角色名;在用户栏中添加或删除角色中的用户;确定数据库角色的类型。
用户定义的数据库角色类型有两种:标准角色(Standard Role)和应用程序角色(Application Role)。标准角色用于正常的用户管理,它可以包括成员。而应用程序角色是一种特殊角色,需要指定口令,是一种安全机制。
图9-9 新增数据库角色对话框 图9-10 数据库角色权限设置对话框
对用户定义的数据库角色,可以设置或修改其权限。使用企业管理器进行操作的步骤为:打开操作数据库,选中用户定义的数据库角色,右击此角色在弹出的菜单中选择【属性】命令,然后单击【权限】按钮,则会出现当前数据库的全部数据对象以及该角色的权限标记(若对角色设置过权限,也可以仅列出该角色具有权限的数据对象)。如图9-10所示。单击数据库角色权限设置对话框中数据对象访问权限的选择方格有三种状况:
√:授予权限。表示授予当前角色对指定的数据对象的该项操作权限。
×:禁止权限。表示禁止当前角色对指定的数据对象的该项操作权限。
空:撤消权限。表示撤销当前角色对指定的数据对象的该项操作权限。
使用企业管理器也可以删除用户定义的数据库角色。步骤为:打开操作数据库,选中用户定义的数据库角色,右击此角色在弹出的菜单中选择【删除】命令即可。
9.3.4 SQL Server权限管理
1.权限的种类
SQL Server 2000使用权限来加强系统的安全性,通常权限可以分为三种类型:对象权限、语句权限和隐含权限。
(1) 对象权限
对象权限是用于控制用户对数据库对象执行某些操作的权限。数据库对象通常包括表、视图、存储过程。
对象权限是针对数据库对象设置的,它由数据库对象所有者授予、禁止或撤消。对象权限适用的数据库对象和Transact-SQL语句在表9-4中列出。
表9-4对象权限适用的对象和语句
Transact-SQL
|
|
数据库对象
|
SELECT(查询)
|
|
表、视图、表和视图中的列
|
UPDATE(修改)
|
|
表、视图、表的列
|
INSERT(插入)
|
|
表、视图
|
DELETE(删除)
|
|
表、视图
|
EXECUTE(调用过程)
|
|
存储过程
|
DRI(声明参照完整性)
|
|
表、表中的列
|
(2) 语句权限
语句权限是用于控制数据库操作或创建数据库中的对象操作的权限。语句权限用于语句本身,它只能由SA或dbo授予、禁止或撤消。语句权限的授予对象一般为数据库角色或数据库用户。语句权限适用的 Transact-SQL语句和功能如表9-5所示。
表9-5 语句权限适用的语句和权限说明
Transact-SQL语句
|
权限说明
|
CREATE #BASE
|
创建数据库,只能由SA授予SQL服务器用户或角色
|
CREATE DEFAULT
|
创建缺省
|
CREATE PROCEDURE
|
创建存储过程
|
CREATE RULE
|
创建规则
|
CREATE TABLE
|
创建表
|
CREATE VIEW
|
创建视图
|
BACKUP #BASE
|
备份数据库
|
BACKUP LOG
|
备份日志文件
|
(3) 隐含权限
隐含权限指系统预定义而不需要授权就有的权限,包括固定服务器角色成员、固定数据库角色成员、数据库所有者(dbo)和数据库对象所有者(dboo)所拥有的权限。
例如,sysadmin固定服务器角色成员可以在服务器范围内做任何操作,dbo可以对数据库做任何操作,dboo可以对其拥有的数据库对象做任何操作,对他不需要明确的赋予权限。
2.权限的管理
对象权限的管理可以通过两种方法实现:一种是通过对象管理它的用户及操作权限,另一种是通过用户管理对应的数据库对象及操作权限。具体使用哪种方法要视管理的方便性来决定。
(1)通过对象授予、撒消或禁止对象权限
如果一次要为多个用户(角色)授予、撤消或禁止对某一个数据库对象的权限时,应采用通过对象的方法实现。在SQL Server的企业管理器中,实现对象权限管理的操作步骤如下:
1)展开企业管理器窗口,打开【数据库】文件夹,展开要操作的数据库(如MyDb),右击指定的对象(如readers表)。
2)在弹出的菜单中,选择【所有任务】,在弹出的子菜单中选择【管理权限】命令,此时会出现一个对象权限对话框,如图9-11所示。
3)对话框的上部,有两个单选框如图9-11所示,可以根据需要选择一个。一般选择【列出全部用户】→【用户定义的数据库角色/public】。
4)对话框的下面是有关数据库用户和角色所对应的权限表。这些权限均以复选框的形式表示。复选框有三种状态:“√”(授予权限)、“×”(禁止权限)、空(撤消权限)。在表中可以对各用户或角色的各种对象操作权限(SELECT、INSERT、UPDATE、DELETE、EXEC和DRI)进行授予、禁止或撤消,单击复选框可改变其状态。
5)完成后单击【确定】按钮。

图9-11 数据库对象权限对话框 图9—12 数据库角色权限属性对话框
(2)通过用户或角色授予、撤消或禁止对象权限
如果要为一个用户或角色同时授予、撤消或者禁止多个数据库对象的使用权限,则可以通过用户或角色的方法进行。例如要对“MyDb”数据库中的“数据输入”角色进行授权操作,在企业管理器中,通过用户或角色授权(或收权)的操作步骤如下:
1)扩展开SQL服务器和【数据库】文件夹,单击数据库【MyDb】,单击【用户】或【角色】。本例单击【角色】。在窗口中找到要选择的用户或角色,本例为【数据输入】角色,右击该角色,在弹出菜单中选择【属性】命令后,出现如图9-12所示数据库角色属性对话框。
2)在数据库角色属性对话框中,单击【 权限】按钮,会出现如图9-13所示的数据库角色权限属性对话框。
图9-13 数据库角色权限属性对话框
4)在对话框的权限列表中,对每个对象进行授予、撤消或禁止权限操作。在权限表中,权限SELECT、INSERT、UPDATE等安排在列中,每个对象的操作权用一行表示。在相应的复选框上,如果为“√”则为授权,为“×”则为禁止权限,如果为空白则为撤消权限。单击复选框可改变其状态。
5)完成后,单击【确定】按钮。返回数据库角色属性对话框后,再单击【确定】按钮。
3.语句权限的管理
SQL Server的企业管理器中还提供了管理语句权限的方法,其操作的具体步骤如下:
1)展开SQL服务器和【数据库】文件夹,右击要操作的数据库文件夹,如【MyDb】数据库,并在弹出菜单中选择【属性】命令,会出现数据库属性对话框。
2)在数据库属性对话框中,选择【权限】选项卡,出现数据库用户及角色的语句权限对话框,如图9-14所示。
图9-14 数据库用户和角色的语句权限对话框
在对话框的列表栏中,单击表中的各复选框可分别对各用户或角色授予、撤消或禁止数据库的语句操作权限。复选框内的“√”表示授予权限,“×”表示禁止权限,空白表示撤消权限。
3)完成后单击【确定】按钮。
4. 使用Transact-SQL语句管理权限
SQL Server 2000的安全性管理,不仅可以通过SQL Server的企业管理器的相应操作实现,还可以在查询分析器中通过Transact-SQL语句实现。这里只介绍用Transact-SQL语句实现权限管理,其语句格式与本章9.1.3小节中介绍的标准SQL的类似。
(1) 授予权限语句-GRANT
1) 语句授权
【例9.9】 语句授权:将创建数据库、创建表的权限授予用户user1和user2。
----将MyDb数据库设置为当前数据库----
USE MyDb
GRANT CREATE TABLE TO user2
通过查看数据库MyDb【属性】的【权限】项,可以看到用户user2拥有创建表的语句权限。
2) 对象授权
注意:SQL Server 与标准SQL的不同是省去了对象类型,直接写对象名称即可。
【例9.10】 对象授权:授予角色public对表readers的select权限,授予用户user1对表readers的insert和delete的权限。
GRANT SELECT ON readers TO public
GRANT INSERT,DELETE ON readers TO user1
通过查看角色public和用户user2的属性,可以看到他们已拥有对数据对象 readers的相应权限。
【例9.11】将对表readertype的属性“限借阅数量”和“借阅期限”的修改权限授予user2。
GRANT UPDATE(限借阅数量, 借阅期限) ON readertype TO user2
(2) 禁止权限语句-DENY
1)禁止语句权限
【例9.12】禁止用户user2的CREATE TABLE 语句权限。
DENY CREATE TABLE TO user2
通过查看数据库MyDb【属性】的【权限】项,可以看到该用户对数据库的创建表的语句权限被禁止。
2)禁止对象权限
【例9.13】禁止用户user2对表readers的DELETE权限。
DENY DELETE ON readers TO user2
通过查看用户user2的属性,可以看到该用户对数据对象 readers的DELETE的权限被禁止。
可以使用DENY语句限制用户或角色的某些权限。这样不禁删除了以前授予用户或角色的某些权限,而且还禁止这些用户或角色从其他角色继承禁止的权限。
(3)撤消权限语句-REVOKE
1) 撤消语句权限
【例9.14】撤消用户user2的CREATE TABLE 语句权限。
REVOKE CREATE TABLE TO user2
通过查看数据库MyDb【属性】的【权限】项,可以看到用户user2创建表的权限被撤消。
2)撤销对象权限
【例9.15】撤消用户user2对表readers的DELETE权限。
REVOKE DELETE ON readers TO user2
通过查看用户user2的属性,可以看到该用户对数据对象 readers的DELETE的权限被撤消。
注意:撤消权限的作用类似于禁止权限,它们都可以删除用户或角色的指定权限。但是撤消权限仅仅删除用户或角色拥有的某些权限,并不禁止用户或角色通过其它方式继承已被撤消的权限。
使用系统存储过程 sp_helprotect可以查看当前数据库中指定数据对象或语句上的权限信息。
【例9.16】以下批的执行结果表明,用户user1在books上的DELETE权限被禁止后,将其加入拥有books上的DELETE权限的角色group中后,被禁止的权限DELETE不能从group中继承。结果如表9-6所示。
--对user1授权--
GRANT INSERT,DELETE ON books TO user1
--查看表books上的权限情况--
EXEC sp_helprotect 'books'
--禁止user1对表books的DELETE权限--
DENY DELETE ON books TO user1
--查看表books上的权限情况--
EXEC sp_helprotect 'books'
--授予角色group权限--
GRANT INSERT,DELETE,UPDATE ON books TO group1
--将user1添加到角色group--
EXEC sp_addrolemember 'group1','user1'
--查看表books上的权限情况--
EXEC sp_helprotect 'books'
Go
表9-6 被禁止的权限不能通过角色继承
分享到:
相关推荐
SQL SERVER数据库安全性;PPT;授课电子讲义
随着数据安全的日益重要,SQLServer 数据库的安全性也变得越来越重要。SQLServer 数据库 SSH 配置可以提供加密的数据传输和身份验证,保护数据库免受未经授权的访问。同时,SSH 配置还可以提供远程访问数据库的能力...
关于 SQL Server 数据库安全 ...SQL Server 数据库安全机制是指数据库管理系统提供的安全防护机制,如身份认证、访问控制、完整性保障、访问审计、数据加密与视图、存储过程等,以保证数据库的安全和可靠性。
它提供了高性能、可靠性高、安全性强的数据存储和管理解决方案。SQL Server支持各种编程语言,包括C++、C#、Java等,使其成为开发者首选的数据库管理系统之一。 MFC连接SQL Server数据库的步骤 1. 初始化COM库 在...
在文章《提高SQL Server数据库安全性的几点思考》中,作者王桃群就如何提高SQL Server数据库的安全性提出了几个实用的建议。 首先,文章指出了SQL Server数据库的安全隐患主要来源于其默认的网络配置。为了减少安全...
通过对 SQL Server 数据库巡检的重要性,我们可以了解到数据库的健康状态和安全性。以下是数据库巡检的知识点: 一、数据库巡检报告 * 数据库巡检报告是对数据库当前状态的总结,包括硬件平台、服务器序列号、CPU ...
SQL Server数据库安全性研究
这两者的结合,构成了SQL Server数据库安全性管理的基石。 总之,数据安全是关系到企业核心竞争力的重要问题,加强SQL Server数据库的安全管理,采用综合的安全技术手段,能够有效地保障数据库的安全稳定运行,防止...
在本次的技术手册中,我们将讨论SQL Server数据库安全的话题,其中包括数据加密、SQL注入攻击、角色控制以及安全通信方面的内容,希望对SQL Server安全有个更全面了解的读者,赶紧下载阅读吧。 来自TT
在软件的安装目录下找到 SQL Server 数据库脚本(文件名:sqlserver.sql),用记事本打开,然后把里面的脚本程序全部复制。注意,复制粘贴时不要通过快捷键操作,点鼠标右键复制粘贴。 步骤 4:执行数据库脚本 在...
在SQL Server数据库管理中,备份和恢复是两个至关重要的操作,它们确保了数据的安全性和可恢复性。在本文中,我们将深入探讨如何使用C#语言来实现这些功能。C#结合SQL Server的API,如SqlClient和Smo,可以方便地...
《SQL Server数据库管理精品电子书》是一本专为IT专业人士准备的深度学习资源,由51CTO提供,旨在帮助读者全面掌握SQL Server数据库的管理和优化技巧。这本书涵盖了SQL Server数据库的基础知识、高级特性和实战应用...
SQL Server数据库查看器是一款专为SQL Server设计的强大而便捷的数据库管理工具,它提供了一种直观的方式来浏览、管理和操作数据库中的数据。对于SQL Server初学者和经验丰富的DBA(数据库管理员)来说,这款软件都...
在IT行业中,数据库备份是确保数据安全性和业务连续性的重要环节。C#和ASP.NET作为Microsoft .NET框架下的编程语言和Web开发平台,可以用来构建高效、可靠的数据库管理工具,其中包括数据库的备份功能。本教程将详细...
在开发设备管理信息系统中,笔者使用了B/S编程模式,前台在ASP环境下编写管理程序,后台使用SQL Server数据库存储数据。针对SQL Server数据库系统中存储BLOB数据的问题,笔者进行了初步探讨,并提出了相应的解决方案...
- 使用参数化的SQL语句防止SQL注入攻击,提高安全性。 5. 高级话题: - ADO.NET和ODBC:除了ADO,C++还可以通过ADO.NET(.NET框架的一部分)或Open Database Connectivity(ODBC)驱动程序与SQL Server通信。每种...
本文总结了SQL Server数据库系统安全性应用研究的主要内容,提出了数据库安全性定义、SQL Server数据库管理系统的安全机制、数据库安全控制方法、SQL注入漏洞防范措施等知识点,为开发者在Web网站设计和开发中提供了...
SQL Server数据库文档生成器是一款专为SQL Server 2000和SQL Server 2005,以及Access数据库设计的工具,它能够帮助数据库管理员和开发者高效地创建数据表的详细文档。这款软件的主要功能是根据数据库中的数据表及其...
1. 企业级数据库管理:MS SQL Server数据库Web管理可以应用于企业级数据库的管理,例如管理企业级的数据库集群、管理企业级的数据库安全性等。 2. 数据中心管理:MS SQL Server数据库Web管理可以应用于数据中心的...