SharePoint-Berechtigungsstufe kopieren und einschränken

Die Erstellung neuer Berechtigungsstufen (SPRoleDefinition) und vollständiger Definition der Standardberechtigungen (SPBasePermissions) mittels PowerShell ist in wenigen Zeilen Code erledigt. Geringfügig komplexer wird es, will man anhand einer Vorhandenen eine neue Berechtigungsstufe erstellen und lediglich einen einzigen Berechtigungssatz entziehen.
Sicher wäre es ein Einfaches eine neue Berechtigungsstufe unter Aufzählung aller zu gewährenden Rechte anzulegen… gilt es dabei jedoch die bereits definierten Berechtigungen einer Rolle als Vorlage zu verwenden oder eine relativ weitgehend berechtigte Rolle zu erstellen, kommt man mit diesem Ansatz nur über Umwege ans Ziel.

Da die einer Rolle zugewiesenen Berechtigungen in der Berechtigungsstufe als Bitmaske gespeichert werden, ist ein bitweises XOR das Mittel der Wahl: Mit Hilfe des PowerShell-Operators -bXor kann eine einzelne Berechtigung von der vorgegebenen Berechtigungsmaske abgezogen werden.

# open the desired website
$spWeb = Get-SPWeb "URL-to-SharePoint-Web"

# get the originating role definition from the website using the name of the role definition
$spRoleDefAdmin = $spWeb.RoleDefinitions["Vollzugriff"]

# create the new role definition from the template specified above
$spRoleDefAdminReduced = New-Object Microsoft.SharePoint.SPRoleDefinition ($spRoleDefAdmin)

# just some naming stuff
$spRoleDefAdminReduced.Name = $spRoleDefAdmin.Name + " ohne Benutzermanagement"
$spRoleDefAdminReduced.Description = $spRoleDefAdmin.Description.Replace(".", "") + " ohne Benutzermanagement."

# first check, if permission is included in new role definition…
if ($spRoleDefAdminReduced.BasePermissions -band [Microsoft.SharePoint.SPBasePermissions]::ManagePermissions)
{
    # …if so, subtract permission by a bitwise OR (exclusive) operation
    $spRoleDefAdminReduced.BasePermissions = ( $spRoleDefAdminReduced.BasePermissions-bxor [Microsoft.SharePoint.SPBasePermissions]::ManagePermissions )
}

# add the new role definition to the desired website
$spWeb.RoleDefinitions.Add($spRoleDefAdminReduced)

Im Beispiel wird die Berechtigungsstufe “Vollzugriff” (FullMask) als Vorlage für die neue Rolle verwendet, welcher anschließend die Berechtigung “Berechtigungen verwalten” (ManagePermissions) entzogen wird.

Über Thomas Roschinsky
Software Engineer | .NET | SharePoint | Dynamics CRM | BI | C# | C/C++

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: