SharePoint Foundation の Web パーツをセキュリティ保護する

最終更新日: 2015年3月9日

適用対象: SharePoint Foundation 2010

この記事の内容
コード アクセス セキュリティ
組み込みセキュリティの設定
コード アクセス セキュリティ ポリシーの作成

Microsoft SharePoint Foundation の Web パーツは、ユーザーに、他のシステムと通信する強力な手段を提供します。SharePoint Foundation には組み込みセキュリティ設定があり、Web パーツによる基礎システムへのアクセスが制限されます。開発者は、カスタム セキュリティ ポリシー ファイルを作成し、Web パーツから基礎システムへのアクセスを増やすことができます。

サンドボックス ソリューションで Web パーツを作成することもできます。既定では、サンドボックス ソリューションにより基礎システムへのアクセスが制限され、これにより、Web パーツでより優れたセキュリティと監視が実現します。サンドボックス ソリューションの詳細については、「サンドボックス ソリューション」を参照してください。

コード アクセス セキュリティ

コード アクセス セキュリティ (CAS) は、アセンブリによる保護されたシステム リソースや操作へのアクセスを制限するリソース制約ポリシーです。SharePoint Foundation には、ASP.NET の組み込みセキュリティ ポリシーの最上位に構築された組み込みセキュリティ ポリシーがあります。既定では、SharePoint Foundation では最小限のアクセス許可が使用され、サーバーや基礎インフラストラクチャが悪意のあるコードから保護されています。

最小限の設定で行えるアクセスより多くのアクセスが Web パーツで必要な場合、Web パーツのアクセス許可を上げる方法は多数ありますが、お勧めできる方法は限られています。Web パーツのカスタム CAS ポリシーを作成するか、web.config ファイルで、サーバー ファームの全体的な信頼レベルを引き上げることができます。しかし、これはセキュリティ上のリスクとなるためお勧めできません。展開の詳細については、「SharePoint Foundation で Web パーツを展開する」を参照してください。

組み込みセキュリティの設定

SharePoint Foundation は、既定では、部分信頼のアプリケーションです。SharePoint Foundation では、ASP.NET 組み込みレベルが使用できますが、独自の信頼レベルが定義されます。

  • WSS_UserCode

  • WSS_Minimal

  • WSS_Medium

この信頼レベルは、ASP.NET 信頼レベルを拡張し、SharePoint Foundation で使用できるようにします。信頼レベルは、各 Web サーバーのファイル システムにあるポリシー ファイルで定義されます。

重要   既定では、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 が適用されます。この信頼レベルでは、ASP.NET の信頼レベル Minimal でのアクセス許可が付与されるほか、Web パーツ接続も許可されます。WSS_Minimal ポリシーでは、Web パーツによる多数のリソースへの、オブジェクト モデルやファイル操作のような、高度な操作のアクセスが制限されます。

信頼レベル WSS_Medium では、より多くのアクセスが環境に許可されます。また、WSS_Medium では、SharePoint Foundation オブジェクト モデルへのアクセス、読み取り、書き込み、追加、パス検索など、ファイル操作も許可されます。この信頼レベルでは、環境変数へのアクセスも許可されます。

次の表は、ASP.NET 2.0 環境の WSS_Medium、WSS_Minimal、および WSS_UserCode ポリシー ファイルで許可される特定のアクセス許可を示しています。

アクセス許可

WSS_Medium

信頼レベル

WSS_Minimal

信頼レベル

WSS_UserCode (サンドボックス ソリューション)

信頼レベル

System.Web.AspNetHostingPermission

最小

System.Net.DnsPermission

Unrestricted= "True"

なし

なし

System.Security.Permissions.EnvironmentPermission

読み取り: 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

アサーション、実行、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

配信元ホストに接続する (構成されている場合)

なし

なし

注意

コード アクセス セキュリティの詳細については、「Web アプリケーション セキュリティ強化: 脅威とその対策」と「セキュリティ ガイドライン: .NET Framework 2.0」を参照してください。

コード アクセス セキュリティ ポリシーの作成

SharePoint Foundation には、ソリューションで CAS ポリシー ファイルを展開する機能が用意されています。wss_usercode.config ファイルで示されるサンドボックス ソリューションの権限を使用することを推奨しますが、Web パーツのカスタム アクセス許可を作成し、SharePoint Foundation で展開を処理することもできます。

以下のコード例は、SharePoint Foundation ソリューション パッケージの中の CAS ポリシー ファイルの基本構造を示しています。

<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> は、ソリューション マニフェストごとに 1 つのみ存在します。

  • <PolicyItem> ノードは複数存在します。

  • 各 <PolicyItem> ノードには、<PermissionSet> ノードを 1 つのみ格納できます。

  • 各 <PolicyItem> ノードには、<Assemblies> ノードを 1 つのみ格納できます。

  • 各 <PermissionSet> ノードには、複数の <IPermission> ノードを格納できます。

  • <Assemblies> ノードの下に、複数の <Assembly> ノードが存在します。

<CodeAccessSecurity> 領域のスキーマの詳細については、「CodeAccessSecurity 要素 (ソリューション)」を参照してください。

カスタム CAS ポリシーを使用してアセンブリを展開する場合、SharePoint 管理シェルで -CASPolicies オプションを使用する必要があります。コマンドは、次のとおりです。
Install-SPSolution –Identity <insert name> -CASPolicies <true/false>

関連項目

その他の技術情報

Web アプリケーション セキュリティ強化: 脅威とその対策