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

Windows SharePoint Services の Web パーツは、ユーザーに、他のシステムと通信する強力な手段を提供します。Windows SharePoint Services には組み込みセキュリティ設定があり、Web パーツによる基礎システムへのアクセスが制限されます。開発者は、カスタム セキュリティ ポリシー ファイルを作成し、Web パーツから基礎システムへのアクセスを増やすことができます。このトピックでは、組み込み設定、コード アクセス セキュリティ (CAS) ポリシー、Windows SharePoint Services ソリューションへのカスタム コード アクセス セキュリティ ポリシーの採用方法について説明します。

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

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

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

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

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

  • WSS_Minimal

  • WSS_Medium

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

重要   既定では、wss_minimaltrust.config という名前と wss_mediumtrust.config という名前の組み込み Windows SharePoint Services ポリシー ファイルは、%SYSTEMDRIVE%\Program Files\Common Files\Microsoft Shared\web server extensions\12\config にあります。

既定では、Windows SharePoint Services では仮想サーバーに信頼レベル WSS_Minimal が適用されます。この信頼レベルでは、ASP.NET の信頼レベル Minimal でのアクセス許可が付与されるほか、Web パーツ接続も許可されます。WSS_Minimal ポリシーでは、Web パーツによる多数のリソースへの、オブジェクト モデルやファイル操作など、高度な操作のアクセスが制限されます。

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

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

アクセス許可

WSS_Medium

信頼レベル

WSS_Minimal

信頼レベル

AspNetHostingPermission クラス

DirectoryServicesPermission クラス

なし

なし

DnsPermission コンストラクタ

無制限

なし

EnvironmentPermission クラス

読み取り : TEMP、TMP、OS、USERNAME、COMPUTERNAME

なし

EventLogPermission クラス

なし

なし

FileIOPermission クラス

Read、Write、Append、PathDiscovery:Application Directory

なし

IsolatedStoragePermission クラス

AssemblyIsolationByUser、Unrestricted UserQuota

なし

MessageQueuePermission クラス

なし

なし

OleDBPermission クラス

なし

なし

PerformanceCounterPermission クラス

なし

なし

PrintingPermission クラス

既定の印刷

なし

ReflectionPermission クラス

なし

なし

RegistryPermission クラス

なし

なし

SecurityPermission クラス

実行、アサーション、ControlPrincipal、ControlThread、RemotingConfiguration

実行

ServiceControllerPermission クラス

なし

なし

SharePointPermission クラス

(Microsoft.SharePoint.Security)

ObjectModel = true

なし

SocketPermission クラス

なし

なし

SqlClientPermission クラス

AllowBlankPassword=false

なし

WebPermission クラス

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

なし

注意

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

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

Windows SharePoint Services 3.0 では、ソリューションで CAS ポリシー ファイルを展開する機能が追加されました。この機能を使用すると、Web パーツのカスタム アクセス許可を容易に作成することや、Windows SharePoint Services で展開を処理することができます。

以下のコード例は、Windows SharePoint Services ソリューション パッケージの中の 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 ポリシーを使用してアセンブリを展開する場合、stsadm.exe ユーティリティで -allowCasPolicies オプションを使用する必要があります。コマンドは、次のとおりです。
stsadm -o deploySolution -name <insert name> -allowCasPolicies

ソリューション展開のための stsadm の使用の詳細については、「Stsadm コマンド ライン ツール (Office SharePoint Server)」を参照してください。

See Also

その他のリソース

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

Stsadm コマンド ライン ツール (Office SharePoint Server)