Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > ADP及SQL SERVER

SqlServer2005权限安全控制

时 间:2012-08-06 13:08:55
作 者:风行   ID:16058  城市:江阴
摘 要:1.       SQL Server权限管理策略:对于一个数据库管理员来说,安全性就意味着必须保证那些具有特殊数据访问权限的用户能够登录到SQL Server,并且能够访问数据以及对数据库对象实施各种权限范围内的操作;同时,他还要防止所有的非授权用户的非法操作。

SQL Server提供了既有效又容易的安全管理模式,这种安全管理模式是建立在安全身份验证和访问许可两者机制上的。

2.       安全身份验证:安全身份验证用来确认登录SQL Server的用户的登录账号和密码的正确性,由此来验证该用户是否具有连接SQL Server的权限。任何用户在使用SQL Server数据库之前,必须经过系统的安全身份验证。

正 文:

SQL Server 2005提供了两种确认用户对数据库引擎服务的验证模式:

1Windows身份验证:SQL Server数据库系统通常运行在Windows服务器上,而Windows作为网络操作系统,本身就具备管理登录、验证用户合法性的能力,因此Windows验证模式正是利用了这一用户安全性和账号管理的机制,允许SQL Server可以使用Windows的用户名和口令。在这种模式下,用户只需要通过Windows的验证,就可以连接到SQL Server,而SQL Server本身也就不需要管理一套登录数据。

2SQL Server身份验证:SQL Server身份验证模式允许用户使用SQL Server安全性连接到SQL Server。在该认证模式下,用户在连接SQL Server时必须提供登录名和登录密码,这些登录信息存储在系统表syslogins中,与Windows的登录账号无关。SQL Server自身执行认证处理,如果输入的登录信息与系统表syslogins中的某条记录相匹配,则表明登录成功。

利用SQL Server管理平台可以进行认证模式的设置,步骤如下:

1)打开Server管理平台,右击要设置认证模式的服务器,从弹出的快捷菜单中选择属性选项,则出现SQL Server属性对话框。

2)在SQL Server属性对话框中选择安全性选项页。

3)在服务器身份验证选项栏中,可以选择要设置的认证模式,同时在登录审核中还可以选择跟踪记录用户登录时的哪种信息,例如登录成功或登录失败的信息等。

4)在服务器代理账户选项栏中设置当启动并运行SQL Server时,默认的登录者中哪一位用户。

3. 访问许可确认:通过了认证并不代表用户就能访问SQL Server中的数据,同时他还必须通过许可确认。用户只有在具有访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作,这种用户访问数据库权限的设置是通过用户账号来实现的。

4. SQL Server服务器登录管理:利用SQL Server管理平台可以创建、管理SQL Server登录账号。其具体执行步骤如下:

1)打开SQL Server管理平台,单击需要登录的服务器左边的“+”号,然后展开安全性文件夹。

2)右击登录名(login)图标,从弹出的快捷菜单中选择新建登录名选项,则出现SQL Server“登录名新建对话框。

3)在名称文本框中输入登录名,在身份验证选项栏中选择新建的用户账号是Windows 认证模式,或是SQL Server认证模式。

4)选择服务器角色页框。在服务器角色列表框中,列出了系统的固定服务器角色。在这些固定服务器角色的左端有相应的复选框,打勾的复选框表示该登录账号是相应的服务器角色成员。

5)选择用户映射页框。上面的列表框列出了映射到此登录名的用户,单击左边的复选框设定该登录账号可以访问的数据库以及该账号在各个数据库中对应的用户名。下面的列表框列出了相应的数据库角色成员身份清单,从中可以指定该账号所属的数据库角色。

6)选择安全对象页框。安全对象是 SQL Server数据库引擎授权系统控制对其进行访问的资源。点击添加…”按钮,可对不同类型的安全对象进行安全授予或拒绝。

7)设置完成后,单击确定按钮即可完成登录账号的创建。

5. 用户账号管理:在一个数据库中,用户账号惟一标识一个用户,用户对数据库的访问权限以及对数据库对象的所有关系都是通过用户账号来控制的。

