7.1 权限体系

7.1 权限体系


7.1.1 安全主体

  安全主体(Security Principals)是指那些能够请求 SQL Server 资源的实体。每一个安全主体都有一个安全标识符(Security Identifier,简称 SID)。

  安全主体可以是个体、组或者进程。安全主体在以下3个级别上进行管理。

(1)Windows 级别

  此级别的安全主体包括 Windows 用户帐户和 Windows 组帐户,可以是本地帐户,也可以是域的帐户。


(2)SQL Server 级别

  此级别的安全主体包括 SQL Server 登录、服务器角色等。


(3)数据库级别

  此级别的安全主体包括数据库用户、数据库角色、应用程序角色、公共数据库角色等。


  安全主体的级别决定了安全主体的影响范围。例如,通常 Windows 级别和 SQL Server 级别的安全主体具有实例级的范围,而数据库级别的安全主体的影响范围是特定的数据库。

  安全主体可以是不可分主体,也可以是一个集合主体。例如,Windows 登录名就是一个不可分主体,而 Windows 组则是一个集合主体。



7.1.2 安全对象

  安全对象(Securables),是 SQL Server 数据库引擎的权限体系下控制对其进行访问的实体集合。安全对象主要分为3级,每一级分别嵌套下一级的安全对象。这些嵌套的层次结构称为范围。SQL Server 的安全对象范围是服务器、数据库和架构。

(1)服务器

  此范围内的安全对象包括当前服务器(实例)、数据库、端点、登录、服务器角色等。


(2)数据库

  此范围内的安全对象包括数据库用户、数据库角色、应用程序角色、证书、全文目录、架构等。


(3)架构

  此范围内的安全对象包括表、视图、函数、统计信息、约束等。



7.1.3 身份验证与授权

  每一个安全对象都有权限(Permissions),可以授予安全主体。

  通常,身份验证(Authentication)和授权(Authorization)很容易被混淆。身份验证是为了验证安全主体的身份(Identity),即识别“你是谁”,发生于在授予权限之前或是在核查该安全主体是否具有某项权限之前。授权则是通过验证安全主体是否已被授予适当权限从而控制安全主体对安全对象的操作,即确保“你能做什么”。

  下图显示了数据库引擎权限层次结构之间的关系。

wKiom1aLpwyDfW57AADOJgPc7O4489.png



7.1.4 授权方式

  授权方式有成员继承、显示授权、隐式授权、所有权链接等。

  检查权限的算法可能很复杂。它包括重叠的组成员关系和所有权链接、显式和隐式权限,并且会受包含安全实体的安全类的权限影响。该算法的一般过程是收集所有相关权限。如果未找到阻止性 DENY,该算法将搜索提供足够访问权限的 GRANT。

  如果登录名是 sysadmin 固定服务器角色的成员或用户是当前数据库中的 dbo 用户,则绕过权限检查。



本文出自 “SQL Server 管理员指南” 博客,谢绝转载!

你可能感兴趣的:(权限体系)