SQL Server数据库角色成员身份和权限

定义

为便于管理数据库中的权限,SQL Server 提供了若干“角色”,这些角色是用于分组其他主体的安全主体。它们类似于 Microsoft Windows 操作系统中的组。数据库级角色的权限作用域为数据库范围。

数据库角色限制在单个数据库的范围之内——用户属于一个数据库中的db_datareader角色并不意味着他属于另一个数据库中的那个角色。

SQL Server 中有两种类型的数据库级角色

  • 数据库中预定义的“固定数据库角色
  • 您可以创建的“灵活数据库角色”。

固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。

db_owner 和 db_securityadmin 数据库角色的成员可以管理固定数据库角色成员身份。但是,只有 db_owner 数据库角色的成员能够向db_owner 固定数据库角色中添加成员。

数据库级别的角色名称及说明

  • db_owner 可以执行数据库的所有配置和维护活动,还可以删除数据库。
  • db_securityadmin 可以修改角色成员身份和管理权限。向此角色中添加主体可能会导致意外的权限升级。
  • db_accessadmin 可以为 Windows 登录名、Windows 组和 SQL Server 登录名添加或删除数据库访问权限。
  • db_backupoperator 可以备份数据库。
  • db_ddladmin 可以在数据库中运行任何数据定义语言 (DDL) 命令。
  • db_datawriter 可以在所有用户表中添加、删除或更改数据。
  • db_datareader 可以从所有用户表中读取所有数据。
  • db_denydatawriter 禁止添加、修改或删除数据库内用户表中的任何数据。
  • db_denydatareader 禁止读取数据库内用户表中的任何数据。

服务器级角色

  • sysadmin

该角色能够执行SQL Server上的任何操作。本质上,任何具有这种角色成员身份的人都是那个服务器上的sa。这种服务器角色的创建为微软提供了某一天去除sa登录的能力——实际上,联机丛书把sa称作本质上为遗留物的东西。

值得注意的是,在SQL Server上,Windows的Administrators组被自动映射到sysadmin角色中。这意味着服务器的Administrators组中的任何成员同时也具有对SQL数据的sa级别的访问权限。如果需要,你可以从sysadmin角色中删除Windows的administrators组,以提高安全性、防范漏洞

  • serveradmin

该角色能设置服务器范围的配置选项或关闭服务器。尽管它在范围上相当有限,但是,由该角色的成员所控制的功能对于服务器的性能会产生非常重大的影响

  • setupadmin

该角色仅限于管理链接服务器和启动过程

  • securityadmin

对于专门创建出来用于管理登录名、读取错误日志和创建数据库许可权限的登录名来说,该角色非常便利。在很多方面,该角色是典型的系统操作员角色——它能够处理多数的日常事务,但是,却不具备一个真正无所不能的超级用户所拥有的那种全局访问。

  • processadmin

能够管理SQL Server中运行的进程——必要的话,该角色能够终止长时间运行的进程

  • dbcreator

该角色仅限于创建和更改数据库

  • diskadmin

管理磁盘文件(指派给了什么文件组、附加和分离数据库,等等)

  • bulkadmin

该角色有些怪异。它被明确创建出来,用于执行BULK INSERT语句的权限,否则的话,只能由具有sysadmin权限的人来执行BULK INSERT语句。即使把一个用户加入到了bulkadmin组中,也只是给了他们访问那个语句的权限,对于运行该语句的表,并没有授予用户访问那个表的权限。这意味着不仅需要把用户添加到bulkadmin中,而且,对于想要用户能在其上执行BULK INSERT的表,还要授予GRANT用户INSERT许可权限。此外,对于将在BULK INSERT语句中引用的所有表,还要确保用户拥有正确的到那些表的SELECT访问权限

对于在服务器上承担管理角色任务的单个用户,可以对其混合搭配这些角色。一般来说,只有最大型的数据库才会使用比sysadmin和securityadmin更多的角色。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章