サンドボックス ソリューションの考慮事項
サンドボックス ソリューションは、サイト コレクションのユーザーが独自のカスタム コード ソリューションをアップロードできるようにする Microsoft SharePoint 2010 の機能です。 たとえば、一般的なサンドボックス化ソリューションとして、ユーザーは独自の Web パーツをアップロードすることができます。
サンドボックス SharePoint アプリケーションは、Web ファームの限られた部分にのみアクセスできる安全で監視されたプロセスで実行されます。 Microsoft SharePoint 2010 では、フィーチャー、ソリューション ギャラリー、ソリューション モニタリング、および検証フレームワークの組み合わせによってサンドボックス ソリューションが実現されます。
プロジェクトの信頼レベルの指定
Visual Studio は、Sandboxed Solution というブール型のプロジェクト プロパティによってサンドボックス ソリューションをサポートします。 このプロパティはプロジェクト内でいつでも設定できるほか、SharePoint カスタマイズ ウィザード でプロジェクトを作成するときに指定することもできます。
注意
プロジェクトの作成後に Sandboxed Solution プロパティを変更すると、検証エラーが発生することがあります。
Sandboxed Solution プロパティを false に設定した場合、または [ファーム ソリューションとして配置する] オプションを選択した場合、そのソリューションはファーム スコープのソリューションと見なされます。 一方、Sandboxed Solution プロパティを true に設定した場合、またはウィザードで [サンドボックス ソリューションとして配置する] オプションを選択した場合、そのソリューションにはファーム ソリューションとは異なる処理が適用されます。
SharePoint サイト階層
サンドボックス ソリューションのしくみを理解するには、まず SharePoint サイトのスコープが階層構造になっていることを認識しておく必要があります。 最上位の要素は Web ファームで、それ以外の要素は Web ファームに従属します。
Web ファーム
Web アプリケーション A
サイト コレクション A1
サイト A1a
Web アプリケーション B
サイト コレクション B1
サイト B1a
サイト B1b
サイト コレクション B2
サイト B2a
これを見るとわかるように、Web ファームには 1 つ以上の Web アプリケーションを含めることができます。さらに、Web アプリケーションには 1 つ以上のサイト コレクションを含めることができ、サイト コレクションにはサブサイトを含めることができます。 特定のサイト コレクションに対して行った変更は、そのサイト コレクションにのみ影響し、他のサイト コレクションには影響しません。 ただし、Web ファーム レベルで行った変更は、そのファーム上のすべてのサイト コレクションに影響します。
Windows SharePoint Services (WSS) 3.0 では、ソリューションの配置はファーム レベルに限られますが、Microsoft SharePoint Foundation 2010 では、ファーム レベル (ファーム ソリューション) だけでなく、サイト コレクション レベル (サンドボックス ソリューション) でもソリューションを配置できます。
サンドボックス ソリューションが必要な理由
WSS 3.0 では、ソリューションをファーム レベルでしか配置できませんでした。 万一有害なソリューションや安定性を損なうソリューションが配置されると、Web ファーム全体と、その下で実行されている他のすべてのサイト コレクションおよびアプリケーションにまで影響が及ぶことになります。 一方、サンドボックス ソリューションを使用すると、ファームのサブエリア、つまり、特定のサイト コレクションにソリューションを配置できます。 また、二重の保護対策として、メインの IIS プロセス (w3wp.exe) にはソリューションのアセンブリが読み込まれないようになっています。 ソリューションは、代わりに、独立したプロセス (SPUCWorkerProcess.exe) に読み込まれます。 このプロセスは監視され、有害な動作を実行するサンドボックス ソリューション (CPU サイクルを消費する短いループの実行など) からファームを保護するためにクォータとスロットリングを実装します。
サイト コレクションのソリューション ギャラリー
Windows SharePoint Services 2010 には、"サイト コレクションのソリューション ギャラリー" と呼ばれる機能が搭載されています。この機能には、SharePoint サイトで [サイトの操作]、[サイトの設定]、[ギャラリー]、および [ソリューション] を順にクリックしてアクセスするか、SharePoint 2010 の [サーバーの全体管理] ページからアクセスすることができます。 ソリューション ギャラリーは、ソリューションのリポジトリです。サイト コレクションの管理者は、このリポジトリを使用して、サイト コレクション内のソリューションを管理することができます。
ソリューション ギャラリーは、SharePoint サイトのルート Web に格納されるドキュメント ライブラリです。 サイト ギャラリーは、サイト テンプレートに代わる機能であり、ソリューション パッケージをサポートします。 アップロードされた SharePoint ソリューション パッケージ (.wsp) ファイルは、サンドボックス ソリューションとして処理されます。
サンドボックス ソリューションの制限
サンドボックス ソリューションが配置されると、それが使用できる SharePoint の機能は、セキュリティ上の脆弱性を低減するため制限されます。 たとえば、次のような制限があります。
サンドボックス ソリューションが使用できるソリューション要素は、配置可能なソリューション要素のサブセットに限定されます。 脆弱性が懸念される SharePoint プロジェクト テンプレート (サイト定義、ワークフローなど) は利用できません。
サンドボックス ソリューションのコードは、メインの IIS アプリケーション プール (w3wp.exe) のプロセスとは独立した別個のプロセス (SPUCWorkerProcess.exe) で実行されます。
マップされたフォルダーをプロジェクトに追加することはできません。
Microsoft SharePoint Server 2010 アセンブリ Microsoft.Office.Server の型はサンドボックス ソリューションで使用できません。 また、サンドボックス ソリューションに使用できるのは、Microsoft SharePoint Foundation 2010 アセンブリ Microsoft.SharePoint の型のみです。
SharePoint ソリューションをサンドボックス ソリューションとして指定しても、SharePoint サーバーそのものは影響を受けません。SharePoint プロジェクトを Visual Studio から SharePoint に配置する方法とバインド先のアセンブリが指定されるだけです。 これは生成される .wsp ファイルには影響せず、Sandboxed Solution プロパティに直接関連付けられているデータは .wsp ファイルには含まれていません。
サンドボックス ソリューションの機能と要素
サンドボックス ソリューションでは、次の機能および要素がサポートされています。
リスト定義
リスト インスタンス
Onet.xml
WebTemplate フィーチャー要素 (Webtemp.xml ではなく)
コンテンツ タイプ/フィールド
Navigation
モジュール/ファイル
フィーチャーのコールアウト
Web パーツ
System.Web.UI.WebControls.WebParts.WebPart から派生するすべての Web パーツのサポート
イベント レシーバー
SPItemEventReceiver
SPListEventReceiver
SPWebEventReceiver
カスタム動作
宣言型のワークフロー
サンドボックス ソリューションでは、次の機能および要素はサポートされていません。
ビジュアル Web パーツ
アプリケーション ページ
カスタム動作グループ
HideCustomAction 要素
コンテンツ タイプ バインディング
Web アプリケーション スコープの機能
ファーム スコープの機能
コードを含んだワークフロー