SharePoint Security Fundamentals Primer / Avoid Common Pitfalls

UPDATE 12/18/07: See Paul Liebrand’s article for some technical consequences of removing or modifying the default group names (see his comment below as well). 

Overview:

SharePoint security is easy to configure and manage.  However, it has proven to be difficult for some first-time administrators to really wrap their hands around it.  Not only that, I have seen some administrators come to a perfect understanding on Monday only to have lost it by Friday because they didn’t have to do any configuration in the intervening time.  (I admit to having this problem myself).  This blog entry hopefully provides a useful SharePoint security primer and points towards some security configuration best practices.

Important Note:

This description is based on out of the box SharePoint security.  My personal experience is oriented around MOSS so there may be some MOSS specific stuff here, but I believe it’s accurate for WSS.  I hope that anyone seeing any errors or omissions will point that out in comments or email me.  I’ll make corrections post haste. 

Fundamentals:

For the purposes of this overview, there are four fundamental aspects to security: users/groups, securable objects, permission levels and inheritance.

Users and Groups break down to:

  • Individual users: Pulled from active directory or created directly in SharePoint.
  • Groups: Mapped directly from active directory or created in SharePoint.  Groups are a collection of users.  Groups are global in a site collection.  They are never "tied" to a specific securable object.

Securable objects break down to at least:

  • Sites
  • Document libraries
  • Individual items in lists and document libraries
  • Folders
  • Various BDC settings.

There other securable objects, but you get the picture.

Permission levels: A bundle of granular / low level access rights that include such things as create/read/delete entries in lists. 

Inheritance: By default entities inherit security settings from their containing object.  Sub-sites inherit permission from their parent.  Document libraries inherit from their site.  So on and so forth.

Users and groups relate to securable objects via permission levels and inheritance.

The Most Important Security Rules To Understand, Ever 🙂 : 

  1. Groups are simply collections of users.
  2. Groups are global within a site collection (i.e. there is no such thing as a group defined at a site level).
  3. Group name not withstanding, groups do not, in and of themselves, have any particular level of security. 
  4. Groups have security in the context of a specific securable object. 
  5. You may assign different permission levels to the same group for every securable object.
  6. Web application policies trump all of this (see below).

Security administrators lost in a sea of group and user listings can always rely on these axioms to manage and understand their security configuration.

Common Pitfalls:

  • Group names falsely imply permission: Out of the box, SharePoint defines a set of groups whose names imply an inherent level of security.  Consider the group "Contributor".  One unfamiliar with SharePoint security may well look at that name and assume that any member of that group can "contribute" to any site/list/library in the portal.  That may be true but not because the group’s name happens to be "contributor".  This is only true out of the box because the group has been provided a permission level that enables them to add/edit/delete content at the root site.  Through inheritance, the "contributors" group may also add/edit/delete content at every sub-site.  One can "break" the inheritance chain and change the permission level of a sub-site such that members of the so-called "Contributor" group cannot contribute at all, but only read (for example).  This would not be a good idea, obviously, since it would be very confusing.
  • Groups are not defined at a site level.  It’s easy to be confused by the user interface.  Microsoft provides a convenient link to user/group management via every site’s "People and Groups" link.  It’s easy to believe that when I’m at site "xyzzy" and I create a group through xyzzy’s People and Groups link that I’ve just created a group that only exists at xyzzy.  That is not the case.  I’ve actually created a group for the whole site collection.
  • Groups membership does not vary by site (i.e. it is the same everywhere the group is used): Consider the group "Owner" and two sites, "HR" and "Logistics".  It would be normal to think that two separate individuals would own those sites — an HR owner and a Logistics owner.  The user interface makes it easy for a security administrator to mishandle this scenario.  If I didn’t know better, I might access the People and Groups links via the HR site, select the "Owners" group and add my HR owner to that group.  A month later, Logistics comes on line.  I access People and Groups from the Logistics site, add pull up the "Owners" group.  I see the HR owner there and remove her, thinking that I’m removing her from Owners at the Logistics site.  In fact, I’m removing her from the global Owners group.  Hilarity ensues.
  • Failing to name groups based on specific role:  The "Approvers" group is a perfect example.  What can members of this group approve?  Where can they approve it?  Do I really want people Logistics department to be able to approve HR documents?  Of course not.  Always name groups based on their role within the organization.  This will reduce the risk that the group is assigned an inappropriate permission level for a particular securable object.  Name groups based on their intended role.  In the previous HR/Logistics scenario, I should have created two new groups: "HR Owners" and "Logistics Owners" and assign sensible permission levels for each and the minimum amount required for those users to do their job.

Other Useful References:

If you’ve made it this far:

Please let me know your thoughts via the comments or email me.  If you know other good references, please do the same!

Technorati Tags:

8 thoughts on “SharePoint Security Fundamentals Primer / Avoid Common Pitfalls

  1. Perry

    More pitfalls:

    * There are certain special permissions available elsewhere in the SSP and not visible in the People and Groups section: "Personalization services permissions"and "Business Data Catalog permissions"

    * I have read that there are also special SharePoint Designer permissions available in some arcane xml buried inside html somewhere.

    * The Primary and Secondary Administrators for a Site Collection are kept elsewhere in Site Collection settings, and are not visible in the People and Groups section.

    * Certain accounts have magical (special) abilities regardless of what you see in the People and Groups area: members of the built-in Administrators group on the web servers, and the Farm Service Account.

    (PS: Deleting the spam comments would improve legibility here.)

    Reply
  2. Jean Wright
    This is a very good post. I have fallen into this trap on a few occasions. Security management can get complex when you begin mixing authentication methods and different security grouping methods. This needs to be considered as part of the planning process and should not be overlooked.
    Reply
  3. Mark Miller wrote:
    (Note from Paul: Mark asked me to make a small change to his comment but I can’t edit live spaces comments so I’ve added it anew here with the change and deleted the original).
     
    Paul,
     
    The summary approach for presenting this info came off very well. I especially liked the "Pitfalls" section, since I’ve fallen into a few of those myself.
     
    Another thing you said hit home: learning on Monday doesn’t not necessarily mean you’ll remember it on Friday. I’m glad someone besides me is using their blog as a "tickler" system for those critical things that are not done on a regular basis.
     
    Good work.
     
    Regards,
    Mark
    EndUserSharePoint.com
     

    November 27 9:04 AM
    (http://www.EndUserSharePoint.com)

    Reply
  4. Paul Galvin
    I think it’s probably a good idea to remove those default groups, especially Contributor and Owner.  They are overbroad and easily confused.  I prefer to use "All Authenticated Users" in place of a "Visitor" group as well.  If a specific set of users should only read-only access then I’d recommend creating an AD group or SharePoint group with an appropriately descriptive name, e.g. "Logistics Visitors".
     
    –Paul G
     
    Reply
  5. No name
    It sounds like the first thing you should do is just dump the Visitor, Contributor and Owner groups and replace them with your own logical groups. Would this make sense to do?
    Reply

Leave a Reply to Paul Liebrand Cancel reply

Your email address will not be published. Required fields are marked *