利用SQL Server管理平台可以授予SQL Server登录访问数据库的许可权限。

利用SQL Server管理平台创建一个新数据库用户账号的过程如下:

l 打开SQL Server管理平台,展开要登录的服务器和数据库文件夹,然后展开要创建用户的数据库及安全文件夹,右击用户图标,从快捷菜单中选择新建用户选项,则出现数据库用户新建对话框。

l 在用户名框内输入数据库用户名称,在登录名选择框内选择已经创建的登录账号,然后在下面的数据库角色成员选择框中为该用户选择数据库角色,最后单击确定按钮即可完成数据库用户的创建。

同样,在SQL Server 管理平台中,也可以查看或者删除数据库用户,方法是:展开某一数据库,选中用户图标,则在右面的页框中显示当前的数据库的所有用户。要删除数据库用户,则在右面的页框中右击所要删除的数据库用户,从弹出的快捷菜单中选择删除选项,则会从当前的数据库中删除该数据库用户。

6. 许可(权限)管理:许可用来指定授权用户可以使用的数据库对象和这些授权用户可以对这些数据库对象执行的操作。用户在登录到SQL Server之后,其用户账号所归属的Windows组或角色所被赋予的许可(权限)决定了该用户能够对哪些数据库对象执行哪种操作以及能够访问、修改哪些数据。在每个数据库中用户的许可独立于用户账号和用户在数据库中的角色,每个数据库都有自己独立的许可系统。

SQL Server中包括三种类型的许可:即对象许可、语句许可和预定义许可。

对象许可表示对特定的数据库对象(即表、视图、字段和存储过程)的操作许可,它决定了能对表、视图等数据库对象执行哪些操作。如果用户想要对某一对象进行操作,其必须具有相应的操作的权限。表和视图许可用来控制用户在表和视图上执行SelectInsertUpdateDelete语句的能力。字段许可用来控制用户在单个字段上执行SelectUpdateREFERENCES操作的能力。存储过程许可用来控制用户执行EXECUTE语句的能力。

语句许可表示对数据库的操作许可,也就是说,创建数据库或者创建数据库中的其他内容所需要的许可类型称为语句许可。这些语句通常是一些具有管理性的操作,如创建数据库、表和存储过程等。这种语句虽然仍包含有操作的对象,但这些对象在执行该语句之前并不存在于数据库中。因此,语句许可针对的是某个SQL语句,而不是数据库中已经创建的特定的数据库对象。

预定义许可是指系统安装以后有些用户和角色不必授权就有的许可。其中的角色包括固定服务器角色和固定数据库角色,用户包括数据库对象所有者。只有固定角色或者数据库对象所有者的成员才可以执行某些操作。执行这些操作的许可就称为预定义许可。

许可的管理包括对许可的授权、否定和收回。在SQL Server中,可以使用SQL Server管理平台和Transaction_SQL 语句两种方式来管理许可。

l 使用SQL Server 管理平台管理许可:SQL Server 可通过两种途径实现对用户许可的设定即面向单一用户和面向数据库对象的许可设置。

使用SQL Server 管理平台管理许可:

1)面向单一用户的许可设置。其具体过程如下:

SQL Server管理平台中,展开服务器和数据库,单击用户图标,此时在右面的页框中将显示数据库的所有用户。在数据库用户清单中,右击要进行许可设置的用户,从弹出的快捷菜单中选择属性选项,则出现数据库用户属性对话框,选择安全对象页框。

在上页对话框中单击添加按钮,则弹出添加对象对话框。选择特定对象单选钮后,出现对话框。

点击确定后则出现对话框。在该对话框中可以进行对象许可的设置。点击对话框底部列权限按钮,出现对话框,在该对话框中可以选择用户对哪些列具有哪些权限。最后单击确定按钮即可完成许可的设置。

在上图所示的数据库用户常规选项页中,如果在数据库角色成员身份选项栏中选择一个数据库角色,实际上就完成了数据库用户语句许可的设置。因为对于这些数据库固定角色,SQL Server已经定义了其具有哪些语句许可。

