SharePoint Security: Hard limits and recommended practices

This summarizes the hard limits and recommended guidance for Groups, Access Control Lists (ACLs) and securable objects in SharePoint 2007.

Unique accounts or groups per SharePoint Group: ~2000. This is the identical with the guidance for any large SharePoint list as covered by the Working with large lists in Office SharePoint Server 2007 whitepaper. Lists can handle thousands of items, but performance of a Views (i.e. while viewing or updating membership) will degrade after 200 items and become unacceptable towards 2000 because the underlying SQL queries are not paged or filtered. Note that the next limitation (see Users per SharePoint ACL, below) will affect the ability to index any item (or list) you apply such a large ACL to. Resolution: Use a third-party tool to manage large SharePoint Groups or re-think your design to include AD groups. Mitigation: When possible, rather than assigning users membership in a SharePoint Group, assign users to an AD group and then assign the AD group membership to the SharePoint Group.

Users per SharePoint ACL: Query results must not exceed 64k, or ~1000 users per ACL. When exceeded, the "Parameter is incorrect" error is thrown causing crawling to fail on the item. This issue affects indexing, but does not otherwise affect SharePoint. The limit is noted by Joel Oleson in the comments of a "2003 to 2008 security changes" post and the Best Practices for SharePoint Search article on TechNet. The issue is not SharePoint-specific and will affect any content crawled with large ACLs including file system objects like Network Shares. KB article 885482 describes the cause as "The maximum buffer size of the InitializeAcl function is 64 KB. Therefore, the maximum size of an ACL in Windows, including the access control entries (ACEs) that are contained in the ACL, is 64 KB." Resolution: Either exclude the item from indexed content, or remove entries from the ACL. Mitigation: This is a rare issue normally avoided through sound design. However, since AD groups are not expanded when the ACL is read, assigning individuals to AD Groups rather than SharePoint Groups will mitigate the limit.

Active Directory groups per-user: 1024. Each membership increases a user's "SID count" and the limit on the token bag is 1024. When the limit is exceeded the error reads, "During a logon attempt, the user’s security context accumulated too many security IDs." The whitepaper Addressing Problems Due to Access Token Limitation discusses the issue in depth, and KB 906208 describes the error. Consider this limit if AD groups are to be used to manage SharePoint groups. Resolution: Remove the users from one or more AD groups to reduce the SID count. You can verify the issue with the Group Membership Evaluation feature of the Ntdsutil.exe tool. Mitigation: Manage users in SharePoint Groups rather than AD groups if growth would require any user to be a member of more than 1024 groups.

 

Recommended Guidance
The Plan for Software Boundaries whitepaper contains guidelines for "people objects" but its guidance for security principals is (politely) less-than-useful. For example, the guidance that "You can add millions of people to your Web site by using Microsoft Windows security groups to manage security instead of using individual users" says nothing about how many people can (or should) be added to a SharePoint Group and ignores the SID limits of AD groups. It would also lead you to believe that it's an acceptable option to use local Windows security groups to manage permissions rather than domain accounts. In a nutshell, that would be a bad idea if your farm will ever have more than one server.

