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

 

適用先: SharePoint Foundation 2010, SharePoint Server 2010

トピックの最終更新日: 2016-11-30

Microsoft SharePoint Server 2010 ソリューションとは、フィーチャー、サイト定義、およびその他の機能を含めることができる、展開可能で再利用可能なパッケージです。ソリューションは、個別に有効/無効にできます。SharePoint Server ファーム上に直接展開することも、サンドボックスに展開することもできます。サンドボックスとは、プログラムが特定のリソースにだけアクセスできるようにして、サンドボックスで発生する問題がサーバー環境の他の部分に影響しないようにする制限された実行環境です。サンドボックスに展開されたソリューションは、サンドボックス ソリューションとも呼ばれ、特定のコンピューターおよびネットワーク リソースを使用したり、展開されているサイト コレクションの外部のコンテンツにアクセスしたりはできません。ソリューションの詳細については「ソリューションの概要」(https://go.microsoft.com/fwlink/?linkid=156638&clcid=0x411) を参照してください。

サンドボックス ソリューションはサーバー ファーム全体に影響するものではないので、ファーム管理者が展開する必要はありません。サンドボックス ソリューションは、サイト コレクション管理者、また、状況によっては、サイト コレクションのルートにおいてフル コントロールの権限を持つユーザーが展開できます。ただし、負荷分散、階層、クォータ、リソース ポイントなどのサンドボックス ソリューションに関連する設定を構成したり、サンドボックス ソリューションをファームで直接 (サンドボックス環境の外部で) 実行するようにできるのは、ファーム管理者だけです。

この記事では、サンドボックス ソリューションに関連する概念、サンドボックス ソリューションの使用と利点、サンドボックス ソリューションとファームに展開されるソリューションの違い、サンドボックス ソリューションの展開方法の概要、サンドボックス ソリューション サービス、リソース ポイントとクォータ、およびサンドボックス ソリューションの管理に関連するタスクについて説明します。サンドボックス ソリューションの構成方法や展開方法に関する詳細な手順については説明しません。サンドボックス ソリューションに関連する特定のタスクの実行方法については、「サンドボックス ソリューションの管理 (SharePoint Server 2010)」および「サンドボックス ソリューションをインストール、アンインストール、およびアップグレードする」(https://go.microsoft.com/fwlink/?linkid=220252&clcid=0x411) を参照してください。

この記事の内容

  • サンドボックス ソリューションの使用と利点

  • サンドボックス ソリューションについて

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

  • サンドボックス ソリューション サービスについて

  • クォータとリソース ポイントについて

  • サンドボックス ソリューションの管理

サンドボックス ソリューションの使用と利点

次の 2 つの一般的な状況では、サンドボックス ソリューションの使用が適しています。

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

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

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

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

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

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

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

サンドボックス ソリューションについて

ソリューションは、フィーチャー、サイト定義、Web パーツ、およびアセンブリを含めることができる .wsp ファイルとしてパッケージ化されます。ソリューションには、ファーム ソリューションとサンドボックス ソリューションの 2 種類があります。ファーム ソリューションは、ファーム管理者によってフロントエンド Web サーバーに展開され、サーバー オブジェクト モデルに対して完全なアクセス権を持ち、使用量の上限はありません。一方、サンドボックス ソリューションは、サイト コレクション管理者 (またはサイト コレクションのルートにおいてフル コントロールの権限を持つユーザー) によって、サイト コレクションのソリューション ギャラリーに展開されます。サンドボックス ソリューションは、サーバー オブジェクト モデルへのアクセス権が制限され、サンドボックス ソリューションのコードを分離および監視するセキュリティ制限コンテキストで実行されます。ファーム管理者は、サンドボックス ソリューションを有効/無効にしたり、使用量の上限を設定してファーム内のサーバーを悪意のあるコードから保護したりできます。ソリューションの詳細については、「構成要素: ソリューション」(https://go.microsoft.com/fwlink/?linkid=220253&clcid=0x411) を参照してください。

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

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

以下の表に、サンドボックスで動作するアセンブリが実行できない一般的な操作を示します。

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

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

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

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

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

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

サンドボックス ソリューションが実行できる操作と実行できない操作の詳細については、「サンドボックス ソリューションで実装できるコンポーネント」(https://go.microsoft.com/fwlink/?linkid=220254&clcid=0x411) および「サンドボックス ソリューションに対する制限」(https://go.microsoft.com/fwlink/?linkid=220255&clcid=0x411) を参照してください。

サンドボックス ソリューションの負荷分散について

SharePoint Server には、サンドボックス ソリューションを実行するサーバーを決定するための負荷分散方法が 2 つあります。ファーム管理者は、次の負荷分散方法のどちらかを選択して、ファーム内のサンドボックス ソリューションに適用できます。

  • ローカル負荷分散   サンドボックス ソリューションは、要求を受信するサーバーと同じサーバー上で動作します。

  • リモート負荷分散   サンドボックス ソリューションが動作するサーバーは、ソリューションのアフィニティに基づいて選択されます。サンドボックス ソリューションは、既にサンドボックス ソリューションが読み込まれ、実行されているサーバー上で実行されます。これにより、ソリューションに対する要求に対応する時間が節約されます。

選択する負荷分散方法にかかわらず、サンドボックス ソリューションを実行する各サーバー上でサンドボックス ソリューション サービスが動作している必要があります。

注意

サンドボックス ソリューション サービスは、このサービスにアクセスする場所によって名前が異なります。SharePoint サーバーの全体管理 Web サイトでは、Microsoft SharePoint Foundation Sandboxed Code Service と呼ばれます。サーバーの Services コンソールでは、SharePoint User Code Host サービスと呼ばれます。混乱を避けるため、この記事では、このサービスを「サンドボックス ソリューション サービス」と呼びます。

リモート負荷分散を使用したり、特定のサーバーでのみサンドボックス サービスを実行したりすることで、サンドボックス ソリューションの分離のレベルを高めることができます。運用環境では、リモート負荷分散を使用し、サンドボックス ソリューションの実行に専用のサーバーを用意することをお勧めします。使用する負荷分散方法を決定する方法については、「サンドボックス ソリューションを計画する (SharePoint Server 2010)」の「サンドボックス ソリューション コードの負荷分散を計画する」を参照してください。

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

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

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

展開プロセス

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

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

展開できる人

ファーム管理者。

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

データ アクセス

制限なし。

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

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

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

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

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

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

制限あり。

監視

監視なし。

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

負荷分散

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

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

ソリューションの機能

制限なし。

制限あり。この記事の「サンドボックス ソリューションに含められない項目」を参照。

サンドボックス ソリューションは、使用できるコードと使用できないコード、アクセスできるデータとアクセスできないデータに制限がありますが、完全に信頼できるプロセスで動作する特殊な操作を作成し、サンドボックス ソリューションから呼び出すことができます。これは、完全信頼プロキシと呼ばれます。完全信頼プロキシの詳細については、「Sandboxed Solutions in Partnership with Full-Trust Proxies (英語)」(https://go.microsoft.com/fwlink/?linkid=220256&clcid=0x411) (英語) および「Chapter 4: Sandboxed Solutions (英語)」(https://go.microsoft.com/fwlink/?linkid=219528&clcid=0x411) (英語) を参照してください。

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

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

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

  • Web パーツ

  • イベント レシーバー

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

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

  • Microsoft InfoPath ビジネス ロジック

以下の手順では、サンドボックス ソリューションの作成および展開に必要なタスクについて説明します。

  1. ファーム管理者が、以下のタスクを 1 回だけ実行します。

  2. サイト コレクション管理者、またはサイト コレクションのルートにおいてフル コントロールの権限を持つユーザーが、ソリューションをサイト コレクションのソリューション ギャラリーにアップロードします。ソリューションをソリューション ギャラリーにアップロードする方法については、「サンドボックス ソリューションをインストール、アンインストール、およびアップグレードする」(https://go.microsoft.com/fwlink/?linkid=220252&clcid=0x411) を参照してください。

  3. サイト コレクションの管理者が、ソリューションをアクティブ化します。ソリューションにアセンブリが含まれない場合は、サイト コレクションのルートにおいてフル コントロールの権限を持つユーザーがソリューションをアクティブ化することもできます。ソリューションに対して検証ツールが実行されます。検証に失敗した場合、ソリューションはアクティブ化されません。サンドボックス ソリューションを検証およびアクティブ化する方法については、「サンドボックス ソリューションをインストール、アンインストール、およびアップグレードする」(https://go.microsoft.com/fwlink/?linkid=220252&clcid=0x411) を参照してください。

サイト コレクション管理者は、サンドボックス ソリューションが使用するリソースを監視したり、サイト コレクション内のサンドボックス ソリューションを非アクティブ化したりできます。サンドボックス ソリューションの展開後に、非常に多くのリソースが使用されるようになった場合や、サンドボックス環境で問題が発生した場合、ファーム管理者は、ファームでのソリューションの実行をブロックできます。必要に応じて、ファーム管理者は、サンドボックス ソリューションをファーム ソリューションとして再インストールすることにより、サンドボックス ソリューションをサンドボックスで実行する要求を削除することができます。サンドボックスでの実行要求が削除され、ソリューションがファームのいずれかのサイト コレクション内で実行されると、そのソリューションはサンドボックス環境内では実行されなくなります。サンドボックス ソリューションをブロックする方法については、「サンドボックス ソリューションをブロックまたはブロック解除する (SharePoint Server 2010)」を参照してください。ファーム ソリューションをインストールする方法については、「ソリューション パッケージを展開する (SharePoint Server 2010)」を参照してください。

サンドボックス ソリューション サービスについて

サンドボックス ソリューション サービスは、ファーム全体でのサンドボックス ソリューションの実行を管理します。サンドボックス ソリューション サービス内では、ワーカー プロセスとプロキシ プロセスの 2 つのプロセスが動作します。各サンドボックス ソリューションは、ワーカー プロセスのアプリケーション ドメイン内で動作します。ワーカー プロセスは、各ソリューションがアクセスするリソースを調整したり、実行に時間がかかりすぎるプロセスを停止したりすることによって、サンドボックス ソリューションを管理します。各ワーカー プロセスは、SharePoint オブジェクト モデルへの呼び出しを処理するプロキシ プロセスとペアになっています。サンドボックス ソリューション サービスの動作のしくみに関する詳細な説明は、「Sandboxed Solutions (英語)」(https://go.microsoft.com/fwlink/?linkid=220257&clcid=0x411) (英語) の「How Does the Sandbox Execution Model Work?」を参照してください。

階層について

サンドボックス ソリューションが使用する 1 つの要求あたりのリソースの平均数に基づいて、サンドボックス ソリューション サービス内でサンドボックス ソリューションを階層にまとめることができます。次の図に示すように、サンドボックス ソリューション サービス内の階層には、サンドボックス ソリューションが動作する 1 つ以上のワーカー プロセスが含まれます。各サンドボックス ソリューションは、それぞれのアプリケーション ドメインで動作します。アプリケーション ドメインは、ソリューションの呼び出し時に再利用されます。

サンドボックス ソリューション サービスの層

既定では、すべてのサンドボックス ソリューションが 1 つの階層にあるサンドボックス ソリューション サービス内で動作します。階層には、ワーカー プロセスが 1 つ含まれます。既定では、ワーカー プロセスは最大 10 のアプリケーション ドメインを実行できます。ファーム管理者は、サンドボックス ソリューション サービス内に追加の階層とワーカー プロセスを構成し、サンドボックス ソリューションを分離して、パフォーマンス、セキュリティ、信頼性を向上させることができます。特定のワーカー プロセス内のサンドボックス ソリューションがリソースを使いすぎている場合、同じワーカー プロセス内にあるすべてのサンドボックス ソリューションが停止します。サンドボックス ソリューションが使用しているリソースの量は監視されているため、前日からのリソース使用量に基づいて、サンドボックス ソリューションが追加の階層に自動的に分離されます。したがって、追加のワーカー プロセスと階層を作成すると、サンドボックス ソリューションを分離し、パフォーマンスが低いソリューションを別の階層で動作させることによって、パフォーマンスが高いソリューションを保護できます。

ファーム管理者は、階層ごとに次のプロパティを設定できます。

  • ResourceMaxValue   その階層で動作するサンドボックス ソリューションを決定する数値です。既定値は 0 です。それより大きい値に設定しないと、階層を使用できません。

  • MaximumWorkerProcesses   その階層で動作可能なワーカー プロセスの最大数を表します。既定値は 1 です。このプロパティを 1 より大きい値に設定すると、要求を処理しているサーバー上に追加のワーカー プロセスが作成されます。

  • MaximumAppDomainsPerProcess   その階層の 1 つのワーカー プロセス内で動作可能なアプリケーション ドメインの最大数を表します。既定値は 10 です。

  • MaximumConnectionsPerProcess   サンドボックス ソリューション サービスからその階層の 1 つのワーカー プロセスに対して許可される接続の最大数を表します。既定値は 1 です。

  • PriorityPerProcess   オペレーティング システムがその階層のワーカー プロセスに割り当てた優先度を表します。

階層の詳細については、「Using Execution Tiers to Protect Well-Behavied Sandboxed Solutions (英語)」(https://go.microsoft.com/fwlink/?linkid=220258&clcid=0x411) (英語) および「Sandbox Tiers (英語)」(https://go.microsoft.com/fwlink/?linkid=217145&clcid=0x411) (英語) を参照してください。階層の構成方法については、「サンドボックス ソリューション サービスの層を構成する (SharePoint Server 2010)」を参照してください。

クォータとリソース ポイントについて

サンドボックス ソリューションは、既定のクォータに基づいて、サイト コレクションごとにリソース使用量が監視されます。サイト コレクションにクォータを設定すると、サンドボックス ソリューションがシステム リソースを使いすぎないようにすることができます。1 つ以上のサンドボックス ソリューションが、サイト コレクションに対して設定されたクォータを超過した場合、通常は毎晩実行されるソリューションの日単位リソース利用状況の更新タイマー ジョブが実行されるまで、そのサイト コレクション内のすべてのサンドボックス ソリューションが停止します。

クォータは、サイト コレクションのすべてのサンドボックス ソリューションに対して日単位で許可されるリソース ポイントの合計を制御する単一の値として、SharePoint サーバーの全体管理 Web サイトで管理します。ファーム管理者は、ファーム内の任意のサイト コレクションに適用できるクォータ テンプレートを作成できます。クォータの計画方法については、「クォータ管理を計画する (SharePoint Server 2010)」を参照してください。クォータ テンプレートの作成方法については、「クォータ テンプレートを追加、編集、または削除する (SharePoint Server 2010)」を参照してください。特定のサイト コレクションに最大リソース クォータを設定する方法については、「サイト コレクションの記憶域の制限を管理する (SharePoint Server 2010)」の「サイト コレクションの記憶域の制限を変更する」を参照してください。

サンドボックス ソリューションが消費するリソースを制限するには、リソース ポイントを定義します。リソース ポイントは、特定のリソース使用レベルに対応し、最大 15 のリソース メジャー (監視対象のシステム リソース) に対して定義できます。また、サンドボックス ソリューションが動作すると、サイト コレクション全体に対して発生します。クォータに達していないリソース メジャーを表示すると、ポイントごとのリソース数が表示されます。これは、1 つのリソース ポイントが発生するまでに特定のリソースを使用できる回数です。ファーム管理者は、リソース メジャーごとに次のプロパティを構成できます。

  • MinimumThreshold   この値に達するとサイト コレクションのクォータに対する累計に集計される、最小レベルのリソース使用量です。

  • AbosoluteLimit   ワーカー プロセスを停止させる、単一の要求における最大レベルのリソース使用量です。

  • ResourcesPerPoint   1 つのリソース ポイントに等しく、サイト コレクションの合計クォータに含まれる、特定のリソースの量またはレベルです。

リソース使用量が ResourcesPerPoint プロパティで指定した制限に達すると、サイト コレクションによってリソース ポイントが発生します。リソース ポイントの累積数がサイト コレクションのクォータを超過した場合、そのサイト コレクション内のすべてのサンドボックス ソリューションは、その日の終わりまで無効になります。

既定のリソース ポイント制限は、ほとんどの状況にとって十分なものです。ただし、個別のリソース ポイント制限を調整して、適切な値に制限を増やすことができます。個別のリソース ポイント制限を調整する方法の詳細については、「サンドボックス ソリューションのリソース ポイントを構成する (SharePoint Server 2010)」を参照してください。

ファーム管理者は、スクリプトで Windows PowerShell を使用してリソース ポイントの配分を調整し、サイト コレクションのサンドボックス ソリューション クォータ内で個別のリソース ポイントの配分を構成できます。個別のリソース メジャーと最小しきい値、絶対制限値、および各リソース メジャーのポイントごとのリソースの一覧は、「SharePoint 2010 のサンドボックス ソリューションのリソース使用率制限」(https://go.microsoft.com/fwlink/?linkid=217149&clcid=0x411) を参照してください。特定のリソース メジャーの設定を構成する方法については、「サンドボックス ソリューションのリソース ポイントを構成する (SharePoint Server 2010)」を参照してください。

注意

あるサンドボックス ソリューションがサーバー リソースを常に誤って使用していると判断した場合は、開発者が修正するまでそのソリューションをブロックできます。サンドボックス ソリューションをブロックおよびブロック解除する方法の詳細については、「サンドボックス ソリューションをブロックまたはブロック解除する (SharePoint Server 2010)」を参照してください。

サンドボックス ソリューションの管理

ファーム管理者として次の操作を実行し、サンドボックス ソリューションおよびサンドボックス ソリューション サービスを管理できます。

  • ファームのサーバー上のサンドボックス ソリューション サービスを有効にする。

  • ファームの負荷分散方法を変更する。

  • ファームのサンドボックス ソリューションをブロックまたはブロック解除する。

  • ファームのサイト コレクションに対してクォータを構成する。

  • ファームに対してクォータ テンプレートを構成する。

  • Windows PowerShell を使用して、次の操作を実行する。

    • サイト コレクションのクォータ設定を表示する。

    • 特定のリソース メジャーのリソース ポイントを表示および構成する。

    • サンドボックス ソリューション サービスの階層を表示および構成する。

サンドボックス ソリューションおよびサンドボックス ソリューション サービスの管理方法の詳細については、「サンドボックス ソリューションの管理 (SharePoint Server 2010)」を参照してください。

サイト コレクションの管理者は、次の操作を実行して、サンドボックス ソリューションを管理できます。

See Also

Concepts

サンドボックス ソリューションを計画する (SharePoint Server 2010)
サンドボックス ソリューションの管理 (SharePoint Server 2010)

Other Resources

Sandboxed Solutions Resource Center (英語)
サンドボックス ソリューションのアーキテクチャ (https://go.microsoft.com/fwlink/?linkid=177368&clcid=0x411)
サンドボックス ソリューション
サンドボックス ソリューションをインストール、アンインストール、およびアップグレードする
Microsoft SharePoint Server 2010 の新機能