1、新课:第7章 数据库的安全性讲述内容:7. 1 SQL Server 2005的验证模式7. 4 角色管理7. 5 许可管理7. 1 SQL Server 2005的验证模式 7.1.1 Windows 身份验证模式7.1.2 SQL Server 身体验证模式7.1.3 设置验证模式7.1.4 SQL Server 系统登录验证过程:P119 Windows 身份验证模式是指要登录到SQL Server系统的用户身份由Windows系统来进行验证。在Windows登录验证模式下,SQL Server回叫Windows以获得相应的登录信息,并在sysxlogins表中查找该帐户,以确定该帐户是
2、否有权登录。在这种方式下,用户不必提供登录名或密码让SQL server验证。 使用Windows验证有如下特点: Windows验证模式下由Windows管理用户帐户,数据库管理员的工作是管理数据库; Windows 有功能很强的工具去管理用户帐户,如安全验证和密码加密、审核、密码过期、最短密码长度以及在多次登录请求失败后锁定帐户; 可以在SQL Server增加用户组;7.1.2 SQL Server身份验证模式 设置验证模式的工作只能由系统管理员来完成。 使用SQL Server Management Studio时,设置或改变验证模式的步骤如下:1) 打开SQL Server Mana
3、gement Studio。2) 在“已注册的服务器”窗口中右击要设置验证模式的服务器,然后在系统弹出的快捷菜单上选择“属性”,系统将弹出如下图7-1所示的“编辑服务器注册属性”窗口。3) 服务器名称 :按格式选择要注册的服务器实例。 身份验证 :在连接到 SQL Server 实例时,可以使用两种身份验证模式。 注意:请尽可能使用 Windows 身份验证。4) 设置完成后,单击“测试”以确定设置是否正确。5) 单击“确认”,关闭对话窗口。身份验证 :7.2 登录管理7.2.1 系统管理员登录账户7.2.2 用T-SQL语句创建、查看、删除SQL Server 登录账户7.2.3 用SQL
4、Server Management Studio创建、查看、删除SQL Server 登录账户 7.2.1 系统管理员登录账户 SQL Server身份验证模式是指用户登录SQL Server系统时,其身份验证由Windows和 SQL Server共同进行。所以SQL Server身份验证模式也称混合验证模式。 在SQL Server身份验证模式下,使用Windows 用户帐户连接的用户可以使用信任连接。当用户使用指定的登录名称和密码进行非信任连接时,SQL Server检测输入的登录名和密码是否与系统sysxlogins表中记录的登录名和密码相匹配,自己进行身份验证。如果不存在该用户的登录
5、帐户,则身份验证失败,用户将会收到错误信息。用户只有提供正确的登录名和密码,才能通过SQL server验证。 混合验证模式有如下特点: 混合模式允许非Windows客户、Internet客户和混合的客户组连接到SQL Server中 增加了安全性方面的选择 SQL Server有两个默认的系统管理员登录帐户:sa 和 BUILTINAdministrators。 这两个登录帐户具有SQL Server系统和所有数据库的全部权限。sa是一个特殊的登录名,它代表混合验证机制下SQL Server的系统管理员,sa始终关联dbo用户。BUILTINAdministrators是Windows系统的
6、系统管理员组。 具体地说,系统管理员负责下面的工作: 创建登录名 配置服务器 创建、删除数据库 无须考虑所有权和权限,可以操作各种数据库对象 停止、启动服务器 停止在服务器上运行的无效过程 某些权限只能被系统管理员拥有并且不能被授予其他用户。这些功能是管理存储空间,管理用户进程及改变数据库选项。7.2.2用T-SQL语句创建、查看、删除SQL Server登录帐户1. 将已经存在的Windows登录(Windows组或用户)增加到SQL Server系统登录中 使用系统存储过程sp_graWindowslogin、sp_denylogin、sp_revokelogin可以分别允许、阻止、删除W
7、indows组或用户到SQL Server的连接。 sp_graWindowslogin的语法形式如下:sp_graWindowslogin login sp_denylogin的语法形式如下:sp_denylogin login sp_revokelogin的语法形式如下:sp_revokelogin login 注意:在要增加的帐户login前面要加上域名及“”,而且这三个存储过程不能放在同一个批中执行。 将Window Windows帐户增加到SQL Server系统的时候,应该考虑以下因素: 如果Windows 用户不是SQL Server组的成员,可以为其建立一个登录帐户 如果某个W
8、indows组中的每个成员都要连接到SQL Server上,可以为该组建立一个登录帐户 删除Windows 组或用户,不会删除SQL Server中对应的登录帐户2. 使用T-SQL语言创建、查看、删除SQL Server登录帐户 SQL Server登录帐户的创建 使用系统存储过程 sp_addlogin 可以创建一个登录帐户。sp_addlogin存储过程的语法形式如下:sp_addlogin login ,password ,default_database login:要被创建的登录帐户。它是唯一必须给定值的参数,而且必须是有效的SQL Server对象名。 password:新登录帐
9、户的密码。 default_database:新登录帐户访问的默认数据库。 SQL Server登录帐户的查看sp_helplogins【例7-1】创建一个登录帐户为ABC,密码为123、使用的默认数据库为JWGL。 EXEC sp_addlogin ABC , 123 , jwgl EXEC sp_addlogin a1 , 111 , jwgl EXEC sp_addlogin a2 , 222 , master 登录帐户的删除 删除登录帐户和删除用户相似,但删除登录帐户时需要在数据库中做较为复杂的检查,以确保不会在数据库中留下孤儿型的用户。一个孤儿型的用户是指一个用户没有任何登录名与其映
10、射。 删除一个登录帐户时,SQL Server 必须确认这个登录帐户没有关联的用户存在于数据库系统中。如果存在用户和被删除的登录名关联,SQL Server将返回错误提示信息,指出数据库中哪个用户与被删除的登录帐户相关联。此时,必须先用sp_revokedbaccess存储过程将每个数据库中与该登录帐户关联的用户对象清除,然后才能删除登录帐户。如果要删除的登录帐户是数据库所有者,则需要使用系统存储过程sp _ changedbowner将所有权转授给其他的登录帐户。 删除一个登录帐户使用系统存储过程 sp_droplogin。sp_droplogin存储过程的语法形式如下: sp_droplo
11、gin 要被删除的登录帐户。【例7-2】从SQL Server中将登录帐户ABC删除掉。 EXEC sp_droplogin ABC7.2.3 用SQL Server Management Studio创建、查看、删除SQL Server登录帐户 1. 使用SQL Server Management Studio将已经存在的Windows组增加到SQL Server中 使用Management Studio将已经存在的Windows组或用户增加到SQL Server中的操作步骤如下: 启动SQL ServerManagement Studio。展开服务器后,展开“安全性”文件夹。 点击“登录”
12、图标,右击要右边的窗格中授权的Windows组或用户,在系统弹出的快捷菜单上点击“属性”。系统出现如图7-3的“SQL Server 登录属性”窗口。 点击“数据库访问”选项卡,选择该Windows用户组或用户可以访问的数据库,并可选择其在该数据库中允许担任的数据库角色。应该注意的是,在选择该登录可以访问的数据库的同时,Management Studio将创建与登录名完全相同的数据库用户。 点击“确定”,一个Windows组或用户就增加到SQL Server中登录帐户中去了。2. 用SQL Server Management Studio创建、删除SQLServer登录帐户 创建SQL Ser
13、ver登录帐户 用SQL Server Management Studio创建SQL Server登录帐户的具体步骤如下:1) 启动SQL Server SQL Server Management Studio。分别展开“服务器”、“安全性”、“登录名”。2)右击“登录名”,选择“新建登录名”项,进入如图7-4“登录名-新建”窗口。3) 输入登录名,选择一种身份验证模式,如选择Windows验证模式,然后指定该帐户默认登录的数据库和默认语言(这里要注意,系统新建登录时把系统库master设为默认库,建议改成实际使用的数据库);如选择SQL Server验证模式,则需要输入登录帐户名称、密码及确
14、认密码。点击“服务器角色”选项卡:可以查看或更改登录名在固定服务器角色中的成员身份;点击“用户映射”选项卡:以查看或修改 SQL 登录名到数据库用户的映射,并可选择其在该数据库中允许担任的数据库角色。4)单击“确定”按钮即可增加一个登录帐户。 查看及删除登录帐户一个新的登录帐户增加后,可以在SQL Server Management Studio中查看其详细信息。查看一个帐户的步骤如下:2)右击该“登录名”下的某一登录帐户,在系统弹出的菜单上点击 “属性”可进入“SQL Serve登录属性”窗口查看该登录帐户的信息;3)点击“删除”可以删除该登录帐户。7.3 用户管理7.3.1 数据库用户名和
15、登录名的关系7.3.2 用T-SQL语句创建、查看、删除数据库用户7.3.3 使用SQL Server Management Studio创建、查看、删除数据库用户7.3.4 改变数据库所有权 登录名、数据库用户名是SQLServer中两个容易混淆的概念。 登录名是访问SQL Server的通行证。每个登录名的定义存放在主人数据库的表sysxlogins中。登录名本身并不能让用户访问服务器中的数据库资源。 要访问特定的数据库,还必须有数据库用户名。新的登录创建以后,才能创建用户,用户在特定的数据库内创建,必须和一个登录名相关联。 用户的定义信息存放在与其相关的数据库的sysusers表中。这个
16、表包含了该数据库的所有用户对象以及和它们相对应的登录名的标识。用户名没有密码和它相关联。 大多数情况下,登录名和用户名使用相同的名称。 在SQL Server中,登录帐户和数据库用户是SQL Server进行权限管理的两种不同的对象。 一个登录帐户可以与服务器上的所有数据库进行关联,而数据库用户是一个登录帐户在某个数据库中的映射,也就是说一个登录帐户可以映射到不同的数据库,产生多个数据库用户,一个数据库用户只能映射到一个登录帐户。 允许数据库为每个用户对象分配不同的权限,这一特点为在组内分配权限提供了最大的自由度。 登录帐户成功创建后,怎样才能将登录帐户映射到数据库中的用户上呢? 如果使用Ma
17、nagement Studio创建登录帐户,可以省略这步操作。 但要注意,实际上它完成了两步不同的操作: 第一步是创建登录帐户, 第二步是将登录帐户映射为数据库中同名的用户。 为一个登录帐户授权,最常使用的方法是创建一个新的数据库用户,然后将其与一个登录帐户对应起来。1. 用T-SQL语句创建数据库用户 使用系统存储过程sp_graWindowsdbaccess可以创建数据库用户。其具体的语法形式如下: sp_graWindowsdbaccess login ,name_in_db 这个存储过程有两个参数,但只有第一个参数是必须的。 Login:数据库用户所对应的登录名。 name_in_db
18、:为登录帐户登录在当前数据库中创建的用户名。 只有 sysadmin固定服务器角色、db_accessadmin 和 db_owner 固定数据库角色的成员才能执行sp_graWindowsdbaccess; 如果第二参数被省略,一个和登录名相同的用户名将被添加到数据库中,通常省略这个参数; 这个存储过程只对当前的数据库进行操作,所以在执行存储过程前应该首先确认当前使用的数据库是要增加用户的数据库; 要创建用户名的登录帐户必须在执行存储过程前已经存在。【例7-3】在混合验证模式下,为数据库JWGL登录帐户”ABC”和“a1”和a2创建一个同名的数据库用户。use jwglgoexec sp_g
19、raWindowsbaccess ABCexec sp_graWindowsdbaccess a1exec sp_graWindowsdbaccess a22. 用T-SQL语句查看数据库用户 在查询分析器中输入sp_helpuser,单击“执行”,可显示某个数据库中的有效用户。3. 用T-SQL语句删除数据库用户 当一个登录帐户不再需要访问一个数据库或对应的的登录帐户被删除时,需要将数据库内的用户名删除。 用办理-SQL的sp_revokedbaccess存储过程可以删除数据库用户。这个存储过程从数据库中将用户删除,即从sysusers表中删除用户名。但在用户定义事务内部不能执行存储过程sp
20、_revokedbaccess。sp_revokedbaccess存储过程具体语法如下: sp_revokedbaccess name_in_db = name 在以上语法形式中: name:要删除的用户名。名字可以是SQL Server的用户名或存在于当前数据库中的窗口Windows的用户名或组名。 注意,sp_revokedbaccess 存储过程不能删除: 公众角色、dbo、数据库中的固定角色 主人和 tempdb 数据库中的 客人用户帐户 窗口Windows组中的 窗口Windows用户 【例7-4】使用命令sp_revokedbaccess将数据库中的“ABC”删除掉。 sp_rev
21、okedbaccess ABC7.3.3 使用Management Studio创建、查看、删除数据库用户1. 使用SQL Server Management Studio创建数据库用户与查看 在SQL Server的SQL Server Management Studio中用以下步骤完成同样的任务:1)启动SQL ServerSQL Server Management Studio。2)分别展开“服务器”、“数据库”、“JWGL”、“用户”,右边“摘要”窗口可以看到该数据库的现有用户。 3)右击“用户”文件夹,选择“新建数据库用户”,弹出“数据库用户-新建”的窗口。 4) 输入要创建的数据库
22、用户的名字,然后“登录名”对应的文本框中输入相对应的登录名,或点击“”在系统中选择相应的登录名。 5) 单击“确定”按钮,将新创建的数据库用户添加到数据库中。2. 使用SQL Server Management Studio删除数据库用户 在SQL Server Management Studio中用以下的步骤删除用户名: 启动SQL Server Management Studio。 展开要操作的服务器及要删除用户所在的数据库。 单击“用户”,右边显示该数据库所有的库用户。 右击要删除的用户,在系统弹出的快捷菜单上选择“删除”来删除这个用户。 在数据库中有一个用户是数据库所有者,该用户拥有数
23、据库中所有的对象。 一个数据库只能有一个数据库所有者。数据库所有者不能被删除。 通常,登录名sa映射到库中的用户是dbo。要改变数据库所有权只能使用系统存储过程sp_changedbowner,这个存储过程是唯一改变数据库所有权的方法。 存储过程sp_changedbowner只有一个参数,即新的所有者的登录标识。在Management Studio中没有类似功能。尾 页课堂小结:掌握内容:作业:135页习题:1 2课后总结:审核:SQL Server2005任课教师:SQL(7-2) 7. 4 角色管理 掌握角色管理掌握许可管理 角色管理许可管理 许可管理管理用户的任务是要确保用户能够访问到
24、他们需要的数据但又不能获得超出他们权限范围的数据。7.4 角色管理 管理用户的任务是要确保用户能够访问到他们需要的数据但又不能获得超出他们权限范围的数据。SQL Server2000中,用户一般是放在组中工作的。也就是说,可以将在相同数据上具有相同权限的用户放入一个组中进行管理。SQL Server具有将用户分配到组中的能力,分配给组的权限适用于组中的每一个成员。使用角色对用户进行分组管理有利于简化对用户的授权工作。 在SQL Server2000中,组是通过角色来实现的,可以将角色理解为组。角色有两种:服务器角色和数据库角色。服务器角色是服务器级的一个对象,只能包含登录名。数据库角色是数据库
25、级的一个对象,数据库角色只能包含数据库用户名而不能是登录名。7.4.1 固定服务器角色7.4.2 数据库角色1. 固定服务器角色及功能 安装完SQL Server2000后,系统自动创建了以下8个固定的服务器角色,具体名称及功能描述如下表7-1。它在服务器级别上被定义,存在于数据库外面,它是不能被创建的。 表7-1 固定服务器角色及功能 角色 功能 sysadmin 能够执行任何任务securityadmin 负责系统的安全管理,能够管理和审核服务器登录名serveradmin 能够配置服务器的设置setupadmin 能够安装、复制 processadmin 能够管理SQL Server系统
26、的进程diskadmin 能够管理磁盘文件dbcreator 能够创建和修改数据库bulkadmin 能够执行大容量数据的插入数据操作 固定服务器角色存放在主人数据库的sysxlogins表中。执行存储过程sp_helpsrvrole,可查看服务器上的固定服务器角色,要查看某个固定服务器角色的权限可执行存储过程sp_srvrolepermission。如在查询分析器中执行语句:实行sp_srvrolepermission sysadmin,可查看固定服务器角色sysadmin的权限。2. 为登录帐户指定及收回服务器角色 使用sp_addsrvrolemember存储过程或Management
27、Studio可为一个登录帐户指定服务器角色。 使用系统存储过程为登录帐户指定及收回服务器角色、 指定服务器角色的系统存储过程是sp_addsrvrolemember,具体语法如下: sp_addsrvrolemember login,role是指登录名。 role:是指服务器角色名。 收回服务器角色的系统存储过程sp_dropsrvrolemember,参数含义同上。具体语法如下: sp_dropsrvrolemember login【例7-5】 将登录名ABC加到sysadmin角色中。 sp_addsrvrolemember ABC ,sysadmin 使用SQL Server Management Studio为登录帐户指定及收回服务器角色 使用SQL Server Manag
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1