2)面向数据库对象的许可设置。

SQL Server 管理平台中,展开服务器和数据库,然后选择需要设置的用户对象,即表、视图、存储过程等,在右面的页框中选择要进行许可设置的对象,右击该对象,从弹出的快捷菜单中选择属性选项,出现对象属性对话框,在该对话框中选择权限页框,单击添加按钮设置好相应的对象许可后单击确定按钮即可完成数据库对象的许可设置。

l 使用Transaction_SQL 语句管理许可:

Transaction-SQL 语句使用grantrevokedeny三种命令来管理权限,相关的语法和实例可参照数据控制语言部分。

7. 角色管理:角色定义了常规的 SQL Server 用户类别。每种角色将该类别的用户与其使用 SQL Server时执行的任务集以及成功完成这些任务所需的知识相关联。利用角色,SQL Server管理者可以将某些用户设置为某一角色,这样只要对角色进行权限设置便可以实现对所有用户权限的设置,大大减少了管理员的工作量。

SQL Server提供了用户通常管理工作的预定义服务器角色和数据库角色。用户还可以创建自己的数据库角色,以便表示某一类进行同样操作的用户。当用户需要执行不同的操作时,只需将该用户加入不同的角色中即可,而不必对该用户反复授权许可和收回许可。

l 服务器角色:服务器角色是指根据SQL Server的管理任务,以及这些任务相对的重要性等级来把具有SQL Server管理职能的用户划分为不同的用户组,每一组所具有的管理SQL Server的权限都是SQL Server内置的。服务器角色存在于各个数据库之中,要想加入用户,该用户必须有登录账号以便加入到角色中。

SQL Server2005提供了八种常用的固定服务器角色,其具体含义如下所示:

1) 系统管理员(sysadmin):拥有SQL Server所有的权限许可;

2) 服务器管理员(Serveradmin):管理SQL Server服务器端的设置;

3) 磁盘管理员(diskadmin):管理磁盘文件;

4) 进程管理员(processadmin):管理SQL Server系统进程;

5) 安全管理员(securityadmin):管理和审核SQL Server系统登录;

6) 安装管理员(setupadmin):增加、删除连接服务器,建立数据库复制以及管理扩展存储过程;

7) 数据库创建者(dbcreator):创建数据库,并对数据库进行修改。

8) 批量数据输入管理员(bulkadmin):管理同时输入大量数据的操作。

l 数据库角色:数据库角色是为某一用户或某一组用户授予不同级别的管理或访问数据库以及数据库对象的权限,这些权限是数据库专有的,并且还可以使一个用户具有属于同一数据库的多个角色。

SQL Server提供了两种类型的数据库角色:固定的数据库角色和用户自定义的数据库角色。

1)固定的数据库角色:固定的数据库角色是指SQL Server已经定义了这些角色所具有的管理、访问数据库的权限,而且SQL Server管理者不能对其所具有的权限进行任何修改。SQL Server中的每一个数据库中都有一组固定的数据库角色,在数据库中使用固定的数据库角色可以将不同级别的数据库管理工作分给不同的角色,从而有效地实现工作权限的传递。

SQL Server提供了十种常用的固定数据库角色来授予组合数据库级管理员权限:

1) public:每个数据库用户都属于 public 数据库角色,当尚未对某个用户授予或拒绝对安全对象的特定权限时,则该用户将继承授予该安全对象的 public 角色的权限;

2) db_owner:可以执行数据库的所有配置和维护活动;

3) db_accessadmin:可以增加或者删除数据库用户、工作组和角色;

4) db_ ddladmin:可以在数据库中运行任何数据定义语言 (DDL) 命令;

5) db_securityadmin:可以修改角色成员身份和管理权限;

6) db_backupoperator:可以备份和恢复数据库;

7) db_datareader:能且仅能对数据库中的任何表执行select操作,从而读取所有表的信息;

8) db_datawriter:能够增加、修改和删除表中的数据,但不能进行Select操作;

9) db_denydatareader:不能读取数据库中任何表中的数据;

