14.5.1 角色管理简介
自SQL Server 7 版本开始引入了新的概念角色,从而替代以前版本中组的概念。和组一样,SQL Server 管理者可以将某些用户设置为某一角色,这样只对角色进行权限设置便可实现对所有用户权限的设置,大大减少了管理员的工作量。在SQL Server 中主要有两种角色类型:服务器角色与数据库角色。
1 服务器角色
服务器角色是指根据SQL Server 的管理任务,以及这些任务相对的重要性等级来把具有SQL Server 管理职能的用户划分成不同的用户组,每一组所具有管理SQL Server的权限已被预定义。服务器角色适用在服务器范围内,并且其权限不能被修改。例如,具有sysadmin 角色的用户在SQL Server 中可以执行任何管理性的工作,任何企图对其权限进行修改的操作都将会失败。这一点与数据库角色不同
SQL Server 共有7 种预定义的服务器角色,各种角色的具体含义如表14-3 所示:
2 数据库角色
在SQL Server 中我们常会发现我们要将一套数据库专有权限授予给多个用户,但这些用户并不属于同一个NT 用户组,或者虽然这些用户可以被NT 管理者划为同一NT 用户组,但遗憾的是,我们却没有管理NT 账号的权限,这时我们就可以在数据库中添加新数据库角色或使用已经存在的数据库角色,并让这些有着相同数据库权限的用户归属于同一角色。
由此可见,数据库角色能为某一用户或一组用户授予不同级别的管理或访问数据库或数据库对象的权限,这些权限是数据库专有的。而且,还可以使一个用户具有属于同一数据库的多个角色。
SQL Server 提供了两种数据库角色类型:预定义的数据库角色、用户自定义的数据库角色。
预定义数据库角色
预定义数据库角色是指这些角色所有具有的管理、访问数据库权限已被SQL Server 定义、并且SQL Server 管理者不能对其所具有的权限进行任何修改。SQL Server 中的每一个数据库中都有一组预定义的数据库角色,在数据库中使用预定义的数据库角色可以将不同级别的数据库管理工作分给不同的角色,从而很容易实现工作权限的传递。例如,如果准备让某一用户临时或长期具有创建和删除数据库对象(表、视图、存储过程)的权限,那么只要把他设置为db_ddladmin 数据库角色即可。
用户自定义的数据库角色
当我们打算为某些数据库用户设置相同的权限,但是这些权限不等同于预定义的数据库角色所具有的权限时,我们就可以定义新的数据库角色来满足这一要求,从而使这些用户能够在数据库中实现某一特定功能。用户自定义的数据库角色具有以下几个优点:
SQL Server 数据库角色可以包含NT 用户组或用户;
在同一数据库中用户可以具有多个不同的自定义角色,这种角色的组合是自由的,而不仅仅是public 与其它一种角色的结合;
角色可以进行嵌套,从而在数据库实现不同级别的安全性。
用户定义的数据库角色有两种类型:标准角色和应用角色。
标准角色类似于SQL Server 7 版本以前的用户组,它通过对用户权限等级的认定而将用户划分为不同的用户组,使用户总是相对于一个或多个角色,从而实现管理的安全性。所有的预定义的数据库角色或SQL Server 管理者自定义的某一角色(该角色具有管理数据库对象或数据库的某些权限)都是标准角色。
应用角色是一种比较特殊的角色类型。当我们打算让某些用户只能通过特定的应用程序间接地存取数据库中的数据(比如通过SQL Server Query Analyzer 或Microsoft Excel) 而不是直接地存取数据库数据时,我们就应该考虑使用应用角色。当某一用户使用了应用角色时,他便放弃了已被赋予的所有数据库专有权限,他所拥有只是应用角色被设置的权限。通过应用角色,总能实现这样的目标;即以可控制方式来限定用户的语句或对象权限。
标准数据库角色与应用角色的差异主要表现在以下几个方面。
应用角色不像标准角色那样具有组的含义,因此不能像使用标准角色那样把某一用户设置为应用角色;
当用户在数据库中激活应用角色时,必须提供密码,即应用角色是受口令保护的,而标准角色并不受口令保护。
我们可以看出并不像标准角色那样将通过把用户加入到不同的角色当中而使用户具有这样或那样的语句或对象权限,而是首先将这样或那样的权限赋予应用角色,然后将逻辑加入到某一特定的应用程序中,从而通过激活应用角色而实现对应用程序存取数据的可控性。只有应用角色被激活,角色才是有效的,用户也便可以且只可以执行应用角色相应的权限,而不管用户是一个sysadmin 或public 标准数据库角色。
14.5.2 角色的管理
1 管理服务器角色
使用SQL Server Enterprise Manager 查看服务器角色成员使用SQL Server EnterpriseManager 的执行步骤如下:
(1)启动SQL Server Enterprise Manager,登录到指定的服务器。
(2)单击security 文件夹,单击Server Role 图标。
(3)在右窗格中右击服务器角色,在弹出菜单中选择Properties, 然后弹出ServerRole Properties 对话框,如图14-10 所示,从中我们可以看到该角色的成员。
2 增加服务器角色成员
在图14-10 的Server Role Properties 对话框中选择Add 按钮弹出Add Members 对话框,从中选择登录者。
3 查看服务器角色权限
在图14-10 的Server Role Properties 对话框中选择Permission 按钮,便可查找看该服务器角色所具有的所有权限,如图14-11 所示。