SharePoint 中的授权、用户、组和对象模型

在 SharePoint 中,对网站、列表、文件夹和列表项的访问通过基于角色的成员资格系统进行控制,通过该系统用户将会被分配授权访问 SharePoint 对象的角色。

若要授予某个用户访问某个对象的权限,您可以将该用户添加到对该对象已具有权限的组中,或者您可以创建角色分配对象,为角色分配设置用户,将角色分配可选绑定到具有基本权限的适当角色定义,然后将该分配添加到列表项、文件夹、列表或网站的角色分配集合。 如果将用户分配给角色时您没有将角色分配绑定到角色定义,该用户就没有权限。 SharePoint 提供了下列方式来控制对其对象的访问:

  • 对象可以使用与父网站、列表或文件夹(继承父对象上可用的角色和用户)相同的权限,也可以使用独有权限。

  • 网站、列表、文件夹和项目各自提供角色分配集合,从而可以精细管理用户对对象的访问。

  • 组由用户组成,可能分配也可能没有分配角色。 默认情况下,SharePoint 包括以下三个组:

    • owners(管理员)

    • members(参与者)

    • visitors(读者)

      在通过用户界面创建具有独有权限的网站时,您将被定向到一个页面,您可以在其中将用户分配给这些组,作为设置网站的一部分。

  • 利用匿名访问,用户可以匿名参与列表和调查或者匿名查看页面。 您还可以向“所有已验证用户”授予访问权,以允许域中的所有成员访问网站,而不必启用匿名访问。

  • 网站创建权限(CreateSSCSiteManageSubwebs)可控制用户能否创建顶级网站、子网站或工作区。

用户间接通过具有角色分配的组、或者直接通过角色分配成为 SharePoint 对象的成员。 此外,用户还可以是添加到某个组或角色中的 Microsoft Windows NT 域组的成员。 角色定义将用户或组与 与 Microsoft.SharePoint.SPBasePermissions 枚举的值对应的单个权限或权限集相关联。 每个用户或组都有一个唯一的成员 ID。 可以使用对象模型来创建或修改角色分配和定义,这与通过 addrole.aspx 和 editrole.aspx 文件执行操作不同。 与用户界面中呈现的这些页面不同,对象模型不强制权限依赖性,因此您可以使用任意权限组合来创建角色定义。 但是,在使用对象模型自定义角色定义和权限时,一定要周密规划,因为计划不周的角色定义和不适当的权限分配会导致糟糕的用户体验。 有关 SharePoint 权限的详细信息,请参阅 SPBasePermissions

安全策略

安全策略提供了一种强制 Web 应用程序(虚拟服务器)内所有网站集的安全性保持一致的手段。 通过策略,您可以向各个 SharePoint 用户以及使用 Windows 身份验证或可插入验证系统的域组分配角色或权限集,但不能向 SharePoint 组分配。 每个策略项可为 Web 应用程序中的用户或组指定权限。

可在逻辑 Web 应用程序级别或区域级别设置策略。 例如,即使两个 Web 应用程序具有相同的内容,用户也可以对 http://Serverhttp://Server.extranet.microsoft.com使用不同的策略。

可以通过策略来授予或拒绝权限。 授予权限会将该权限授予 Web 应用程序内所有安全对象上的用户或组,而不管对象上的本地权限是什么。 拒绝权限优先于授予权限,它主动阻止 Web 应用程序内所有安全对象上的用户或组的该权限。 拒绝用户的所有权限会阻止该用户访问任何内容,即使该用户拥有特定内容的显式权限:策略优先于网站级别权限。

在策略角色中,用户和组由其安全标识符 (SID) 和登录名或用户名标识。 应用策略角色类似于应用网站、列表、文件夹或文档的管理权限:添加用户或组,然后将其分配给一个或多个角色定义。 每个 Web 应用程序都有其自己的策略角色。 策略角色与管理权限之间的另一个区别是中心管理员可以在整个 Web 应用程序范围内拒绝某个用户的某种权限。

