サンドボックス ソリューションの概要 (SharePoint Foundation 2010)

 

適用先: SharePoint Foundation 2010

Microsoft SharePoint Foundation 2010 のソリューションは、SharePoint Foundation ファームに直接展開するか、サンドボックスに展開できます。サンドボックスは、制限された実行環境であり、プログラムが特定のリソースのみにアクセスできるようにして、サンドボックスで発生する問題がサーバー環境の他の部分に影響しないようにします。

サンドボックスに展開するソリューションをサンドボックス ソリューションといい、このようなソリューションは、コンピューターとネットワークの特定のリソースを使用できず、展開先のサイト コレクションの外部のコンテンツにはアクセスできません。この制限とサンドボックス ソリューションの詳細については、「サンドボックス ソリューションに含められない項目」を参照してください。

サンドボックス ソリューションはサーバー ファーム全体に影響するものではないので、ファーム管理者が展開する必要はありません。サンドボックス ソリューションの展開は、サイト コレクション管理者が、また、状況によっては、サイト コレクションのルートにフル コントロールを持つユーザーが行うことができます。サンドボックス ソリューションをファームで直接 (サンドボックスの外部で) 実行するようにできるのは、ファーム管理者のみです。

次の 2 つの状況では、サンドボックス ソリューションの使用が特に適切です。

  • 組織が SharePoint Foundation 運用サイトで従業員向けにコードを実行する予定で、そのコードが厳密なコード レビューとテストを受けていない場合。

  • ホスト側が、ホストされる SharePoint Foundation サイトの所有者にカスタム コードのアップロードと実行を行わせる場合。

この記事では、サンドボックス ソリューションに関連する概念を紹介し、サンドボックス ソリューションとファームに展開されるソリューションとの違いを説明したうえで、サンドボックス ソリューションの展開および実行方法の概要を示します。ただし、サンドボックスの設定やサンドボックス ソリューションの展開に関する詳細な手順は説明しません。

この記事の内容

サンドボックス ソリューションの展開と実行

SharePoint Foundation アプリケーションのいずれのページにも、サンドボックス内で動作するコンポーネントや、ファーム上で直接動作するコンポーネントを含めることができます。ファームに展開されているコンポーネントは、インターネット インフォメーション サービス (IIS) ワーカー プロセス内で実行されます。サンドボックスに展開されているコンポーネントは、サンドボックス プロセス内で実行されます。

以下に、サンドボックス内に展開できるコンポーネントのいくつかを示します。

  • Web パーツ

  • イベント レシーバー

  • フィーチャー レシーバー

  • カスタム Microsoft SharePoint Designer ワークフロー アクティビティ

  • Microsoft InfoPath ビジネス ロジック

次の手順は、サンドボックス ソリューションを展開する方法を示しています。

  1. ファーム管理者の作業は次のとおりです。これを実行する必要があるのは 1 回だけです。

    • ファーム管理者がサンドボックスを有効にし、サンドボックス ソリューションが実行されるサーバーごとにサンドボックス サービスを起動します。

    • ファーム管理者は、使用する負荷分散スキームを決定します。この負荷分散スキームは、ファームのすべてのサイト コレクション内にあるすべてのサンドボックス ソリューションに適用されます。

    • ファーム管理者は、すべてのサンドボックス ソリューションの組み合わせが超過することのできないリソース クォータを設定します。

  2. サイト コレクションの管理者、またはサイト コレクションのルートにおいてフル コントロールの権限を持つユーザーが、サイト コレクションのソリューション ギャラリーにソリューションをアップロードします。

  3. サイト コレクションの管理者は、ソリューションをアクティブ化します。ソリューションにアセンブリが含まれない場合は、サイト コレクションのルートにおいてフル コントロールの権限を持つユーザーがソリューションをアクティブ化することもできます。ソリューションに対して検証ツールが実行されます。検証に失敗した場合、ソリューションはアクティブ化されません。

サンドボックス ソリューションの実行要求が処理されると、次の作業が行われます。

  1. 負荷分散スキームに基づいて、SharePoint Foundation がソリューションを実行するサーバーを決定します。負荷分散がローカルの場合、ソリューションは要求を処理しているのと同じサーバーで実行されます。負荷分散がリモートの場合は、ソリューションを実行するサーバーがソリューションのアフィニティに基づいて選択されます。どちらの場合も、サーバーではサンドボックス サービスが実行中でなければなりません。

  2. SharePoint Foundation がソリューションを実行するサンドボックス ワーカー プロセスを選択し、"shim" ダイナミック リンク ライブラリ (dll) とソリューション アセンブリを順にプロセス内に読み込みます。

  3. ソリューションの実行時には、そのコードが shim 内で処理されたうえで SharePoint Foundation によって実行されます。ソリューションのコードがサンドボックス ソリューションによる使用が制限されている API の使用を試みた場合、shim はコードの処理と実行を行わずに例外を発生させます。

  4. SharePoint Foundation は、サンドボックス ソリューションが使用するリソースを監視します。サンドボックス ソリューションがハード制限を守れなかった場合 (CPU 時間の使用量があらかじめ定められた値を超えたときなど)、SharePoint Foundation はサンドボックス ワーカー プロセスを終了させます。サイト コレクション内のすべてのサンドボックス ソリューションの組み合わせがサイト コレクションのリソース クォータを超えた場合、SharePoint Foundation は、そのサイト コレクション内のすべてのサンドボックス ソリューションをその日の終わりまでオフにします。

  5. サイト コレクションの管理者は、サンドボックス ソリューションが使用するリソースを監視したり、サイト コレクション内のソリューションを非アクティブ化したりできます。

