Share via


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

System.Web.AspNetHostingPermission

Mittel

Minimal

Minimal

System.Net.DnsPermission

Nicht eingeschränkt=”True”

Keine

Keine

System.Security.Permissions.EnvironmentPermission

Lesen=”TEMP; TMP;USERNAME;OS;COMPUTERNAME”

Keine

Keine

System.Security.Permissions.FileIOPermission

Lesen, Schreiben, Anfügen, Pfadsuche, Anwendungsverzeichnis

Keine

Keine

System.Security.Permissions.IsolatedStorageFilePermission

AssemblyIsolationByUser, Unrestricted UserQuota

Keine

Keine

PrintingPermission

Standardmäßig drucken

Keine

Keine

System.Security.Permissions.SecurityPermission

Assertion, Ausführung, ControlThread, ControlPrincipal, RemotingConfiguration

Ausführung

Ausführung

Microsoft.SharePoint.Security.SharePointPermission

ObjectModel=”True”

Keine

ObjectModel=”True”, UnsafeSaveOnGet=”True”

System.Net.Mail.SmtpPermission

Access=”Connect”

Keine

Keine

SqlClientPermission

Nicht eingeschränkt=”true”

Keine

Keine

WebPartPermission

Connections=”True”

Connections=”True”

Keine

WebPermission

Mit Ursprungshost verbinden (falls konfiguriert)

Keine

Keine

HinweisHinweis

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>

Siehe auch

Weitere Ressourcen

Verwenden der Codezugriffssicherheit mit ASP.NET