There are many MSDN and TechNet articles with recommendations on what granularity of permissions is "right" but the one simply named Plan site security is the most detailed and provides the best example. To summarize and disambiguate the best practices and recommendations:

  1. If many securable objects share the same ACL, then group them into a container with that ACL. This applies equally to list items within lists, or libraries within sites. If the permission change is a temporary state in a securable object's lifecycle (for example to assign reviewer permissions during a workflow) then reset the permissions to inherited when the temporary state is complete (e.g. at the end of the workflow). [Update 2008-09-12 TB] Avoid unique permissions on folders, as Flat views will not secure folder content as expected.

  2. The more ACLs you create, the more ACLs you have to manage. I know, I know, it's self-evident, no? How I wish it were. A problem of some articles is that they can be interpreted to recommend moving the problem rather than solving it. For example: "Minimize the use of custom or fine-grained permissions. The more fine-grained permissions that are applied, the more difficult it is to track who has access to what." Well duh. The problem is that not applying permissions does not remove the business need to have permissions. If the issue is the tools and not the limits of the platform, the correct guidance should be "if management or reporting tools don't work the way you want. . . ." Better, it deserves to be a recommendation of its own.

  3. If management or reporting tools don't work the way you want, then build or buy better management or reporting tools. DeliverPoint is one option. [I'll continue update this post as others are suggested.]

  4. Understand the strengths and weaknesses of managing users in SharePoint Groups vs. Active Directory. A strength of SharePoint Groups is allowing the same people responsible for building teams in an enterprise to form their own groups. IT has been the bottleneck for too long. Advantages of SharePoint groups are decentralized maintenance, isolation by Site Collection, the ability to query it with the API without adding to DC load, and the ability to integrate it as necessary with external Authorization Providers (AD, FBA, etc.). This last point makes SharePoint groups preferable for extranets and mixed authentication zones, allowing internal users to authenticate through AD and external users through another AuthZ provider.

    AD Domain Groups may be preferred for central management and a standardization of tools. Unfortunately these tools are not usually built for or available to users outside of IT and support services. AD groups are also not visible from within SharePoint without custom code or third-party components.

    Unless your AD groups are subject to strict discipline so that "Help Desk" only contains people from Help Desk, and not people who for any reason one day needed access to the Help Desk's files (e.g. senior management or Gladys from accounting), it is best to start fresh with new AD groups for SharePoint. Since 95% of companies did not have that discipline when securing network shares, you should start fresh unless you can both prove that your AD groups are clean, and policies are in place so groups will not be corrupted when people start applying them to SharePoint.

    [Update 2008-09-12: This entire section was rewritten based on TB's suggestions. The earlier version preferred ADGroups to SPGroups solely by virtue of central management.]

  5. If you break inheritance on many lists for the same users, clean up duplicate Limited Access entries in the containing site. When you configure a list or list item to use unique permissions and add a user to it who is not listed as a member of the site, so as to not break navigation the user is automagically given Limited Access -- bare-minimum read access -- to the site that contains the list. All fine and dandy until it hapens again and a duplicate entry is created. Resolution: Remove the duplicate entries by hand or automated utility.

  6. Do right for the Business. Sometimes to meet a business need you need to break from the recommended guidance. There is "recommended guidance," and then there are hard limits imposed by the platform that you should not break without raising flags and shooting off fireworks. The appropriate solution may be at odds with "recommended guidance" and that's okay. Your goal is to simulate the business, not to change the business. When conflict happens, help the business understand its choices. Make any conflict crystal clear to the people paying the bills and suggest alternatives. If the conflict is a hard platform limit with an eventual breaking point, provide all the options to mitigate the issue and make sure that the person with the power to make the decision understands the eventual consequence of the decision. You cannot stop someone above you in the food chain from blowing his or her own foot off. This is natural selection. You can only prove that you asked them not to, and escalated alerts to the issue as danger became imminent.

Thanks to Dennis Shtemberg from Infusion for getting the ball rolling with his research on uniquely-permissioned items per list, Todd Klindt for a great dialogue, corrections and help to tease apart the issues, Todd Bleeker for taking the time to review this post and make it better, and Joel Oleson and Keith Richie for their clarifying the ACL issue and their earlier work on the subject. Todd and Keith are co-authors of DeliverPoint.

 

Fixed or Unproved [Last Updated: 2008-09-26]

This section contians the guidance that either no longer applies, or never did.

Unique list-item permissions per list: 600 to 1000. Resolved by WSS and MOSS SP1. When you assign unique permissions to list items in a given list, when the critical point is exceeded the error is displayed: "Operation is not valid due to the current state of the object" and the following event is logged in Event Viewer: "Unknown SQL Exception 156 occured. Additional error information from SQL Server is included below. Incorrect syntax near the keyword 'SET'. Incorrect syntax near ')'. Incorrect syntax near the keyword 'with'. If this statement is a common table expression or an xmlnamespaces clause, the previous statement must be terminated with a semicolon." Resolution: When any list item with unique permissions is deleted, the list works again. When any list item with inherited permissions is deleted, the issue persists. Mitigation: If many items will share the same ACLs, then group them into a separate list or library and apply the ACL to the list or library. If the permission change is a temporary state in a list item's lifecycle (for example to assign reviewer permissions during a workflow) then reset the permissions to inherited when the temporary state is complete (e.g. at the end of the workflow). 

Users listed in a Site Collection's User Info Gallery (aka SPWeb.SiteUsers): 1500 to 2000. No evidence can be found to support this guidance, and believe it to be a misinterpretation of the limit on ACL size. If you've been affected, please comment with further detail. 

A user is added to this list (and assigned an ID unique to the Site Collection) when a user is a) explicitly assigned a permission level on a securable object, or b) when a user is named as a member of either a SharePoint group or an Active Directory (AD) Group and that group is assigned a permission level on a securable object and the user then contributes to the site. Note that prior to WSS 3.0, just visiting a site added the member to the list, and now the user needs to actually contribute. When a user is deleted from the list either through the API or the User Info Gallery, the entry is marked "Deleted" but not removed [Update 2008-09-12: Corrected by KR]. Resolution: If you pass the limit, you need to remove users from the list. The difficulty is figuring out which are no longer listed in Created By and Last Modified By fields. Displaying or editing a list item with a reference to a deleted entry results in an error. Mitigation: 1) Create Site Collections such that each will serve up to 1000 contributors. [Deleted: "Create AD groups for readers." Not necessary as readers aren't added to the list.] Monitor the size of the SiteUsers list, and consider routines to prune rows from it where contributors are no longer named on sites in the collection (e.g. in Created By, Modified By, or Assigned To columns). 2) Either assign AD groups, or a combination of AD groups and individual users (the exceptions who do not logically belong in the AD group) to SharePoint Groups unless this will lead to SID count issues (see Active Directory Groups per User, below).

 

Published Thursday, September 11, 2008 11:24 PM by erobillard

Comments

# funny wallpaper » SharePoint Security: Hard limits and recommended practices

Pingback from  funny wallpaper » SharePoint Security: Hard limits and recommended practices

Friday, September 12, 2008 9:24 AM by John Holliday

# re: SharePoint Security: Hard limits and recommended practices

Great post.  Your second bullet point under the "Recommended Guidance" section seems to be truncated.  It ends with "the correct guidance should be:".

Friday, September 12, 2008 10:59 AM by SharePoint Daily

# SharePoint Daily for September 12, 2008

Don't forget, The Mindsharp Best Practices Conference is next week, September 15-17 in McLean, Virginia

Friday, September 12, 2008 12:59 PM by erobillard

# re: SharePoint Security: Hard limits and recommended practices

Hi John, the point wasn't truncated, it just wasn't clear that the next point was the answer. Updated, thanks for the catch!

-Eli.

Monday, September 15, 2008 9:45 AM by Mark Miller

# re: SharePoint Security: Hard limits and recommended practices

Eli - This stuff is so hard to come by in the common threads. Thanks for posting. I'd like to do a graphical representation so it can be included in a workshop slide. Have you got something like that or do I need to create one from scratch?

Regards,

Mark

EndUserSharePoint.com

Monday, September 15, 2008 6:14 PM by Howard

# re: SharePoint Security: Hard limits and recommended practices

Great post!  For the issue of "Unique list-item permissions per list: 600 to 1000", what types of problems can arise?  Can you elaborate and give some scenarios on how to reproduce the problems you've seen?  We did a quick test of creating 1,000 plus items in a list, broke inheritance for each item (granted every item still has the same permission set) and didn't see any problems.

Thanks,

Howard

Tuesday, September 16, 2008 2:33 PM by Diegoop

# re: SharePoint Security: Hard limits and recommended practices

Great post! You've saved my life with it!

Greetings,

Diego.

Wednesday, September 17, 2008 10:34 AM by SR

# re: SharePoint Security: Hard limits and recommended practices

Very good info. Our company has hit one of the above mentioned limits. We have a doc library with 1000+ documents, each with document level security. We found that when the library reached above 900 or so objects with unique permissions, the breadcrumb for navigating within the folders of the doc library, broke. It would show the top 2 folders in the breadcrumb path, but as you traversed thru folders, the path would not display your current folder. We are working with Microsoft to get a hotfix for this issue. Just an FYI.

Wednesday, September 17, 2008 3:04 PM by John

# re: SharePoint Security: Hard limits and recommended practices

I am going to rewrite my client's mission-critial internet-facing SharePoint (MOSS 2007) Application (that I just spent the last year "building") in straight ASP.NET where the limite ars 100000 times better.

Thursday, September 18, 2008 12:13 PM by erobillard

# re: SharePoint Security: Hard limits and recommended practices

Hi John,

The main reason I posted this isn't to say "don't use SharePoint," it's to make sure that people have the information they need to successfully deploy  SharePoint. There are internet-facing MOSS applications with 200,000+ users that perform great, the trick is appropriate design.

Thursday, September 18, 2008 8:54 PM by Links (9/18/2008) « Steve Pietrek - Everything SharePoint

# Links (9/18/2008) « Steve Pietrek - Everything SharePoint

Pingback from  Links (9/18/2008) « Steve Pietrek - Everything SharePoint

Friday, September 19, 2008 1:23 PM by Mirrored Blogs

# SharePoint News 19/9

Nuevamente les traigo mas información para SharePoint! Developers : 1 - Using Wildcard Search Web

Tuesday, September 23, 2008 3:24 AM by Marwan Tarek

# re: SharePoint Security: Hard limits and recommended practices

good work, regarding Understand the strengths and weaknesses of managing users in SharePoint Groups vs. Active Directory, Sharepoint groups doesn't allow nested groups (SharePoint group member of another SharePoint group)

what do you think

Tuesday, September 23, 2008 5:44 PM by Blog del CIIN

# WSS 3.0 & MOSS: Recopilatorio de enlaces interesantes (XXI)!

Una vez más, os presentamos el recopilatorio (con periodicidad mensual) de recursos interesantes que

# WSS 3.0 & MOSS: Recopilatorio de enlaces interesantes (XXI)! « Pasi??n por la tecnolog??a…

Pingback from  WSS 3.0 & MOSS: Recopilatorio de enlaces interesantes (XXI)! « Pasi??n por la tecnolog??a…

# Craig Lussier » Blog Archive » SharePoint Security: Hard Limits and recommended practices

Pingback from  Craig Lussier   » Blog Archive   » SharePoint Security: Hard Limits and recommended practices

Sunday, September 28, 2008 12:15 PM by Derya Arikan

# re: SharePoint Security: Hard limits and recommended practices

Hi Eli,

First of all many thanks for this wonderful post.

We are developing a product which is supposed to run on WSS.

Under the heading "Fixed or Unproved [Last Updated: 2008-09-26]" you say that "Unique list-item permissions per list: 600 to 1000: Resolved by WSS and MOSS SP1". What is the feaseble limit for unique list item permissions after applying SP1?

Thanks again,

Derya Arikan

darikan@filika.com

Tuesday, September 30, 2008 8:46 AM by Barry

# re: SharePoint Security: Hard limits and recommended practices

Hi,

I agree that "Users listed in a Site Collection's User Info Gallery (aka SPWeb.SiteUsers): 1500 to 2000." is a miss reading of the ACL limit. I have just tested this with 2,500 user and it works without any problems.

Barry

Wednesday, October 15, 2008 8:26 AM by Srini

# re: SharePoint Security: Hard limits and recommended practices

Hi Eli

Thanks for the great post. I have a question on off topic which you have mentioned in this post. In point 1 (Recommended Guidance) you mentioned flat views will not secure folder content as expected. You mean to say people can see documents they should not? Can you elaborate a bit more.

Thanks alot

Friday, October 17, 2008 3:51 PM by Eli Robillard's World of Blog.

# Capability Checklist for Successful SharePoint

Successful deployment of SharePoint is no different than any other corporate strategy or project, only

Monday, October 20, 2008 2:52 AM by Robin

# re: SharePoint Security: Hard limits and recommended practices

Hi Eli,

thanks for updating this info! Really (x10) useful! ;)

