Защита веб-частей в службах SharePoint Foundation

Дата последнего изменения: 9 марта 2015 г.

Применимо к: SharePoint Foundation 2010

В этой статье
Безопасность доступа к коду
Встроенные параметры безопасности
Создание политики безопасности доступа к коду

Веб-части в Microsoft SharePoint Foundation предоставляют пользователям эффективный способ взаимодействия с другими системами. SharePoint Foundation имеет встроенные параметры безопасности для ограничения доступа веб-частей к базовым системам. Разработчик может создавать файлы настраиваемой политики безопасности, чтобы предоставить веб-частям больший доступ к базовым системам.

Веб-части также могут создаваться в для песочницы. По умолчанию для песочницы обладает ограниченным доступом к базовым системам. Это повышает безопасность и возможности мониторинга веб-части. Дополнительные сведения об изолированных решениях см. в разделе Изолированные решения.

Безопасность доступа к коду

Безопасность доступа к коду (CAS) — это политика ограничения ресурсов, которая ограничивает доступ сборки к защищенным системным ресурсам и операциям. SharePoint Foundation располагает встроенными политиками безопасности, созданными на основе встроенных политик безопасности ASP.NET. По умолчанию SharePoint Foundation использует минимальный набор разрешений, чтобы защитить сервер и базовую инфраструктуру от вредоносного кода.

Если веб-части требуется большие права доступа, чем заданные в минимальных настройках, их можно расширить несколькими способами, из которых рекомендуемым является только один. Можно создать для веб-части настраиваемую политику разграничения доступа кода либо повысить общий уровень доверия фермы серверов в файле web.config. Такой способ представляет риск для системы безопасности, поэтому использовать его не рекомендуется. Дополнительные сведения о развертывании см. в статье Развертывание веб-частей в SharePoint Foundation.

Встроенные параметры безопасности

По умолчанию SharePoint Foundation является приложением с частичным доверием. SharePoint Foundation не только может использовать встроенные уровни доверия ASP.NET, но и определяет свои собственные.

  • WSS_UserCode

  • WSS_Minimal

  • WSS_Medium

Эти уровни доверия расширяют уровни доверия ASP.NET для их использования с SharePoint Foundation. Уровни доверия определяются в файлах политики, которые хранятся в файловой системе каждого веб-сервера.

Важно!   По умолчанию встроенные файлы политики SharePoint Foundation в SharePoint Foundation с именами wss_usercode.config, wss_minimaltrust.config и wss_mediumtrust.config находятся в каталоге %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\CONFIG.

По умолчанию SharePoint Foundation применяет к виртуальному серверу уровень доверия WSS_Minimal. Этот уровень доверия предоставляет все разрешения в доверии Minimal ASP.NET, а также подключения веб-частей. Политика WSS_Minimal ограничивает веб-часть от доступа ко многим ресурсам для дополнительных операций, включая операции объектной модели и файлов.

Уровень доверия WSS_Medium предоставляет больший доступ к среде. Кроме того, WSS_Medium позволяет обращаться к операциям объектной модели и файлов SharePoint Foundation, включая чтение, запись, добавление и распознавание пути. Этот уровень доверия также обеспечивает доступ к переменным среды.

В приведенной ниже таблице перечислены конкретные разрешения, предоставляемые файлами политики WSS_Medium, WSS_Minimal и WSS_UserCode в среде ASP.NET 2.0.

Разрешение

WSS_Medium

Уровень доверия

WSS_Minimal

Уровень доверия

WSS_UserCode (изолированные решения)

Уровень доверия

System.Web.AspNetHostingPermission

Средний

Минимальный

Минимальный

System.Net.DnsPermission

Unrestricted="True"

Отсутствует

Отсутствует

System.Security.Permissions.EnvironmentPermission

Read="TEMP; TMP;USERNAME;OS;COMPUTERNAME"

Отсутствует

Отсутствует

System.Security.Permissions.FileIOPermission

Read, Write, Append, PathDiscovery, Application Directory

Отсутствует

Отсутствует

System.Security.Permissions.IsolatedStorageFilePermission

AssemblyIsolationByUser, Unrestricted UserQuota

Отсутствует

Отсутствует

PrintingPermission

Печать по умолчанию

Отсутствует

Отсутствует

System.Security.Permissions.SecurityPermission

Assertion, Execution, ControlThread, ControlPrincipal, RemotingConfiguration

Выполнение

Выполнение

Microsoft.SharePoint.Security.SharePointPermission

ObjectModel="True"

Отсутствует

ObjectModel="True", UnsafeSaveOnGet="True"

System.Net.Mail.SmtpPermission

Access="Connect"

Отсутствует

Отсутствует

SqlClientPermission

Unrestricted="true"

Отсутствует

Отсутствует

WebPartPermission

Connections="True"

Connections="True"

Отсутствует

WebPermission

Подключение к исходному узлу (если настроено)

Отсутствует

Отсутствует

ПримечаниеПримечание

Дополнительные сведения о безопасности доступа к коду см. в статьях Использование безопасности доступа к коду с ASP.NET и Рекомендации по безопасности для .NET Framework 2.0 (Возможно, на английском языке).

Создание политики безопасности доступа к коду

В SharePoint Foundation предусмотрена возможность развертывания вместе с решением файла политики разграничения доступа кода. Рекомендуется использовать разрешения для изолированных решений, приведенные в файле wss_usercode.config, однако также можно создать для веб-частей собственные разрешения и использовать для развертывания SharePoint Foundation.

В следующем примере кода показана базовая структура файла политики CAS в пакете решений SharePoint Foundation.

<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>

В следующем списке представлены основные рекомендации, применимые при использовании раздела <CodeAccessSecurity> в манифесте решения.

  • В каждом манифесте решения может находиться только один раздел <CodeAccessSecurity>.

  • Может существовать несколько узлов <PolicyItem>.

  • Каждый узел <PolicyItem> может содержать только один узел <PermissionSet>.

  • Каждый узел <PolicyItem> может содержать только один узел <Assemblies>.

  • Каждый узел <PermissionSet> может содержать несколько узлов <IPermission>.

  • Узел <Assemblies> может содержать несколько узлов <Assembly>.

Дополнительные сведения о схеме области <CodeAccessSecurity> см. в статье Элемент CodeAccessSecurity (Solution).

При развертывании решения с помощью настраиваемой политики CAS необходимо использовать параметр -CASPolicies с SharePoint. Команда выглядит следующим образом:
Install-SPSolution –Identity <insert name> -CASPolicies <true/false>

См. также

Другие ресурсы

Использование безопасности доступа к коду с ASP.NET (Возможно, на английском языке)