《使用细化权限的最佳实践》由会员分享,可在线阅读,更多相关《使用细化权限的最佳实践(9页珍藏版)》请在金锄头文库上搜索。
1、.使用细化权限的最佳实践本文档按原样提供。本文表达的信息和观点包括 URL 和其他 Internet 网站引用随时可能发生更改,恕不另行通知。使用本文档的风险由您自行承担。此处所述的某些示例仅供演示之用,纯属虚构。无意进行真实的关联或联系,请勿据此妄加推测。本文并不为您提供对任何 Microsoft 产品中任何知识产权的任何法律权利。您可以出于内部参考目的复制和使用本文档。 2010 Microsoft Corporation。保留所有权利。使用细化权限的最佳实践作者:Sean Livingston,SharePoint 产品组的产品经理发布时间:2010 年 9 月摘要:本白皮书介绍了细化权
2、限 的最佳实践,以及如何在使用 SharePoint产品和技术或 Microsoft SharePoint 2010 产品时在您的组织内部使用它们。目录目录3使用细化权限概述4SharePoint 权限系统概述5权限级别5SharePoint 组5作用域5安全对象6继承6受限访问7二进制 ACL8避免常见 FGP 限制问题的最佳实践8列表中的作用域过多8作用域中的成员过多9很深的作用域层次结构9为常见 FGP 性能问题建议的解决方案10解决方案 1:移除 FGP 并仅在 Web 级别使用安全强制10环境安全清理10环境安全体系结构重新设计11解决方案 2:根据分层结构更改使用细化权限12环境层
3、次结构重新设计12解决方案 3:根据范围结构更改使用细化权限仅仅 201013动态安全更改代码重新设计13环境体系结构示例14环境概述15工作流设计16细化权限问题16FGP 问题的解决方法17摘要19使用细化权限概述本文描述了 SharePoint 2010 产品Microsoft SharePoint Server 2010 和 Microsoft SharePoint Foundation 2010与 SharePoint Products 和技术Office SharePoint Server 2007 和 Windows SharePoint Services 3.0 版的细化权限
4、的使用;与 FGP 相关的性能问题;配置包含 FGP 的解决方案的最佳实践。注意:建议您只对需要 FGP 的业务案例使用 FGP。就操作监督和性能而言,FGP 的成本很高。可通过采取以下措施来避免使用 FGP: 尽可能少地中断权限继承。 使用基于目录成员资格的组分配权限。注意:建议您不使用 SharePoint 组向网站分配权限,因为在使用 SharePoint 组分配权限时,将对索引进行完全爬网。相反,建议您使用 Domain 组。 在可能的最高级别分配权限。作为此策略的一部分,请考虑以下技术:o 将需要细化权限的文档隔离到为支持每组权限而定义的文档库中,并将文档库保存到隔离的网站集或网站中
5、。有关分层更改的其他信息,请参阅解决方案 2:根据分层结构更改使用细化权限。注意:在本文档中,术语Web和网站等同于SPWeb对象,而网站集等同于SPSite对象。o 使用不同的文档发布级别来控制访问。在发布文档之前,可以为只能批准文档库中的项目的用户设置高级权限和版本控制设置。o 对于非文档库列表,请使用 ReadSecurity 和 WriteSecurity 权限级别。在创建列表时,所有者可将项目级权限设置为读取访问权限或创建和编辑访问权限。如果您必须使用细化权限,请考虑以下建议的实践: 确保文档库中的层次结构的同一级别上没有过多的项目,因为在视图中处理项目所需的时间会增加。 使用事件处
6、理程序控制编辑权限。可以包含一个使用SPEventReceiverType.ItemUpdating和SPEventReceiverType.ItemUpdated方法注册事件的事件处理程序,然后使用代码来控制是否应允许更新。这样做很有用,因为您可基于列表或项目的任意元数据做出安全性决策,而不会影响视图呈现性能。有关事件处理程序的其他信息,请参阅FGP 问题的解决方法。 使用AddToCurrentScopeOnly方法可在 SharePoint 组中分配受限访问成员资格。此原则的关键要素在于,重新设计体系结构以使作用域成员资格不会导致在父文档库和 Web 中重新计算 ACL。有关作用域更改的
7、其他信息,请参阅解决方案 3:根据作用域结构更改使用细化权限仅 2010。SharePoint 权限系统概述本节描述了 SharePoint 权限作用域系统。有关规划网站安全性的详细信息,请参阅: 规划网站权限 规划网站权限 规划网站安全性 规划网站安全性 权限级别权限级别包含一组单个权限,例如,查看项目或创建通知。用户可预定义或创建权限级别。甚至可在预定义的权限级别中修改权限集。SharePoint 组SharePoint 组是一个可保留其他安全主体的网站集范围的对象,包括 Windows 用户帐户、非 Windows 用户例如,基于表单的帐户和 Active Directory 组。作用域
8、作用域是未定义单独的安全边界的安全对象及其任意子级的安全边界。作用域包含一个访问控制列表 ,但与 NTFS ACL 不同,作用域可包含特定于 SharePoint 的安全主体。作用域的 ACL 成员可包含 Windows 用户,非 Windows 用户例如,SharePoint 产品和技术中基于表单的帐户或 SharePoint 2010 产品中基于声明的帐户、Active Directory 组或 SharePoint 组。可在父作用域内创建的作用域的最大数目不存在。但对于 SharePoint 产品和技术,在创建完 1,000 个作用域后,将使用一个代码路径,此路径需要 Microsoft
9、 SQL Server 往返以便在呈现视图之前分析这些作用域。当作用域数小于或等于 1,000 时,只需一次往返即可。在 SharePoint 2010 产品中,在切换到其他算法之前所返回的作用域数的限制将基于查询限制,其默认值为 5,000;但即使该值是默认值,它也是一个很大的值,足以显著降低性能。在 SharePoint 2010 产品中,有一个名为SPRoleAssignmentCollection.AddToCurrentScopeOnly的新方法,可通过此方法进行角色分配。有关角色分配的其他信息,请参阅SPRoleAssignmentCollection.AddToCurrentSc
10、opeOnly该链接可能指向英文页面。安全对象安全对象是一个可为其分配 ACL 的对象。在 SharePoint 产品和技术中,可使用ISecurableObject接口,而在 SharePoint 2010 产品中,应使用SPSecurableObject类。有关安全对象的其他信息,请参阅ISecurableObject 接口该链接可能指向英文页面或SPSecurableObject 类该链接可能指向英文页面。继承如果一个安全对象不具有唯一作用域,则该对象将继承其父级的作用域。当某个对象从其父级继承时,不会为该对象创建作用域。相反,只要进行安全检查,它就会针对父对象进行验证。在最简单的环境中
11、,此作用域位于包含该项目的网站集的根网站中。在更改某个项目或容器使其具有唯一成员资格时,其继承将中断,这意味着将为该项目默认情况下,将为继承其权限作用域的任意子级创建新作用域。下图演示了文档库的对象层次结构,其中,所有对象除一个对象外将继承其父级的作用域。每个编号的金色六边形均表示一个权限作用域。除非容器内的所有子对象都有自己的唯一权限作用域,否则它们都将从该父作用域继承。受限访问在向一个具有唯一权限的项目的作用域中添加某个安全主体时,此安全主体将与受限访问权限级别一起添加到在层次结构中位于该项目上方的每个唯一权限作用域,直至找到具有唯一权限的父 Web。之所以向具有受限访问的作用域中添加用户
12、,是为了允许对在层次结构中位于具有唯一权限的项目上方的对象进行足够访问,以便在用户尝试导航到该项目时能呈现对象模型 、母版页和导航。没有父作用域中的受限访问权限,用户将无法成功导航到或打开具有唯一权限的项目。下图演示了作用域的分层深度将如何影响向父作用域添加受限访问用户所需的工作量。项目上方的唯一作用域直至包含具有唯一权限的 Web的数目越多,必须进行的添加的次数就越多。该图演示了具有在每个级别从 Web 到单个项目上定义的唯一作用域的物理结构的简化表示。如上图所示,每个具有不同编号的金色六边形均代表一个唯一权限作用域,除非容器内的所有子对象具有自己的唯一权限作用域,否则它们将从该作用域继承。
13、红色箭头显示受限访问升级链。此图还包括一组唯一作用域和必须在每个父作用域由作业域内单独的框表示上进行的受限访问成员资格添加。只要将安全主体添加到具有唯一权限的对象作用域位于具有唯一权限的 Web 下方中,就无需额外编程即可添加唯一作用域。在将具有受限访问权限级别的安全主体添加到父作用域中时,无需进行任何检查即可查看安全主体是否已在父作用域中。再次将可访问父作用域的安全主体与受限访问权限一起添加,而不管其父作用域上的现有权限如何。当从父作用域上的受限访问权限级别中移除一个安全主体时,将从受限访问权限级别中移除该安全主体在每个子作用域内对应的所有实例,而不管该安全主体在子作用域上是具有受限访问权限
14、还是具有一组更大的权限。二进制 ACL二进制 ACL 执行用户令牌快速对比,以确定用户是否应具有对作用域覆盖的对象的访问权。只要作用域的成员资格发生更改,就会计算二进制 ACL包括在添加新的受限访问成员时。随着成员资格的提升,计算二进制 ACL 所需的时间也会增加,并将阻止访问对象,直到可以重新计算 ACL。虽然除了 SQL Server 中设定的最大图像列大小之外,二进制 ACL 没有明确的大小限制,但有些服务无法接受大于 64KB 的 ACL。在此情况下,二进制 ACL 中安全主体的数目也许能变得非常大,但出于性能和互操作性方面的考虑,还是应限制该数目。有关 SQL Server 中图像列大小限制的信息,请参阅 ntext、text 和 image 。避免常见 FGP 限制问题的最佳实践在使用细化权限时,很容易意外碰到阻止解析权限的限制。列表中的作用域过多每个列表或文档库均存在 50,000 个作用域的内置限制。在达到 50,000 个作用域后,将禁止向给定列表或文档库内添加新的作用域。在 SharePoint 2010 产品中,可使用 Windows PowerShell 脚本修改内置作用域