Robin

Wednesday, December 17, 2008 5:33 PM by Lasse

# re: SharePoint Security: Hard limits and recommended practices

SR: You wouldn't happen to be still following this thread and found a solution/hotfix for the breadcrumbs breaking bug?

I'm pretty sure I'm having the same problem, including another one related to too many unique permissions; permissions not being set/inherited properly.

If anyone has any clues, could you share the info with me at the.lasse@[google's mail domain].com

Tuesday, December 23, 2008 11:21 AM by iSea (only for iPod and iTouch users)

# iSea (only for iPod and iTouch users)

Pingback from  iSea (only for iPod and iTouch users)

Tuesday, February 10, 2009 6:11 PM by Robert S

# re: SharePoint Security: Hard limits and recommended practices

I really appreciate this post and feedback.

Can anyone clarify the following?  I heard at the Best Practices conference that the limit of SP Groups per site collection is ~2000.  

I was looking to this article for clarification but come to understand that it is 2000 users per group or the flip of that 2000 groups per user (SID count).  

I am currently up to 1300 AD/SP Groups in one given site collection.

Tuesday, February 10, 2009 7:42 PM by RBS at PAE

# re: SharePoint Security: Hard limits and recommended practices

Thank you for posting this article and monitoring it.  

I recently heard at the Best Practices Conferences that there is a limit to the number of SharePoint Groups that can exist in one Site Collection.  I was hoping to get confirmation on this.  

If true, does this include all groups listed at the top level site ..._layouts/groups.aspx (AD & SP)?  

Thanks.  

# Problemas con la b??squeda de SharePoint (I) « Carlos Cano Valencia weblog

Pingback from  Problemas con la b??squeda de SharePoint (I) « Carlos Cano Valencia weblog

Monday, March 09, 2009 12:19 PM by Cathy

# re: SharePoint Security: Hard limits and recommended practices

We are in the position of implementing AD and Sharepoint in the same year. As a result, we have the ability to structure AD and privileges with Sharepoint in mind. That being said, I am assuming that the more we do in AD, the better provided we can use a tool like ILM to control access with granular administrative privileges. Am I ridiculously naive?

Tuesday, April 07, 2009 1:20 AM by Eli Robillard's World of Blog.

# Preview: The practical limits of people and SharePoint

I'm in Montreal for SharePoint Summit 2009 , thinking about the session I'm delivering on Tuesday afternoon

Thursday, May 07, 2009 12:36 PM by Aaron Stillwell

# re: SharePoint Security: Hard limits and recommended practices

We specialize in a enterprise solution that allows organizations to securely extend SharePoint to the extranet. Much more than a provisioning tool, we offer security, compliance and auditing features to insure a scalable and secure SharePoint extranet deployment.

Our clients include the US Air Force, Praxair, Covanta Energy & University of Pittsburgh Medical Center.

For more info, please go to www.epok.net/webinar_list.html to view our pre-recorded webinars.

Wednesday, September 30, 2009 8:30 PM by Robert Sandoval

# re: SharePoint Security: Hard limits and recommended practices

Is there a limit to the number of SP Groups per Site Collection?  

Thursday, October 08, 2009 11:32 AM by Eli Robillard's World of Blog.

# Eli's SharePoint 2007 Resources

What's Here Welcome to my list of SharePoint 2007 Resources! This is a hub for SharePoint 2007 and WSS

Tuesday, October 13, 2009 11:04 AM by J-F Mathieu

# re: SharePoint Security: Hard limits and recommended practices

Hi,

Thanks for the great article. I like to follow-up on the "[Update 2008-09-12 TB] Avoid unique permissions on folders, as Flat views will not secure folder content as expected."

I have test with a secure folder and a flat with on SharePoint SP2 and it seems that everything work fine. Do you have more info on this ? Is it still true ?

Thank you

Tuesday, October 13, 2009 12:15 PM by Brandon B.

# re: SharePoint Security: Hard limits and recommended practices

Is there anyway to actually "see" the size of the ACL?  Everyone keeps talking about the 64K limit but no one seems to know how to actually see its size.

Wednesday, October 14, 2009 9:30 PM by Confluence: SharePoint 2010 Development Wiki

# User Profile + UserInfo table limitations

In MOSS2007 there are significant limitations to utilizing AD Groups for applying permissions due to the way that UserInfo table works. UserInfo sync The User Profiles will crawl the AD based on an LDAP query and pull in the AD Users....

Thursday, January 14, 2010 6:59 PM by ??ghyBlog » links for 2008-10-08

# ??ghyBlog » links for 2008-10-08

Pingback from  ??ghyBlog » links for 2008-10-08

Leave a Comment

(required) 
(required) 
(optional)
(required)