主体和安全实体
在 SQL Server 2008中,“主体”就是能够访问受保护资源且能得到访问资源所需权限的任何我的、组或流程。与旧版 SQL Server 同样,能够在 Windows 中定义主体,也可将没有对应 Windows 主体的 SQL Server 登陆做为其基础。下面的列表显示了 SQL Server 2008主体的层次结构,但不包括固定服务器和数据库角色,还显示了将登陆和数据库用户映射为安全对象的方法。主体的影响范围取决于它的定义范围,这样 Windows 级别的主体就比 SQL Server 级别的主体拥有更大的影响范围,然后者的影响范围又大于数据库级别的主体。每一个数据库用户都会自动隶属于固定的 public 角色。
Windows 级别的主体
• Windows 域登陆
• Windows 本地登陆
• Windows 组
SQL Server 级别的主体
• SQL Server登陆
• 映射为 Windows 登陆的 SQL Server 登陆
• 映射为证书的 SQL Server 登陆
• 映射为不对称密钥的 SQL Server 登陆
数据库级别的主体
• 数据库用户
• 映射为 SQL Server 登陆的数据库用户
• 映射为 Windows 登陆的数据库用户
• 映射为证书的数据库用户
• 映射为不对称密钥的数据库用户
• 数据库角色
• 应用程序角色
• 公共角色
受权的另外一部分就是可用以保护权限授予操做或拒绝授予操做的对象。图4列出了SQL Server 2008 中安全实体对象的层次结构。在服务器级别,能够保护网络端点,以控制进出服务器的通讯通道,以及数据库、绑定角色和登陆。在数据库和架构级别,用户建立的每个对象都被看成安全主体,包括那些驻留在架构中的对象。
固定服务器角色
服务器角色 |
说明 |
bulkadmin |
成员能够运行BULK INSERT语句,这一角色中的成员仍然要求非sysadmins用户可以访问被更新到的对象 : administer blck operations |
dbcreator |
成员能够建立、修改、删除和恢复任意数据库 : create database |
diskadmin |
这一角色用于管理磁盘文件。大多数此类功能是关于添加和删除备份设备的。:alter resources |
processadmin |
成员能够终止在SQL SERVER实例中运行的进程,若是您但愿授予某人停止长时间运行的查询或者孤立链接的能力,那么这一角色很是有 用 : alter any connection , alter server state |
public |
全部有效SQL SERVER登录是public角色的成员 |
securityadmin |
成员可管理登录及其属性。他们能够grant, deny 和revoke服务器级别的权限以及数据库级别的权限。他们也能够为SQL SERVER登录重置密码。这一角色无权指定数据库权限。若是但愿securityadmin成员可以进行这一操做,就必须使他们的登陆成为特定数据库的db_accessadmin固定数据库角色的成员 |
serveradmin |
成员能够改变服务器范围内的配置选项并关闭服务器 |
setupadmin |
成员要吧添加和删除添加服务器,还执行一些系统存储过程。 |
sysadmin |
成员可执行服务器中的任意操做。默认状况下,windows builtin\administrators组、本地管理员组中的全部成员是sysadmin固定服务器角色的成员。sql server服务账户也是此角色的成员。 |
数据库用户
能够经过SSMS或者T-SQL语句CREATE LOGIN来建立登陆。再利用SSMS或者T-SQL语句CREATE USER 来建立数据库用户
在建立数据库用户以后,能够选择将它包含在一个数据库角色中。可更改。
数据库角色 |
说明 |
db_addessadmin |
能够为windows登录、windows组和SQL SERVER登录添加或者删除访问权限 :alter any user, create schema |
db_backupoperator |
能够备份数据库 : backup databse , backuplog , checkpoint |
db_datareader |
能够从全部用户表中读取全部数据 : select |
db_datawriter |
成员要吧添加、删除或者改变全部用户表中的数据 : deleter , insert , update |
db_ddladmin |
能够运行数据库中的任意数据定义语言(ddl)命令 : alter any assembly, alter any asammetric key , alter any |
db_denydatareader |
不能读取数据库中用户表中的任何数据 : 拒绝select |
db_denydatawriter |
不能在数据库的用户表中添加 、修改或者删除任何数据: 拒绝delete , insert , update |
db_owner |
能够对数据库执行所有配置和维护操做,包括删除数据库 |
db_securityadmin |
能够修改角色成员关系并管理权限 |
有一种特殊的数据库角色,sysadmin用户不能明确向其授予其它用户权限,它被称为public角色。全部数据库用户都隐式包含在public角色中。这一角色得到特定数据库中用户的全部默认权限。它不能拥有指定给它的用户、组或者角色。由于默认状况下每一个 人都属于这一角色。这一角色不能被删除。所以,要防止未经受权的数据访问,应该授予public角色的权限降至最低。应将权限授予其它数据库角色且授予登录相关的用户账户。