注意

集中管理策略角色不同于网站集的角色定义。

用户、组和主体

( SPUser 的单个用户) 直接通过单个角色分配获得对 SharePoint 对象的访问权限,或者间接通过具有角色分配的 SPGroup ) (域组或 SharePoint 组的成员身份获得访问权限。 在直接角色分配中,用户是 SPPrincipal ) (主体。 在域组或 SharePoint 组角色分配中,域组或 SharePoint 组是主体。

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

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

组提供了基于用户的权限管理的可管理性和缩放问题的答案。 基于组的管理可能更抽象或更难概念化,但它可以更轻松地管理具有许多唯一安全对象的复杂网站。 例如,将用户添加到已被授予对系统中各种对象的适当角色的组时。 组的权限检查可以更好地缩放,因为需要存储的组 ACE 要少得多。

SharePoint Server 支持两种类型的组:域组和 SharePoint 组。 域组仍不受 SharePoint Server 控制;用户无法使用 SharePoint Server 来定义、浏览或修改域组成员身份。 SharePoint 组的范围限定为网站集级别,只能在网站集内使用。 可以在 Active Directory 目录服务范围内的任意位置使用域组。

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

对象关系的高级视图作用域、用户、组和角色

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

图 1. 身份验证对象关系

身份验证对象关系

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

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

权限和角色定义还具有多对多关系 (N 到 N) 。 SPBasePermissions ) 的每个权限 (可以是多个角色定义的一部分。 例如,“插入列表项”权限包含在“参与者”、“设计器”和“管理员”角色定义中。 SPRoleDefinition ) (每个角色定义也可以包含多个权限。 例如, 参与者 包括用于插入、更新和删除列表项的权限。

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

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

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

用户令牌和访问控制列表

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

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

对象模型更改:废弃但向后兼容的安全对象

在 SharePoint 中,所有对象作用域都共享相同的基本权限管理体验。 SharePoint 通过角色定义来管理权限,这将使用户能够在列表、文件夹和项目级别上获得一致的体验。 Windows SharePoint Services 2.0 中使用的以下安全对象已废弃,但是仍可以向后兼容:

若要将用户分配到角色,请使用 Microsoft.SharePoint.SPRoleAssignment 类和 Microsoft.SharePoint.SPRoleAssignmentCollection 类的成员。 SPBasePermissionsions 枚举替换了 SPRights ,包括其他权限。 SPBasePermissionsions 枚举还包括旧权限,这些权限映射到与 SPRights 中以前的权限相同的常量值。 SharePoint 组概念映射到现有的 SPGroup 对象和 SPGroupCollection 对象,它们表示跨网站组。

策略角色:创建或修改 URL 区域的安全策略

若要创建或修改 URL 区域的安全策略,请使用下面的类及其成员:

容纳共享资源的来宾角色(受限访问)

来宾角色的概念是指在平台上提供共享资源。 例如,必须使用网站的主题和导航结构将页面呈现为列表视图。 此概念扩展为包括文件夹和列表级权限。

SharePoint 对象模型继续称其为 Guest 角色以便在语义上与先前的对象模型兼容,尽管现在此角色在用户界面中已称为“受限访问”

文件夹和项扩展

当用户被授予对某个文件夹的权限时,他们同时还获得该文件夹的父列表上的和该列表的父网站上(该文件上的每个独有安全作用域,一直到第一个独有祖先网站)的 Guest 角色的权限。 这对列表项也适用:授予用户对某个项的权限,也就授予了该用户对所有父文件夹、列表和网站一直到第一个独有祖先网站上的 Guest 角色的权限。

从一个作用域或从所有作用域移除用户

从作用域移除用户也会从当前作用域下的所有独有安全作用域移除该用户。 例如,从网站移除用户也会从网站中的独有安全列表中移除该用户。

从所有作用域中移除用户的唯一方式是从网站集中删除该用户,这将从网站集内的所有作用域的所有角色中移除此用户。

另请参阅