10) db_denydatawriter:不能对数据库中的任何表执行增加、修改和删除数据操作。

2)用户自定义角色:创建用户定义的数据库角色就是创建一组用户,这些用户具有相同的一组许可。如果一组用户需要执行在SQL Server中指定的一组操作并且不存在对应的Windows组,或者没有管理Windows用户账号的许可,就可以在数据库中建立一个用户自定义的数据库角色。用户自定义的数据库角色有两种类型:即标准角色和应用程序角色。

标准角色通过对用户权限等级的认定而将用户划分为不用的用户组,使用户总是相对于一个或多个角色,从而实现管理的安全性。所有的固定的数据库角色或SQL Server管理者自定义的某一角色都是标准角色。

应用程序角色是一种比较特殊的角色。当我们打算让某些用户只能通过特定的应用程序间接地存取数据库中的数据而不是直接地存取数据库数据时,就应该考虑使用应用程序角色。当某一用户使用了应用程序角色时,他便放弃了已被赋予的所有数据库专有权限,他所拥有的只是应用程序角色被设置的角色。通过应用程序角色,能够以可控制方式来限定用户的语句或者对象许可。

l 使用SQL Server管理平台管理角色:

1)管理服务器角色。

打开SQL Server管理平台,展开指定的服务器,单击安全性文件夹,然后单击服务器角色图标,在右边的页框中右击所要的角色,从弹出的快捷菜单中选择属性选项,则出现服务器角色属性对话框。在该对话框中我们可以看到属于该角色的成员。单击添加按钮则弹出添加成员对话框,其中可以选择添加新的登录账号作为该服务器角色成员,单击删除按钮则可以从服务器角色中删除选定的账号。

2)管理数据库角色。

SQL Server管理平台中,展开指定的服务器以及指定的数据库,然后展开安全性文件夹,右击数据库角色图标,从弹出的快捷菜单中选择新建数据库角色选项,则出现新建数据库角色对话框。在名称文本框中输入该数据库角色的名称;点击架构前的复选框,可设定此角色拥有的架构;单击添加按钮,可将数据库用户增加到新建的数据库角色中;最后单击确定按钮即可完成新的数据库角色的创建。

l 使用存储过程管理角色:

1)管理服务器角色。

SQL Server中,管理服务器角色的存储过程主要有两个:sp_addsrvrolemembersp_dropsrvrolemember

系统存储过程sp_addsrvrolemember可以将某一登录账号加入到服务器角色中,使其成为该服务器角色的成员。其语法形式如下:

sp_addsrvrolemember loginrole

系统存储过程sp_dropsrvrolemember可以将某一登录者从某一服务器角色中删除,当该成员从服务器角色中被删除后,便不再具有该服务器角色所设置的权限。其语法形式如下:

sp_dropsrvrolemember [@loginame=]’login’[@rolename=]’role’

其中,@loginame为登录者名称;@rolename为服务器角色。

2)管理数据库角色。

SQL Server中,支持数据库管理的存储过程主要有六种:

create role:用来创建一个新的数据库角色,create role语法形式如下:

create role role_name [ AUTHORIZATION owner_name ]

其中:role_name 为待创建角色的名称;AUTHORIZATION owner_name为拥有新角色的数据库用户或角色。如果未指定用户,则执行 Create ROLE 的用户将拥有该角色。

droprole:用于从当前数据库角色中删除一个数据库角色,Droprole的语法形式如下:

drop role role_name

sp_helprole:用来显示当前数据库中所有数据库角色的全部信息。其语法形式如下:

sp_helprole [‘role’]

sp_addrolemember:用来向数据库某一角色中添加数据库用户,这些角色可以是用户自定义的标准角色,也可以是固定的数据库角色,但不能是应用程序角色。其语法形式如下:、

sp_addrolemember rolesecurity_account

sp_droprolemember:用来删除某一角色的用户。其语法形式如下:

sp_droprolemember rolesecurity_account

sp_helprolemember:用于显示某一数据库角色的所有成员。其语法形式如下:

sp_helprolemember [role]

