Absichern von Webparts in SharePoint Foundation
Letzte Änderung: Dienstag, 2. November 2010
Gilt für: SharePoint Foundation 2010
Inhalt dieses Artikels
Codezugriffssicherheit
Vordefinierte Sicherheitseinstellungen
Erstellen einer Richtlinie für die Codezugriffssicherheit (CAS)
In Microsoft SharePoint Foundation bieten Webparts Benutzern umfassende Möglichkeiten, mit anderen Systemen zu kommunizieren. SharePoint Foundation weist vordefinierte Sicherheitseinstellungen auf, um den Zugriff zu beschränken, den ein Webpart auf zugrunde liegende Systeme hat. Ein Entwickler kann benutzerdefinierte Sicherheitsrichtliniendateien erstellen, um einem Webpart einen umfassenderen Zugriff auf das zugrunde liegende System zu ermöglichen.
Webparts können auch in einer Lösung mit eingeschränkter Sicherheitsstufe erstellt werden. Eine Lösung mit eingeschränkter Sicherheitsstufe hat standardmäßig einen beschränkten Zugriff auf das zugrunde liegende System, was eine höhere Sicherheit und bessere Überwachung des Webparts erlaubt. Weitere Informationen zu Lösungen mit eingeschränkter Sicherheitsstufe finden Sie unter Sandkastenlösungen.
Codezugriffssicherheit
Codezugriffssicherheit (Code Access Security, CAS) ist ein Richtlinienmodell zur Ressourceneinschränkung, das den Zugriff einer Assembly auf geschützte Systemressourcen und -vorgänge einschränkt. SharePoint Foundation bietet vordefinierte Sicherheitsrichtlinien, die auf den integrierten Sicherheitsrichtlinien von ASP.NET aufbauen. Standardmäßig wird in SharePoint Foundation ein Mindestsatz von Berechtigungen verwendet. Dadurch sollen der Server und die zugrunde liegende Infrastruktur vor bösartigem Code geschützt werden.
Wenn Ihr Webpart einen umfassenderen Zugriff benötigt, als die Mindesteinstellungen zulassen, gibt es verschiedene Möglichkeiten zum Erhöhen der Berechtigung des Webparts, von denen aber nur eine empfohlen wird. Sie können eine benutzerdefinierte CAS-Richtlinie für das Webpart erstellen oder die allgemeine Vertrauensebene der Serverfarm in der Datei web.config erhöhen. Dies stellt ein Sicherheitsrisiko dar und wird nicht empfohlen. Weitere Informationen zur Bereitstellung finden Sie unter Bereitstellen von Webparts in SharePoint Foundation.
Vordefinierte Sicherheitseinstellungen
SharePoint Foundation ist standardmäßig eine teilweise vertrauenswürdige Anwendung. SharePoint Foundation kann die vordefinierten ASP.NET-Vertrauensebenen verwenden, definiert jedoch auch eigene Vertrauensebenen:
WSS_UserCode
WSS_Minimal
WSS_Medium
Diese Vertrauensebenen erweitern die ASP.NET-Vertrauensebenen für die Verwendung mit SharePoint Foundation. Vertrauensebenen werden in Richtliniendateien definiert, die sich im Dateisystem auf jedem Webserver befinden.
Wichtig Standardmäßig befinden sich die vordefinierten SharePoint Foundation-Richtliniendateien in SharePoint Foundation mit den Namen wss_usercode.config, wss_minimaltrust.config und wss_mediumtrust.config im Verzeichnis %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\CONFIG.
Standardmäßig wendet SharePoint Foundation die Vertrauensebene WSS_Minimal auf den virtuellen Server an. Diese Vertrauensebene gewährt sämtliche Berechtigungen der ASN.NET-Vertrauensebene Minimal und lässt Webpartverbindungen zu. Die Richtlinie WSS_Minimal schränkt den Zugriff des Webparts auf viele Ressourcen für erweiterte Vorgänge ein, einschließlich Objektmodell und Dateivorgänge.
Die Vertrauensebene WSS_Medium lässt einen umfassenderen Zugriff auf die Umgebung zu. Ferner ermöglicht WSS_Medium den Zugriff auf das SharePoint Foundation-Objektmodell und Dateivorgänge wie Lesen, Schreiben, Anfügen und Pfadsuche. Diese Vertrauensebene erlaubt auch den Zugriff auf Umgebungsvariablen.
Die folgende Tabelle enthält die spezifischen Berechtigungen, die mit den Richtliniendateien WSS_Medium, WSS_Minimal und WSS_UserCode in der ASP.NET 2.0-Umgebung erteilt werden.
Berechtigung |
WSS_Medium Vertrauensebene |
WSS_Minimal Vertrauensebene |
WSS_UserCode (Sandkastenlösungen) Vertrauensebene |
---|---|---|---|
Mittel |
Minimal |
Minimal |
|
Nicht eingeschränkt=”True” |
Keine |
Keine |
|
Lesen=”TEMP; TMP;USERNAME;OS;COMPUTERNAME” |
Keine |
Keine |
|
Lesen, Schreiben, Anfügen, Pfadsuche, Anwendungsverzeichnis |
Keine |
Keine |
|
AssemblyIsolationByUser, Unrestricted UserQuota |
Keine |
Keine |
|
Standardmäßig drucken |
Keine |
Keine |
|
Assertion, Ausführung, ControlThread, ControlPrincipal, RemotingConfiguration |
Ausführung |
Ausführung |
|
ObjectModel=”True” |
Keine |
ObjectModel=”True”, UnsafeSaveOnGet=”True” |
|
Access=”Connect” |
Keine |
Keine |
|
Nicht eingeschränkt=”true” |
Keine |
Keine |
|
Connections=”True” |
Connections=”True” |
Keine |
|
Mit Ursprungshost verbinden (falls konfiguriert) |
Keine |
Keine |
Hinweis |
---|
Weitere Informationen zur Codezugriffssicherheit finden Sie in unter Verwenden der Codezugriffssicherheit mit ASP.NET und Sicherheitsrichtlinien für .NET Framework 2.0. |
Erstellen einer Richtlinie für die Codezugriffssicherheit (CAS)
SharePoint Foundation bietet die Möglichkeit, eine CAS-Richtliniendatei mit einer Lösung bereitzustellen. Es wird empfohlen, die Berechtigungen für Sandkastenlösungen gemäß der Liste in der Datei wss_usercode.config zu verwenden. Sie können jedoch auch benutzerdefinierte Berechtigungen für Ihre Webparts erstellen und SharePoint Foundation für die Bereitstellung verwenden.
Das folgende Codebeispiel zeigt die grundlegende Struktur einer CAS-Richtliniendatei in einem SharePoint Foundation-Lösungspaket.
<CodeAccessSecurity>
<PolicyItem>
<PermissionSet
class="NamedPermissionSet"
version="1"
Description="Permission set for custom test WebParts">
<IPermission
class="AspNetHostingPermission"
version="1"
Level="Minimal"
/>
<IPermission
class="SecurityPermission"
version="1"
Flags="Execution"
/>
<IPermission
class="Microsoft.SharePoint.Security.SharePointPermission,
Microsoft.SharePoint.Security, version=11.0.0.0,
Culture=neutral, PublicKeyToken=71e9bce111e9429c"
version="1"
ObjectModel="True"
/>
<IPermission
class="System.Net.WebPermission, System,
version=1.0.5000.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" version="1">
<ConnectAccess>
<URI uri="https?://.*" />
</ConnectAccess>
</IPermission>
<IPermission
class="System.Security.Permissions.SecurityPermission,
mscorlib, version=1.0.5000.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"
version="1"
Flags="ControlThread, UnmanagedCode"
/>
<IPermission
class="System.Security.Permissions.EnvironmentPermission,
mscorlib, version=1.0.5000.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"
version="1"
Read="UserName"
/>
</PermissionSet>
<Assemblies>
<Assembly PublicKeyBlob=PublicKeyBlob />
</Assemblies>
</PolicyItem>
</CodeAccessSecurity>
Die folgende Liste enthält einige allgemeinen Richtlinien, die bei Verwendung eines <CodeAccessSecurity>-Abschnitts in Ihrer Lösungsmanifestdatei gelten.
In jeder Lösungsmanifestdatei kann es nur einen <CodeAccessSecurity>-Abschnitt geben.
Es können mehrere <PolicyItem>-Knoten vorhanden sein.
Jeder <PolicyItem>-Knoten darf nur einen <PermissionSet>-Knoten enthalten.
Jeder <PolicyItem>-Knoten darf nur einen <Assemblies>-Knoten enthalten.
Jeder <PermissionSet>-Knoten kann mehrere <IPermission>-Knoten enthalten.
Unter dem <Assemblies>-Knoten dürfen mehrere <Assembly>-Knoten vorhanden sein.
Weitere Informationen zum Schema des <CodeAccessSecurity>-Bereichs finden Sie unter CodeAccessSecurity-Element (Solution).
Wenn Sie Ihre Assembly mithilfe einer benutzerdefinierten CAS-Richtlinie bereitstellen, müssen Sie die -CASPolicies-Option mit SharePoint-Verwaltungsshell verwenden. Der Befehl lautet wie folgt:
Install-SPSolution –Identity <insert name> -CASPolicies <true/false>