授权对象关系

上次修改时间: 2010年4月14日

适用范围: SharePoint Foundation 2010

本文内容
用户、组和安全主体
对象关系的高级视图
用户标记和访问控制列表

单个用户 (SPUser) 可直接通过单个角色分配获得对 Microsoft SharePoint Foundation 对象的访问权限,或者间接通过具有角色分配的域组或 SharePoint 组 (SPGroup) 中的成员资格获得此访问权限。在直接角色分配中,用户是安全主体 (SPPrincipal),而在域组或 SharePoint 组角色分配中,域组或 SharePoint 组是安全主体。

用户、组和安全主体

SharePoint Foundation 同时支持 Windows 用户(例如,DOMAIN\用户别名)和外部用户(通过可插入验证)。用户标识由标识管理系统(例如,Active Directory 目录服务)进行维护。用户配置文件(包括用户的显示名称、电子邮件地址和其他信息)的作用范围限于网站集级别。更改显示名称会影响整个网站集。

组是 SharePoint Foundation 用于管理安全性的用户集合。基于用户的管理对简单网站而言简单易行,但随着唯一受保护资源数量的不断增加,这种管理方式日趋复杂。例如,用户可能对列表 1 具有"参与讨论"角色,对列表 2 具有"读取"角色,对列表 3 具有"设计"角色。此模型在有 50,000 名用户(以此为例)的情况下不能正常扩展,因为这会导致每个唯一受保护对象上的访问控制列表 (ACL) 包含多达 50,000 个访问控制项 (ACE)。

组可以解决在进行基于用户的权限管理时出现的可管理性及缩放问题。基于组的管理可能更抽象或者更难以从概念上加以理解,但它可以更方便地管理包含众多唯一受保护对象的复杂网站,例如向已被授予系统中多个对象的适当角色的组中添加用户。组的权限检查可以更好地缩放,因为需要存储的组 ACE 要少得多。

SharePoint Foundation 支持两种类型的组:域组和 SharePoint 组。域组位于 SharePoint Foundation 控件外;用户不能使用 SharePoint Foundation 定义、浏览或修改域组成员身份。SharePoint 组的作用范围限于网站集级别,只能在网站集内使用它们,但却可以在 Active Directory 目录服务范围内的任何位置使用域组。

安全主体是用于控制安全性的用户或组。如果向网站中添加用户,则该用户就是安全主体,但如果向网站中添加组,则该组就是安全主体。在 SharePoint Foundation 中缩放安全性的关键是保证每个作用域内的安全主体数量合理。通过使用组,可以使用较少的安全主体为更多的用户授予访问权限。

对象关系的高级视图

图 1 显示了逻辑数据库关系图中 SharePoint Foundation 安全管理系统的高级视图。每个框表示系统中的一个安全对象。直线表示对象之间的关系。符号 1N 表示关系类型。该图演示如何将权限数据构建到用户标记和 ACL 中。

图 1. 授权对象关系

授权对象关系

作用域表示一个或一组唯一受保护对象。作用域包括网站、列表、文件夹或项级别。

用户与组具有多对多关系(N 到 N)。每个用户 (SPUser) 可以是多个组的成员,而每个组 (SPGroup) 可以包含多个用户。

权限与角色定义也具有多对多关系(N 到 N)。每个权限 (SPBasePermissions) 可以是多个角色定义的一部分。例如,Insert List Items 权限包含在 Contributor、Designer 和 Administrator 角色定义中。此外,每个角色定义 (SPRoleDefinition) 还可以包含多个权限,例如,Contributor 包括插入、更新和删除列表项的权限。

角色定义与角色分配 (SPRoleAssignment) 具有一对多关系(1 到 N)。每个角色定义可用于多个角色分配。列表 1 上的读者和列表 2 上的读者可能不同,但他们的角色分配可以共享一个角色定义:Reader。

用户或组与角色分配具有多对多关系(N 到 N)。每个用户或组可以是给定对象的多角色分配的成员。例如,用户可以对同一对象同时具有 Designer 和 Administrator 角色。

作用域与角色分配具有一对多关系(1 到 N)。每个作用域可包含多个角色分配,但每个角色分配只包含一个作用域。例如,一个用户可能是事件列表的读者,另一个用户可能是事件列表的参与者,但这两种角色分配都不适用于公告列表。两个列表共享同一角色分配的唯一方法是从父容器继承它们的权限,在这种情况下,安全作用域是容器,而不是这两个列表。

用户标记和访问控制列表

为了更快地检查权限,SharePoint Foundation 在其安全模型中实现了用户标记和 ACL。用户标记可标识应用于用户的身份验证过程。Windows 用户拥有复杂的标记:一个是用户的唯一字符串 (SID),另一个是用户的所有 Windows 域组列表(如 DOMAIN\Department 15688)。未进行 Windows 身份验证的用户可能拥有一个包含用户名唯一字符串的非常简单的标记,也可能拥有一个包含 Windows 身份验证中所表示的组/角色成员身份的复杂标记。每个用户的 SharePoint 组成员身份通过用户标记来表示,以便 SharePoint Foundation 通过读取用户标记来标识当前用户的所有组。

ACL 是一个二进制对象,用于确定用户和组对给定对象所拥有的权限。ACL 包含多个 ACE,每个安全主体(用户或组)都是 ACL 中的一个 ACE。可针对每个作用域,将权限、角色定义和角色分配构建到 ACL 中,以便 SharePoint Foundation 能够了解允许每个用户或组在给定作用域中执行的操作。

请参阅

概念

SharePoint 基于声明的标识