Download presentation
Presentation is loading. Please wait.
1
第十三章 SQL Server的安全管理
2
本章主题 了解用户、角色和登录名的区别 如何通过视图来限制用户对敏感数据的访问 如何用角色来明确访问的级别
3
SQL Server的安全管理 安全性问题对于绝大多数的数据库应用程序来说都是至关重要的。设计每一个数据库应用程序的元素时,都要有安全意识。设置的安全因素包括身份验证模式、登录、用户、角色、授权、废除和拒绝Transact-SQL语句和对象上的许可以及资料加密。 合理有效的数据库安全机制既可以保证被授权用户能够方便地访问数据库中的数据,又能够防止非法用户的入侵。SQL Server 2005提供了设计完善、操作简单的安全管理机制。Microsoft SQL Server 2005 Analysis Services (SSAS,SQL Server分析服务器)依赖 Microsoft Windows 来对用户进行身份验证。默认情况下,只有经过身份验证的用户(在 Analysis Services 内具有权限)才能建立与Analysis Services的连接。当用户连接到Analysis Services之后,则用户在 Analysis Services内具有的权限由直接分配或通过 Windows 角色中成员身份分配给该用户所属 Analysis Services 角色的权限来确定。本章将介绍如何对SQL Server实例和数据库的访问进行授权、如何在数据库级和服务器级管理角色。
4
第一节 SQL Server的安全概述 要弄清楚SQL Server是如何保证数据库安全,则需要了解SQL Server的安全机制。SQL Server 2005的权限是分层进行管理的,在每一层都有相应的安全性机制,SQL Server通过管理这种分层的安全性机制,保证数据库的安全使用。SQL Server 2005的安全性管理可分为三个等级:即操作系统级、SQL Server级和数据库级。 服务器级的安全性 数据库级的安全性 对象的所有权
5
(一) 服务器级的安全性 SQL Server的服务器级的安全性建立在控制服务器登陆帐号和密码的基础上。用户在登录时提供的登录帐号和密码,决定了用户能否获得SQL Server的访问权,以及在登录以后,用户在访问SQL Server进程时可以拥有的权利。 SOL Server采用了标准SQL Server登录和集成Windows NT登录两种方式。无论是使用那种登录方式,用户在登录时提供的登录帐号和口令,决定了用户能否获得SQL Server的访问权,以及在获得访问权以后,用户在访问SQL Server进程时可以拥有的权限。管理和设计合理的登录方式是SQL Server管理员DBA(数据库管理员)的重要任务,是SQL Server安全体系中,DBA可以发挥主动性的第一道防线。 SQL Server首先使用以下三种方法之一来识别用户: Windows用户登录 Windows用户组的成员资格 SQL Server专用登录
6
(二) 数据库级的安全性 在用户通过SQL Server服务器的安全性检验以后,将直接面对不同的数据库入口,这是用户接受的又一次安全性检验。在建立用户的登录帐号信息时,SQL Server会提示用户选择默认的数据库,以后用户每次连接上服务器后,都会自动转到默认的数据库上。对任何用户来说,master数据库的门总是打开的,如果在设置登录帐号时没有指定默认的数据库,则用 户的权限将局限在master数据库以内。 用户登录了数据库后,仍然不能访问数据,必须为其授予访问数据库对象(表、存储过程、视图和函数等)的权限,才能够访问数据。权限的分配通过角色来定义,用户定义的角色是定制的角色,其作用就像一个用户组。可以为角色授予访问数据库对象的权限,并将用户加入数据库的用户定义角色。 服务器角色成员在每个数据库内创建这些数据库角色,向这些数据库角色授予管理或用户权限,然后将 Windows 用户和组添加到这些数据库角色中。
7
(三) 对象的所有权 权限用于控制用户对数据库对象的访问,以及指定用户对数据库可以执行的操作。用户可以设置服务器和数据库的权限,服务器权限允许数据库管理员执行管理任务,数据库权限用于控制对数据库对象的访问和语句执行。 1.服务器权限 服务器权限允许数据库管理员执行管理任务。这些权限定义在固定服务器角色(fixed Server roles)中。固定服务器角色的权限可以分配给其他角色,但固定服务器角色本身是不能修改的。一般只把服务器权限授给DBA,他不需要修改或者授权给别的用户登录。 2.数据库对象权限 数据库对象权限指对已存在的数据库对象的操作权限,包括对数据库对象的SELECT、INSERT、UPDATE 、DELETE和EXECUTE权限。 数据库对象权限是授予用户以允许他们访问数据库中对象的一类权限,对象权限对于使用SQL语句访问表或者视图是必须的。 3.数据库权限 对象权限使用户能够访问存在于数据库中的对象,除了数据库对象权限外,还可以给用户分配数据库权限。SQL Server 2005对数据库权限进行了扩充,增加了许多新的权限,这些数据库权限除了授权用户可以创建数据库对象和进行数据库备份外,还增加了一些更改数据库对象的权限。
8
第二节 管理角色 角色用来简化将很多权限分配给很多用户这一复杂任务的管理。角色允许用户分组接受同样的数据库权限,而不用单独给每一个用户分配这些权限。用户可以使用系统自带的角色,也可以创建一个代表一组用户使用的权限角色,然后把这个角色分配给这个工作组的用户。一般而言,角色是为特定的工作组或者任务分类而设置的,新 用户可以根据自己所执行的任务成为一个或多个角色的成员。当然用户可以不属于是 任何角色,SQL Server允许为用户分配个人权限。 角色是一个强大的工具,它可以将用户集中到一个单元中,然后对该单元应用权限。对一个角色授予、拒绝或废除权限适用于该角色中的任何成员。可以建立一个角色来代表单位中一类工作人员所执行的工作,然后给这个角色授予适当的权限。 固定数据库角色 自定义角色的管理 固定服务器角色
9
(一) 固定服务器角色 服务器角色只有固定服务器角色,用于对数据库服务器的操作。对数据库服务器操作的权限不能直接赋给其他登录帐户,只能使某些登录帐户成为固定服务器角色的成员,才能使他们具有这些权限。固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。服务器角色是负责管理与维护SQL Server的组,一般指定需要管理服务器的登录帐号属于服务器角色。SQL Server在安装过程中定义几个固定的服务器角色,其具体权限如表13-1所示。 固定服务器角色 角色全称 对应的服务器级权限 Sysadmin System Administrators 固定服务器角色的成员可以在服务器中执行任何活动。 Serveradmin Server Administrators 固定服务器角色的成员可以更改服务器范围的配置选项和关闭服务器。 Setupadmin Setup Administrators 固定服务器角色的成员可以添加和删除链接服务器,并且也可以执行某些系统存储过程。 Securityadmin Security Administrators 固定服务器角色的成员将管理登录名及其属性。它们可以 GRANT、DENY 和 REVOKE 服务器级权限。也可以 GRANT、DENY 和 REVOKE 数据库级权限。 Processadmin Process Administrators 固定服务器角色的成员可以终止 SQL Server 实例中运行的进程。 dbcreator Database Creators 固定服务器角色的成员可以创建、更改、删除和还原任何数据库。 diskadmin Disk Administrators 固定服务器角色用于管理磁盘文件。 bulkadmin Bulk Insert Administrators 固定服务器角色的成员可以运行BULK INSERT 语句 表13-1固定服务器角色成员表
10
(二) 固定数据库角色 固定数据库角色用于对单个数据库进行操作,每个数据库都有一系列固定数据库角色,尽管在不同的数据库内他们是同名的,但各自的作用范围都仅限于本数据库。固定数据库角色(Database Roles)是数据库级的主体,可以使用固定数据库角色来为一组数据库用户指定数据库权限。在SQL Server中,固定数据库角色可分为两种:标准(默认)角色和应用程序角色。SQL Server 2005为数据库创建了一套标准(默认)的数据库角色。表13-2列出了这些标准(默认)的角色。标准(默认)角色是由数据库成员所组成的组,成员可以是用户或者其他的数据库角色。应用程序角色用来控制应用程序存取数据库,它本身并不包括任何成员。 固定数据库角色 对应的数据库级权限 db_accessadmin 可以管理对数据库的访问, 可以添加或删除用户ID db_backupoperator 可以备份数据库,可以发出DBCC、CHECKPOINT和BACKUP语句 db_datareader 可以读所有用户表中的所有数据 db_datawriter 可以在所有用户表中添加、删除和更新数据 db_ddladmin 可以执行任何DDL(数据定义语言)命令,可以发出ALL DDL,但不能发出GRANT、REVOKE或DENY语句 db_denydatareader 不能读所有用户表中的所有数据 db_denydatawriter 不能在所有用户表中添加、删除和更新数据 db_owner 可以执行所有的配置和维护行为, 在数据库中有全部许可 Db_securityadmin 可以修改数据库角色成员并管理权限,可以管理全部许可、对象所有权、角色和角色成员资格 Pubic 一个特别的数据角色。所有的数据库用户都属于public角色。不 能将用户从public角色中移除 表13-2标准(默认)的数据库角色
11
(三) 自定义角色的管理 角色是一个强大的工具,它可以将用户集中到一个单元中,然后对该单元应用权限。对一个角色授予、拒绝或废除的权限适用于该角色中的任何成员。可以建立一个角色来代表单位中—类工作人员所执行的工作,然后给这个角色授予适当的权限。 创建用户定义的数据库角色就是创建一组用户,这些用户具有相同的一组权限。如果一组用户需要执行在SQL Server中指定的一组操作并且不存在对应Windows NT/Windows 2000/Windwos 2003组,或者没有管理Windows NT/Windows 2000/Windwos 2003用户帐户的权限,就可以在数据库中建立一个用户自定义的数据库角色。 用户自定义的数据库角色有两种类型,即标准角色和应用程序角色。 标准角色通过对用户权限等级的认定将用户划分为不同的用户组,使用户总是相对于一个或多个角色,从而实现管理的安全性。所有固定的数据库角色或SQL Server管理者自定义的某一角色都是 标准角色。 应用程序角色是一种比较特殊的角色。当打算让某些用户只能通过特定的应用程序间接地存取数据库中的数据,而不是直接地存取数据库数据时,就应该考虑使用应用程序角色。当某一用户使用了应用程序角色时,他便放弃了己被赋予的所有数据库专有权限,他所拥有的只是应用程序角色被设置的角色。通过应用程序角色,能够以可控的方式限定用户的语句或者对象权限。编写数据库应用程序时,可以定义应用程序角色,让应用程序的操作者能用该应用程序来存取SQL Server的数据。也就是说,应用程序的操作者本身并不需要在 SQL Server上有登录帐号以及用户帐号,仍然可以存取数据库,这样可以避免操作者自行登录SQL Server。
12
第三节 管理服务器的安全性 使用Management Studio管理登录帐户 使用T-SQL语句管理登录帐户 sa帐户 服务器角色
13
(一)使用Management Studio管理登录帐户
1.配置身份验证模式 可以通过以下方法在SQL Server Management Studio中配置身份验证模式。 (1)从【开始】菜单中选择【所有程序】|【Microsoft SQL Server 2005】|【SQL Server Management Studio】。 (2)在【连接到服务器】对话框中,单击【连接】按钮。 (3)在【对象资源管理器】中,右键单击SQL Server实例名(如NET-DB)并在弹出菜单中选择【属性】。 (4)在【选择页】面板中,选择【安全性】图标。 (5)在【服务器身份验证】区域,选择自己想要的身份验证模式。如图13.1所示。 2.Windows验证模式 在该验证模式下,SQL Server检测当前使用的Windows用户帐号,并在Syslogins表中查找该帐号,以确定该帐号是否有权登录。由于已经通过了Windows的认证,用户不必提供密码或者登录名让SQL Server验证。
14
使用Management Studio管理登录帐户
图13.2 Windows验证模式登录图 图13.1 在SQL Server Management Studio中设置身份验证模式
15
使用Management Studio管理登录帐户
Windows验证模式下主要有以下优点: (1)数据库管理员的工作可以集中在管理数据库方面,而不是管理用户帐户。对用户帐户的管理可以交给Windows NT/2000/2003去完成。 (2)WindowNT/2000/2003有着更强的用户帐户管理工具。可以设置帐户锁定、密码期限等。如果不是通过定制来扩展SQL Server,SQL Server是不具备这些功能的。 (3)Windows NT/2000/2003的组策略支持多个用户同时被授权访问SQL Server。 3.混合身份验证模式 在这种身份验证模式下,用户既可以使用Windows身份验证模式又可以使用SQL Server身份验证模式来连接SQL Server。在后一种情况下,SQL Server依据现有的SQL Server登录名来验证用户的身份。使用SQL Server身份验证需要用户在连接字符串中提供连接SQL Server的用户名和密码。使用哪种模式取决于在最初通信时使用的网络库。如果一个用户使用的是TCP/IP的Sockets进行登录验证,则将使用SQL Server验证模式;如果用户使用命名管道,则登录时将使用Windows验证模式。
16
使用Management Studio管理登录帐户
SQL Server验证模式下,处理登录的过程为:用户在输入登录名和密码后,SQL Server在系统注册表中检测输入的登录名和密码。如果输入的登录名存在,而且密码也正确,就可以登录到SQL Server上。混合验证登录参看图13.3。 混合验证模式具有以下优点: (1)创建了Windows NT/2000/2003之上的另外一个安全层次。 (2)支持更大范围的用户,如非Windows NT客户、Novell网用户等。 (3)一个应用程序可以使用单个的SQL Server登录帐号和口令。 一般情况下,Windows身份验证模式是推荐的身份验证模式。在Windows身份验证模式中,连接链路中没有密码信息。还可以在集中的企业存储方案(例如Active Directory)中管理用户帐户信息,利用操作系统已有的所有安全特性。 图13.3混合验证模式登录图
17
(二)使用T-SQL语句管理登录帐户 使用Transact-SQL创建登录的语法结构如下:
CREATE LOGIN login_name { WITH <option_listl> FROM <sources>} <Sources> : : = WINDOWS[WITH<Windows_options>[ ] ] | CERTIFICATE certname | ASYMMETRIC KEY asym_key_name <option_listl>::= PASSWORD = ’password’ [HASHED] [MUST_CHANGE] [, <option_list2>[, …] ] <option_list2> : : = SID=sid | DEFAULT_DATABASE=database | DEFAULT LANGUAGE=1anguage | CHECK EXPIRATION = {ON | OFF} | CHECK_POLICY= {ON | OFF } | CREDENTIAL = credential-name ] <Windows_options> : : = DEFAULT_DATABASE= database | DEFAULT_LANGUAGE=language
18
使用T-SQL语句管理登录帐户 参数说明如下。 login_name:要创建的登录的名称。
WINDOWS:说明登录将被映射到Windows登录。 CERTIFICATE certname:指定创建的登录所映射的证书,此证书必须在master数据库中存在。 ASYMMETRIC KEY asym_key_name:制定登录所映射的非对称密钥,此密钥必 须在master数据库中存在。 PASSWORD= ’Password’:要创建的登录的密码,只使用于SQL Server登录。 HASHED:只使用于SQL Server登录。用于确定用户输入的密码将被散列存储。如果没有此选项,密码将首先被散列计算,然后存储在数据库中。 MUST_CHANGE:创建新登录后,第一次登录必须更改密码,只使用于SQL Server 登录。 SID=sid:指定新创建登录的GUID,指适用于SQL Server登录,如果没有定义,将随机分配一个GUID给新创建的登录。 DEFAULT DATABASE=database:新创建登录可以访问的默认数据库,如果没有定义,默认为master数据库。 DEFAULT_LANGUAGE=language:登录使用的默认语言,如果没有指定就为当前服务器的默认语言,以后更改服务器的默认语言并不会影响已创建登录的默认语言。 CHECK EXPIRATION={ON | OFF}:是否使用终止期限策略,只使用于SQL Server登录。 CHECK_POLICY={ON | OFF}:是否对新建登录使用Windows的口令策略,只 使用于SQL Server登录。 CREDENTIAL=credential name:新创建的SQL Server登录要映射的信任的名称。此信任必须已经存在于数据库中。
19
(三) sa帐户 sa登录是默认的登录,对SQL Server有完全的管理权限。如果启用SQL Server身份验证模式的安装,在安装过程中将强制为该帐户设置密码,因为sa是功能十分强大的登录,它存在于所有的SQL Server安装中。当用sa登录到SQL Server时,将能够完全控制SQL Server的任何一个特性。无论安装采用何种身份验证模式,SQL Server中都将加入这一ID,所以应该尽量避免名为sa的登录ID。 如果在【身份验证模式】界面选择了混合模式身份验证,则必须为sa帐户设置强密码。在这一点上,SQL Server 2005有了很大的改进,它强制要求为帐户设置密码,尽管设置的密码可能是极易被猜出的。例如,不要使用类似password或adminpwd的密码。不仅要始终保证密码安全,而且要在安全的地方记下密码。否则,如果忘记了sa的密码,而sa是当前存在的唯一的管理ID,那么只有重装SQL Server。妥当的密码应该是混合了数字和字母的,但不要总包含可以转化成数字的字母或者可以转化成字母的数字。例如,P455W0RD是很容易由PASSWORD来猜出的。 有时需要使用混合模式身份验证。例如,由于很多应用程序可能运行在一台Web服务器上,因此因特网提供商(ISP)使用混合模式验证身份。如果ISP是转售商,谁也不会希望同样使用该计算机的其他用户能看到自己的数据。可是已经决定了不以sa身份登录,那么该怎么做呢?可以这样,创建一个具有用户需要的访问权力的登录ID,也就是说,该ID具有刚好能够看到数据并用所需要的数据进行工作的能力,不多也不少。ISP可能要求提供用户ID和密码,以便在其SQL Server实例上创建帐户。
20
(四) 服务器角色 通过给用户分配固定服务器角色,可以使用户具有执行管理任务的角色权限。固定服务器角色的维护比单个权限维护更容易些,但是固定服务器角色不能修改。 在Microsoft SQL Server Management studio中,可以按以下步骤为用户分配固定服务器角色,从而使该用户获取相应的权限。 (1)在 【对象资源管理器】中,展开服务器下的【安全性】|【服务器角色】节点,可以看到固定服务器角色,如图13.4所示,在要添加用户的角色上单击鼠标右键,弹出快捷菜单,从中选择【属性(R)】命令。 图13.4为用户分配固定服务器角色 (2)出现【服务器角色属性】对话框,在该对话框中,单击【添加(D)…】按钮。 (3)出现【选择登录名】对话框,如图13.5所示,单击【浏览(B)…】按钮。
21
服务器角色 (4)出现【查找对象】对话框,在该对话框中,选中目标用户前的复选框,如图13.6所示,最后单击【确定】按钮。
(5)回到图13.5的【选择登录名】对话框,选中的目标用户出现在【输入要选择的对象名称】框中,单击【确定】按钮。 (6)返回到第(2)步的【服务器角色属性】对话框,确认添加的用户无误后,单击【确定】按钮,完成为用户分配角色的操作。 图13.5 【选择登录名】对话框 图13.6 【查找对象】对话框
22
使用Management Studio管理数据库用户
第四节 管理数据库用户 使用T-SQL语句管理数据库用户 dbo用户和guest用户 使用Management Studio管理数据库用户 自定义数据库角色
23
(一)使用Management Studio管理数据库用户
1.创建数据库的用户 (1)进入SQL Server Management Studio后,在 【对象资源管理器】中,展开SQL Server组及其服务器。在【数据库】文件夹中,展开某一数据库(如Student),点击【安全性】选项,然后在【用户】选项上单击鼠标右键,在弹出的快捷菜单中选择【新建用户】命令,打开新建用户对话框。如图13.7所示。 (2)在【用户名】处填“StudentAmd”。单击【登录名】右端 ,弹出【选择登录名】对话框,如图13.5所示,点击【浏览】按钮选择查找登录名,选择已有的系统用户名后确定返回。这时【用户名】文本框显示为“StudentAmd”,【登录名】文本框显示为已选的用户名。 (3)设置完毕后,单击【确定】按钮,即可在Student数据库中创建一个新的用户帐号。 图13.7 【数据库用户-新建】对话框
24
使用Management Studio管理数据库用户
2.修改数据库的用户 在数据库中建立一个数据库用户帐号时,要为该帐号设置某种权限,可以通过为它指定适当的数据库角色来实现。修改所设置的权限时,只需要修改该帐号所属的数据库角色就行了。修改的步骤是: (1)进入SQL Server Management Studio后,在 【对象资源管理器】中展开SQL Server组及其服务器。在【数据库】文件夹中,展开要修改用户属性的数据库,如Student的文件夹,点击【安全性】选项。 (2) 单击【用户】节点,然后在详细信息窗格中右击要修改的用户帐号并选择【属性】命令。 (3) 当出现【数据库用户】对话框时,重新选择用户帐号所属的数据库角色。单击【确定】按钮。 3.删除数据库的用户 可以根据需要删除数据库中的某个用户,删除数据库用户步骤是: (1)进入 SQL Server Management Studio后,在 【对象资源管理器】中展开SQL Server组及其服务器。在【数据库】文件夹中,展开要删除的用户帐号所属的数据库,如Student,点击【安全性】选项。 (2)单击【用户】节点,然后在详细信息窗格中右击要删除的用户帐号并选择【删除】命令或选中该用户直接按<Delete>键。 (3)在弹出的对话框中,单击【是】按钮,确认用户帐户删除操作。
25
(二) 使用T-SQL语句管理数据库用户 1.使用Transact-SQL创建数据库用户 创建数据库用户的语法如下:
CREATE USER user_name [ {FOR | FROM} { LOGIN login_name | CERTIFICATE cert_name | ASYMMETRIC KEY asym_key_name } | WITHOUT LOGIN ] [ WITH DEFAULT_SCHEMA = schema_name ] 参数说明如下。 user_name:新创建的用户名。 LOGIN login_name:新创建的用户名所属的登录名。 WITH DEFAULT_SCHEMA = schema_name:制定新建用户名的默认架构(schema)名称。 关于用Transact-SQL创建登录和用户的具体例子,见本章的上机指导。
26
使用T-SQL语句管理数据库用户 2.使用Transact-SQL删除数据库用户 删除数据库用户的语法如下:
sp_revokedbaccess { = ] ' name '} 参数说明:name 为当前数据库中要删除的用户名。 例13-1:下面的示例从Student数据库中删除用户studentAdm。 语句如下: USE Student EXEC sp_revokedbaccess ‘studentAdm’ 图13.8 执行结果
27
(三) dbo用户和guest用户 在安装SQL Server后,默认数据库中包含两个用户:dbo和guest。任何一个登录帐号都可以通过guest帐号来存取相应的数据库。但是当建立一个新的数据库时,默认只有dbo帐号而没有guest帐号。 在创建一个数据库时,SQL Server 2005自动将创建该数据库的登录帐户设置为该数据库的一个用户,并起名为dbo。dbo是数据库的拥有者,不能从数据库中删除,dbo对本数据库拥有所有操作权限,并可以将这些权限全部或部分授予其他数据库用户。另外,属于固定服务器角色sysadmin的成员也映射为所有数据库的dbo。 在每个数据库中都可以建立一个guest用户帐户,该帐户代表对一个数据库拥有最低权限的访问者。当使用某个登录帐户连接到SQL Server时,如果在一个数据库中没有用户帐户,则允许通过guest帐户来使用该数据库。 当满足下列条件时,登录采用guest用户的标识: (1)拥有访问SQL Server实例的权限,但没有通过自己的用户帐户访问数据库的权限。 (2)数据库中含有guest用户帐户。 与其他用户帐户一样也可以将权限应用到guest用户。在系统数据库master和tempdb中,guest用户必须始终存在。除了这两个系统数据库以外,可以在所有数据库中添加或删除guest用户。但在默认情况下,新建的数据库中并没有guest用户帐户。 例13-2:将guest用户帐户添加到名为Student的数据库中。 USE Student G0 EXEC sp_grantdbaccess guest
28
(四) 自定义数据库角色 用户也可以使用图形界面工具和Transact-SQL命令创建新的数据库角色,使这一角色拥有某个或某些权限。无论使用哪种方法,用户都需要完成下列任务: 创建新的数据库角色。 分配权限给创建的角色。 将这个角色授予某个用户。 在Microsoft Server Management Studio创建新的数据库角色操作的具体步骤如下。 (1)在SQL Server Management Studio中,选中【对象资源管理器】,展开服务器节点。在【数据库】文件夹中,展开某一数据库(如Student)的文件夹,选择【安全性】项。 (2)然后在【角色】选项上单击鼠标右键,在弹出的快捷菜单中选择【新建数据库角色】菜单命令,则出现【数据库角色-新建】对话框。如图13.9所示。 图13.9 【数据库角色-新建】对话框
29
自定义数据库角色 (3)【常规】页面中,在【角色名称】文本框中输入“TableMange”,在【所有者】文本框中输入“dbo”,在此对话框中也可以单击【添加】按钮为新创建的角色添加用户,如图13.10所示。 图13.10 【数据库角色-新建】对话框
30
自定义数据库角色 (4)选择【选择页】中的【安全对象】项,进入权限设置页面(即【安全对象】页面),如图13.11所示。
(5)在【安全对象】页面上,单击【添加(D)…】按钮,选择【特定对象】单选项,然后单击【确定】按钮。 (6)单击【对象类型】按钮,选择【表】,然后单击【确定】按钮。 (7)单击【浏览】按钮,选择dbo.Classes,dbo.Courses等表,然后单击【确定】按钮。 (8)在“dbo.Classes的显示权限”列表中,根据授权规则选择【选择】旁边的【授予】或【拒绝】复选框,然后单击【确定】按钮。 图13.11 【数据库角色-新建】对话框(【安全对象】页面)
31
使用Management Studio管理权限
第五节 管理权限 使用Management Studio管理权限 数据库权限 数据库对象权限 服务器权限 使用T-SQL语句管理权限
32
(一)使用Management Studio管理权限
1.服务器权限 服务器权限允许数据库管理员执行管理任务。这些权限定义在固定服务器角色中。这些固定服务器角色可以分配给登录用户,但这些角色是不能修改的。一般只把服务器权限授给DBA(数据库管理员),他不需要修改或者授权给别的用户登录。服务器的相关权限和配置参见前述内容。 2.数据库对象权限 在Microsoft SQL Server Management 2005中给用户添加对象权限的具体步骤如下。 (1)依次单击【对象资源管理器】窗口中树型节点前的“+”号,直到展开目标数据库(如Student)的【用户】节点为止,如图13.12所示。在【用户】节点下面的目标用户上单击鼠标右键,弹出快捷菜单,从中选择【属性(R)】命令。 图 利用【对象资源管理器】为用户添加对象权限
33
使用Management Studio管理权限
(3)出现【添加对象】对话框,如图13.13所示,单击要添加的对象类别前的单选按钮,选中要添加权限的对象类别,然后单击【确定】按钮。 图13.13 【添加对象】对话框
34
使用Management Studio管理权限
(4)出现【选择对象】对话框,如图13.14所示,从中单击【对象类型】按钮。 (5)出现【选择对象类型】对话框,依次选择需要添加权限的对象类型前的复选框,选中其对象,如图13.15所示。最后单击【确定】按钮。 图13.14 【选择对象】对话框 图13.15 【选择对象类型】对话框
35
使用Management Studio管理权限
(6)回到【选择对象】对话框,此时在该对话框中出现了刚才选择的对象类型,单击该对话框中的【浏览(B)…】按钮。出现【查找对象】对话框,依次选择要添加权限的对象前的复选框,选中其对象,如图13.16所示。最后单击【确定】按钮。 (7)返回到【选择对象】对话框,其中已包含了选择的对象,如图13.17所示。确定无误后,单击该对话框中的【确定】按钮,完成对象选择操作。 图13.16 【查找对象】对话框 图13.17 【选择对象】对话框
36
使用Management Studio管理权限
(8)回到【数据库用户】对话框窗口,此窗口中己包含用户添加的对象,如图13.18,依次选择每一个对象,并在下面的该对象的【显式权限】窗口中根据需要选择【授予】/【拒绝】列的复选框,添加或禁止对该对象的相应访问权限。设置完每一个对象的访问权限后,单击【确定】按钮,完成给用户添加数据库对象权限的所有操作。 图13.18 【数据库用户】对话框
37
使用Management Studio管理权限
3. 数据库权限 在Microsoft SQL Server 2005中给用户添加数据库权限的具体的步骤如下: (1)在【对象资源管理器】窗口中,单击服务器前的“+”号,展开服务器节点。单击【数据库】前的“+”号,展开数据库节点。在要给用户添加数据库权限的目标数据库(如Student)上单击鼠标右键,弹出快捷菜单,如图13.19所示,从中选择【属性(R)】命令。 (2)出现【数据库属性】对话框窗口,选择【选择页】窗口中的【权限】项,进入如图13.20所示的权限设置页面,在该页面的【用户或角色(U)】中选择要添加数据库权限的用户,如果该用户不在列表中,请单击【添加(A)…】按钮,添加该用户到当前数据库中。然后在该用户的【…显式权限(P)】中添加相应的数据库权限。最后单击【确定】按钮,完成操作。 图 利用【对象资源管理器】为用户添加数据库权限 图13.20 【数据库属性】对话框的【权限】页面
38
(二) 使用T-SQL语句管理权限 Transact-SQL语句使用GRANT、DENY、REVOKE三种命令管理权限。
用上述命令管理对象权限的语法如下: GRANT/DENY/REVOKE all/权限名 ON 表名/其他对象 to 用户/角色 例13-3:将数据库Student中名为Courses的表的SELECT权限赋予dbAdmin角色。 语句如下: USE Student GRANT SELECT ON Courses to dbAdmin
39
使用T-SQL语句管理权限 数据库用户StudentAdm属于dbAdmin角色,因此也拥有了对Courses表的SELECT权限。如果想暂时禁止StudentAdm对Courses表的SELECT权限,可以拒绝从dbAdmin角色继承到的SELECT权限。 例13-4:拒绝StudentAdm对Courses表的SELECT权限。 语句如下: USE Student DENY SELECT ON Courses to StudentAdm 如果想对列的权限进行管理,也可以使用Transact-SQL语句。 例13-5:授权用户StudentAdm对Courses表Course_name列和Course_period列进行修改。 GRANT UPDATE(Course_name, Course_period)ON Courses TO StudentAdm 用GRANT、DENY、REVOKE三种命令管理语句权限的语法如下: GRANT/DENY/REVOKE all/语句名TO 用户/角色 例13-6:授权用户StudentAdmin\StudentAdmin可以在Student数据库中创建表。 GRANT CREATE TABLE TO [StudentAdmin\StudentAdmin]
40
第六节实训:SQL Server的安全管理
1.实训任务 采用Transact-SQL创建登录和用户,用于对Student数据库对象进行操作。 2.实训指导 (1)创建登录 给服务器NET-DB创建登录StudentAdm,口令为test,并且初次登录时要求修改口令。 在SQLCMD工具中创建登录的具体步骤如下。 ① 依次选择【开始】|【所有程序】|【附件】|【命令提示符】命令,打开命令提示符窗口。 ② 使用命令sqlcmd -S NET-DB,打开SQL Server的命令行工具,并连接到数据库服务器。 ③ 输入以下指令,完成登录StudentAdm的创建: CREATE LOGIN StudentAdm WITH PASSWORD= ’test’ MUST_CHANGE, CHECK_EXPIRATION=ON; GO ④ 如果没有报错,说明创建成功,执行结果如图13.21所示。 图 执行结果
41
实训:SQL Server的安全管理 (2)创建新用户
给数据库Student创建用户StudentAdm,新建用户使用的登录为图13.21中创建的登录。 使用的Transact-SQL语句为: USE Student; GO CREATE USER StudentAdm_t FOR LOGIN StudentAdm; 执行结果如图13.22所示,没有报错则说明创建用户成功。 图13.22 执行结果
42
本章小结 本章讨论了如何保护对SQL Server实例、数据库和数据库内对象的访问。理解SQL Server系统中安全层次结构的每一个安全元素的作用是非常重要的,首当其冲的便是启用SQL Server接受网络连接的选项,没有它们,用户无法访问数据库系统。通过为其创建SQL Server登录名或者为Windows用户或组创建数据库登录名来实现。为了能够访问特定的数据库,需要在数据库上创建数据库用户。这些数据库用户一般都映射到SQL Server的特定数据库用户。一旦数据库存在数据库用户,就可以针对数据库范围内的操作指定特定的权限。 数据库系统的安全性是每个数据库管理员都必须认真考虑的问题。SQL Server 2005为维护数据库系统的安全性提供了完善的管理机制和简单而丰富的操作手段。在实际应用中,用户可以根据系统对安全性的不同需求采用合适的方式来完成数据库系统安全体系的设计。
43
习 题 理论题 1.填空题 (1)SQL Server 2005的权限是分层次管理的,权限层次可以分为3层,它们分别是 、 、 。
习 题 理论题 1.填空题 (1)SQL Server 2005的权限是分层次管理的,权限层次可以分为3层,它们分别是 、 、 。 (2)SQL Sever 2005登录验证有两种模式,它们分别是 和 。 2.选择题 (1)关于登录和用户,下列各项表述不正确的是:( )。 A.登录是在服务器级创建的,用户是在数据库级创建的 B.创建用户时必须存在该用户的登录 C.用户和登录必须同名 D.一个登录可以对应多个用户 (2)关于SQL Server 2005的数据库权限叙述不正确的是:( )。 A.SQL Server 2005的数据库权限可以分为服务器权限、数据库权限和对象权限 B.服务器权限能通过固定服务器角色进行分配,不能单独分配给用户 C.数据库管理员拥有最高权限 D.每个用户可以分配若干权限,并且用户可以把其权限分配给其他用户 (3)关于SQL Server 2005的数据库角色叙述正确的是:( )。 A.用户可以自定义固定服务器角色 B.数据库角色是系统自带的,用户一般不可以自定义 C.每个用户能拥有一个角色 D.角色用来简化将很多权限分配给很多用户这一复杂任务的管理
44
习 题 3.思考题 (1)简单叙述SQL Server登录验证的两种模式的区别。 (2)简述数据库权限管理中,角色有什么作用。
习 题 3.思考题 (1)简单叙述SQL Server登录验证的两种模式的区别。 (2)简述数据库权限管理中,角色有什么作用。 (3) SQL Server包括哪几种类型的权限?各自的功能是什么? 操作题 给数据库Student创建用户StudentUser,新建用户使用的登录为S_user。
45
本章结束 Thank You !
Similar presentations