必要に応じて、ファーム管理者はファームでのソリューションの実行をブロックできます。ファーム管理者はソリューションをサンドボックスで実行する要求を削除することもできます。サンドボックスでの実行要求が削除され、ソリューションがファームのどちらかのサイト コレクション内で実行されると、そのソリューションはもはやサンドボックス内では実行されなくなります。

サンドボックス ソリューションの分離

サンドボックス ソリューションは、さまざまなレベルで分離できます。分離のレベルが高くなるほど、過剰なリソースを消費する可能性があるコードから SharePoint Foundation サイトの主要部分を強力に保護できます。最初のレベルでは、サンドボックス コードが、権限に制限のある分離されたプロセスで実行されます。コード アクセス セキュリティ (CAS) により、コードの実行できる操作が制限されます。リモート負荷分散を使用したり、特定のサーバーでのみサンドボックス サービスを実行したりすることで、分離のレベルを高めることができます。運用環境では、リモート負荷分散を使用し、サンドボックス ソリューションの実行に専用のサーバーを用意することをお勧めします。

サンドボックス ソリューションに含められない項目

SharePoint Foundation ソリューションには、manifest.xml という構成ファイルが含まれている必要があり、追加の構成ファイルやアセンブリが含まれる場合があります。ソリューションがサンドボックス内で実行される場合は、アセンブリや構成ファイルに含めることができる対象が制限されます。

以下に、サンドボックス内で実行されるアセンブリが行うことのできない一般的な項目を示します。

  • ローカル サーバー上に存在しないリソースへの接続。

  • データベースへのアクセス。

  • スレッド モデルの変更。

  • アンマネージ コードの呼び出し。

  • ディスクへの書き込み。

  • 別のサイト コレクション内にあるリソースへのアクセス。

manifest.xml ファイルはフィーチャー ファイルを参照し、フィーチャー ファイルは要素ファイルを参照しています。要素ファイルには、feature 要素が含まれています。サンドボックス ソリューション内で許可されている feature 要素は、次のものだけです。

  • ContentType

  • Field

  • CustomAction

  • Module

  • ListInstance

  • ListTemplate

  • Receivers

  • WebTemplate

  • WorkflowAssociation

  • PropertyBag

  • WorkflowActions

サンドボックス ソリューションとファーム ソリューションの比較

次の表は、ファーム内で実行されるソリューションとサンドボックス内で実行されるソリューションを比較したものです。

要素 ファーム サンドボックス

展開プロセス

ソリューションを追加してからファームに展開。

ソリューションをサイト コレクションにアップロードしてからサイト コレクション内でアクティブ化。

展開できる人

ファーム管理者。

ソリューションにアセンブリが含まれる場合は、サイト コレクションの管理者だけがソリューションを展開できる。ソリューションにアセンブリが含まれない場合は、サイト コレクションのルートにおいてフル コントロールの権限を持つユーザーがソリューションを展開できる。

データ アクセス

制限なし。

ソリューションは展開先のサイト コレクションからコンテンツにアクセスできるのみ。

ソリューションが実行されるプロセス

無制限の IIS ワーカー プロセス、またはソリューションが展開されている任意のプロセス。

権限が制限された別のワーカー プロセス。

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

ソリューション開発者は、ソリューションのパッケージング時にコード アクセス セキュリティ ポリシーを設定できる。

制限あり。詳細については、「Deploying a sandboxed solution (英語)」(https://go.microsoft.com/fwlink/?linkid=177369&clcid=0x411) を参照。

監視

監視なし。

監視あり、ファーム管理者によって設定されたクォータの制限あり。

負荷分散

ソリューションの種類によってさまざま。

非サンドボックス ソリューションと別に構成可能。

ソリューションの機能

制限なし。

制限あり、詳細については「サンドボックス ソリューションに含められない項目」を参照。

サンドボックス ソリューションを使用する利点

サンドボックス ソリューションを使用することの主な利点は、次のとおりです。

  • サンドボックスの外側のプロセスに影響を及ぼすリスクなしにソリューションを運用 SharePoint Foundation 環境に追加できます。

  • サイト コレクションの管理者がサンドボックス ソリューションを展開できるため、ファーム管理者はこの作業から解放されます。

  • クォータによって制限できる別のプロセス内でサンドボックスが動作するのでスケーラビリティと柔軟性が向上すると共に、ファームに対する影響を監視できます。

  • サンドボックスから移動してファーム上で直接実行するようにする場合も、ソリューションを修正したり再コンパイルしたりする必要がありません。

See Also

Concepts

サンドボックス ソリューションの計画 (SharePoint Foundation 2010)

Other Resources

サンドボックス ソリューションの管理 (SharePoint Foundation 2010)
Sandboxed solutions architecture (https://go.microsoft.com/fwlink/?linkid=177368&clcid=0x411)
Deploying a sandboxed solution (https://go.microsoft.com/fwlink/?linkid=177369&clcid=0x411)