SQL SERVER权限管理

繁简对译:[]  字体设置:[] 2008-10-17  阅读  次

10SQL SERVER权限管理  

 

10.1 SQL Server权限管理策略

对于一个数据库管理员来说,安全性就意味着必须保证那些具有特殊数据访问权限的用户能够登录到SQL Server,并且能够访问数据以及对数据库对象实施各种权限范围内的操作;同时,他还要防止所有的非授权用户的非法操作。 

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

10.1.1 安全身份验证  

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

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

 1Windows身份验证

 2SQL Server身份验证。

10.1.1 安全身份验证  

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

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

10.1.1 安全身份验证  

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

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

2)在SQL Server属性对话框中选择安全性选项页,如图10-1所示。

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

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

10.1.2 访问许可确认  

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

10.2 用户权限管理  

10.2.1   服务器登录帐号和用户帐号管理

 

10.2.2   许可(权限)管理

 

10.2.3   角色管理

10.2.1服务器登录帐号和用户帐号管理

SQL Server服务器登录管理

利用SQL Server管理平台可以创建、管理SQL Server登录帐号。其具体执行步骤如下:

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

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

10.2.1服务器登录帐号和用户帐号管理

SQL Server服务器登录管理

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

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

10.2.1服务器登录帐号和用户帐号管理

SQL Server服务器登录管理

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

10.2.1服务器登录帐号和用户帐号管理

SQL Server服务器登录管理

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

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

10.2.1服务器登录帐号和用户帐号管理

2. 用户帐号管理

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

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

10.2.1服务器登录帐号和用户帐号管理

2. 用户帐号管理

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

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

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

 

10.2.1服务器登录帐号和用户帐号管理

2. 用户帐号管理

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

 

10.2.2 许可(权限)管理

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

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

10.2.2 许可(权限)管理

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

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

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

 

10.2.2 许可(权限)管理

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

1. 使用SQL Server 管理平台管理许可

SQL Server 可通过两种途径实现对用户许可的设定:

1)面向单一用户

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

10.2.2 许可(权限)管理

1. 使用SQL Server 管理平台管理许可

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

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

 

10.2.2 许可(权限)管理

1. 使用SQL Server 管理平台管理许可

1)面向单一用户的许可设置。

在上页对话框中单击添加按钮,则弹出添加对象对话框,如图10-9所示。选择特定对象单选钮后,出现如图10-10所示的对话框

10.2.2 许可(权限)管理

1. 使用SQL Server 管理平台管理许可

1)面向单一用户的许可设置。

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

10.2.2 许可(权限)管理

1. 使用SQL Server 管理平台管理许可

1)面向单一用户的许可设置。

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

10.2.2 许可(权限)管理

1. 使用SQL Server 管理平台管理许可

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

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

 

10.2.2 许可(权限)管理

2.使用Transaction_SQL 语句

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

10.2.3 角色管理

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

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

10.2.3 角色管理

1. 服务器角色

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

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

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

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

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

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

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

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

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

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

 

10.2.3 角色管理

2. 数据库角色

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

SQL Server提供了两种类型的数据库角色:(1)固定的数据库角色;

2)用户自定义的数据库角色。

10.2.3 角色管理

2. 数据库角色

1)固定的数据库角色

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

10.2.3 角色管理

2. 数据库角色

1)固定的数据库角色

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

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

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

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

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

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

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

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

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

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

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

10.2.3 角色管理

2. 数据库角色

2)用户自定义角色

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

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

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

10.2.3 角色管理

3. 使用SQL Server管理平台管理角色

1)管理服务器角色。

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

 

10.2.3 角色管理

3. 使用SQL Server管理平台管理角色

2)管理数据库角色。

 

10.2.3 角色管理

4. 使用存储过程管理角色

1)管理服务器角色

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

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

  sp_addsrvrolemember loginrole

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

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

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

10.2.3 角色管理

4. 使用存储过程管理角色

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’]

 

打印 收藏 关闭