8. 集成服务概述:集成服务(Integration Services)是用于生成高性能数据集成和工作流解决方案(包括针对数据仓库的提取、转换和加载 (ETL) 操作)的平台。集成服务包括生成并调试包的图形工具和向导;执行如数据导入、导出, FTP 操作,SQL 语句执行和电子邮件消息传递等工作流功能的任务等。

数据转换服务是一个功能非常强大的组件。其中,导入和导出向导提供了把数据从一个数据源转换到另一个数据目的地的简单方法,该工具可以在异构数据环境中拷贝数据、拷贝整个表或者查询结果,并且可以交互式地定义数据转换方式。SQL Server商务智能开发平台是一个图形工具,它使创建和编辑集成服务包(SSIS包)的工作变得更加简单和轻松,而且它提供了比导入,导出向导更为强大的功能。可以向SSIS包中添加控制流、数据流任务和事件处理程序。

9. 数据的导入:

l 导入Access数据库

l 导入文本文件

10. 数据的导出:

l 导出数据库至Access

l 导出数据库至文本文件

11. 使用图形设计界面来创建SSIS包:

SQL Server商务智能开发平台是一个图形工具,它使创建和编辑SSIS包的工作变得更加简单和轻松,而且它提供了比导入,导出向导更为强大的功能。可以向SSIS包中添加控制流、数据流任务和事件处理程序。

SQL Server 2005集成服务包(SSIS包)中的控制流由不同类型的控制流元素构造而成:容器、任务和优先约束。容器提供包中的结构并给任务提供服务,任务在包中提供功能,优先约束将容器和任务连接成一个控制流。

SQL Server 2005 SSIS包中的数据流由下列不同类型的数据流元素构造而成:提取数据的源、修改和聚合数据的转换、加载数据的目标以及将数据流组件的输出和输入连接为数据流的路径。

事件处理程序与包类似。事件处理程序可以像包一样为变量提供作用域,并且包含控制流和可选数据流。

l 创建包:

创建SSIS包的步骤如下:

1)在SQL Server商务智能开发平台中,在文件菜单中选择新建 项目,如图11-31所示,则打开新建项目对话框示。

2)在集成服务项目对话框中。可以向包中添加控制流、数据流任务和事件处理程序。控制流设计器用来创建包中的控制流。工具箱的控制流项节点列出多种类型的任务和容器。

l 定义和设置数据转换任务:

1)右键单击连接管理器区域中的任意位置,再单击新建平面文件连接。 在平面文件连接管理器编辑器对话框的连接管理器名称字段中,键入名称text。单击浏览。在打开对话框中,浏览并找到数据文件夹,再打开相应的文件。

2)右键单击连接管理器区域中的任意位置,再单击新建 OLE DB 连接。在配置OLE DB连接管理器对话框中,单击新建。在服务器名称中,输入本地服务器名称或输入localhost。在配置OLE DB连接管理器对话框的数据连接窗格中,确认选择了相应的服务器及数据库

3)为源数据和目标数据创建了连接管理器后,下一个任务是在包中添加一个数据流任务。接下来向包中添加一个平面文件源并对其进行配置。

4)接下来,将目标数据库添加到数据流中。则数据流任务可表示为如图11-40所示。

5)最后对包进行调试和运行。

l 定义和设置多任务:

如果包中包含两个或更多任务,则可以通过将它们的连接线从一项拖动到其他项而将它们连接成控制流。两个项之间的连接器表示优先约束。优先约束定义了两个连接项之间的关系。它指定了运行时任务的执行顺序以及任务的运行条件。例如,优先约束可以指定某任务必须成功,才能运行控制流中的下一个任务。

如果在前面的数据转换任务成功完成后,需要完成另一个任务执行T-SQL语句,则在控制流界面中,可将这两个任务连接成控制流。

双击两个任务之间的连接线,打开优先约束编辑器窗口。在此窗口中可定义两个连接项之间的关系,例如前一个任务执行成功后,可执行后一个任务。

双击执行T-SQL语句任务图标,可编辑要执行的T-SQL语句。点击确定按钮完成编辑。



Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助