Nachdem in den letzten Tagen einige der m”glichen neuen Features von SharePoint 2009 bekannt wurden und ich mich u.a. in Kommentaren zu „hnlichen Beitr„gen zu diesem Thema und den m”glichen Field Level Permissions ge„uáert habe, kamen einige Mails bei mir an, in denen ich gefragt wurde, was es denn genau mit diesen beiden Permissions auf sich hat. Da dieses Thema sicher auch fr anderen Leser dieses Blogs interessant ist, beantworte ich die Fragen mit einem Blog-Artikel:
Legt man in einem SharePoint-Portal ein neues Web an in dem sich z.B. eine SharePoint-Liste befindet, dann erbt die Liste die Berechtigungseinstellungen des Webs. Dies bedeutet: ein Benutzer, der im bergeordneten Web Berechtigungen hat, hat diese Berechtigungen auch auf der SharePoint-Liste. Diese Standardeinstellung kann man durch Brechen der Berechtigungsvererbung ver„ndern. Man kann also einem Benutzer andere Rechte auf der SharePoint-Liste einr„umen, als dieser Benutzer im bergeordneten Web hat.
Diese Rechte gelten dann aber immer fr die gesamte Liste. R„umt man also einem Benutzer Schreibrechte ein, gelten seine Schreibrechte fr alle Eintr„ge (Items) in der SharePoint-Liste. Naja – zugegeben, so ganz stimmt diese Aussage jetzt nicht, denn man kann z.B. durch die folgende Einstellung noch Einfluss auf die individuelle Rechtevergabe nehmen, aber mir geht es in diesem Artikel um das grunds„tzliche Vergeben von Berechtigungen und nicht um Spezialf„lle.

Also – abgesehen von der Einstellung im obigen Screenshot kann man einem Benutzer ber die SharePoint-Oberfl„che also nur Berechtigungen auf die komplette SharePoint-Liste mit allen Eintr„gen (Items) einr„umen.
Dies ist natrlich nicht immer sinnvoll und es gibt zum Glck die M”glichkeit, einem Benutzer Rechte auf einzelne Eintr„ge (Items) in einer SharePoint-Liste zu gew„hren. Dies nennt man dann Item Level Permissions. Bedeutet: man kann einem Benutzer z.B. Schreibrechte auf den ersten, den fnften und den zw”lften Eintrag in einer SharePoint-Liste gew„hren – auf alle anderen Eintr„ge hat dieser Benutzer aber weiterhin nur Leserechte. Dies kann man ber das Kontextmen eines Eintrags oder auch ber das SharePoint-SDK machen. Im folgenden Absatz zeige ich anhand von ein paar Zeilen Code, wie man das mit den Item Level Permissions macht:
private void setListItemPermission(ref SPListItem oListItem)
{
SPWeb oWeb = SPControl.GetContextWeb(Context);
if (false == oListItem.HasUniqueRoleAssignments)
{
oListItem.BreakRoleInheritance(true);
}
SPGroupCollection oGroupCollection = oWeb.Groups;
SPGroup oGroupProjektleiter = oGroupCollection["Projektleiter"];
oListItem.RoleAssignments.Remove((SPPrincipal)oGroupProjektleiter);
SPUser oProviderGroupProjektleiter = oWeb.EnsureUser("aspnetsqlroleprovider:projektleiter");
SPRoleDefinition oRoleDefWriter = oWeb.RoleDefinitions.GetByType(SPRoleType.Contributor);
SPRoleAssignment oRolePortalWriter = new SPRoleAssignment((SPPrincipal)oProviderGroupProjektleiter);
oRolePortalWriter.RoleDefinitionBindings.Add(oRoleDefWriter);
oListItem.RoleAssignments.Add(oRolePortalWriter);
oListItem.Update();
}
So – jetzt wissen wir, wie man das mit den Item Level Permissions macht, aber was ist jetzt der Unterschied zu Field Level Permissions?
Die Field Level Permissions gehen noch einen Schritt weiter (sind aber leider in SharePoint 2007 nicht implementiert und deswegen auch nicht nutzbar): statt einzelne Berechtigungen auf einen Eintrag in einer SharePoint-Liste zu vergeben (wie es mit den Item Level Permissions m”glich ist), kann man mit Field Level Permissions Berechtigungen auf ein einzelnes Feld eines Eintrags vergeben.
Dazu ein Beispiel: angenommen wir haben eine SharePoint-Liste in der Projektpl„ne verwaltet werden. Diese Projektpl„ne haben -neben den Feldern fr Termine, Beschreibung, Resourcen, … – auch noch ein Feld 'Budget'. Alle Projektleiter haben Schreibrechte auf diese Liste, damit sie die einzelnen Projektpl„ne aktualisieren k”nnen, nur das Feld 'Budget' drfen sie nicht beschreiben. Dieses Feld 'Budget' soll nur vom Abteilungsleiter ver„ndert werden drfen. Dieses -einfache- Szenario ist so mit SharePoint 2007 nur schwer umsetzbar. G„be es Field Level Permissions, dann w„re die Umsetzung wesentlich einfacher, denn man máte nur die Spalte 'Budget' in der Projektliste entsprechend verrechten.
Um es noch einmal einfacher auszudrcken: mit Item Level Permissions kann man separate Berechtigungen auf einen Eintrag (Item) oder eine Zeile in einer SharePoint-Liste vergeben. Mit Field Level Permissions kann man individuelle Berechtigungen auf ein einziges Feld in diesem Eintrag (bzw. dieser Zeile) in einer SharePoint-Liste vergeben.
Gerade im Bereich Zusammenarbeit (Collaboration), in dem oft Daten in tabellarischer Form von verschiedenen Benutzern bearbeitet werden, w„ren Field Level Permissions sehr hilfreich, denn sie wrden das Implementieren von Anforderungen mit SharePoint-Listen sehr vereinfacher. Viele Anforderungen, die heute nur sehr aufw„ndig umzusetzen sind, lieáen sich mit Field Level Permissions out-of-the-box umsetzen.
Und genau aus diesem Grund wnsche ich mir fr SharePoint 2009 die Umsetzung der Field Level Permissions.