Excel Services のベスト プラクティスExcel Services Best Practices

このトピックでは、Excel Services を使用する際のベスト プラクティス推奨事項について説明します。This topic contains a list of best-practice recommendations for working with Excel Services.

脅威の軽減Mitigating Threats

匿名アクセスと情報開示Anonymous Access and Information Disclosure

以下の設定の組み合わせでは、プロセス アカウントがアクセスできる共有内の任意のファイルに匿名ユーザーがアクセスできるようになります。したがって、情報が開示される恐れがあるため、以下の設定の組み合わせは推奨されません。The following settings combination gives anonymous users access to any files in the share to which the process account has access. Therefore, the following combination of settings is not recommended, because of the possibility of information disclosure:

  • Microsoft SharePoint Foundation に対する匿名アクセスがオンになっている。Anonymous access to Microsoft SharePoint Foundation is turned on.

  • UNC の信頼できる場所があり、[プロセス アカウント] がオンになっている。You have a UNC trusted location and the Process account is turned on.

注意

[プロセス アカウント] は、すべての信頼できる場所に影響を与える Excel Services のグローバル設定です。The Process account is a global Excel Services setting that affects all trusted locations.

[プロセス アカウント] オプションを表示するにはTo view the Process account option

  1. [ スタート] メニューで [ すべてのプログラム] をクリックします。On the Start menu, click All Programs.

  2. [ Microsoft SharePoint 2010 製品] をポイントし、[ SharePoint サーバーの全体管理] をクリックします。Point to Microsoft SharePoint 2010 Products, and then click SharePoint Central Administration.

  3. [ アプリケーション構成の管理] の下で、[ サービス アプリケーションの管理] をクリックします。Under Application Management, click Manage service applications.

  4. [サービス アプリケーションの管理] ページで、[ Excel Services アプリケーション] をクリックします。On the Manage Service Applications page, click Excel Services Application.

  5. [ Excel Services アプリケーション] ページで、[ グローバル設定] をクリックします。On the Excel Services Application page, click Global Settings.

  6. [ セキュリティ] セクションで、[ ファイル アクセス方法] の下に、[ プロセス アカウント] オプションが表示されます。In the Security section, look under File Access Method for the Process account option.

サービス拒否攻撃Denial of Service Attack

Web サービスに対するサービス拒否攻撃では、攻撃者は非常に大きい、それぞれ異なる要求を Web サービスに対して生成します。その目的は、Web サービスの入力値の 1 つ以上の限界値を探ろうとすることです。In a denial of service attack against a Web service, an attacker generates very large, individual requests against the Web service. The purpose is to attempt to exploit the limits of one or more Web service input values.

Microsoft インターネット インフォメーション サービス (IIS) の設定を使用して、Web サービスの最大要求サイズを設定することをお勧めします。We recommend that you use the Microsoft Internet Information Services (IIS) setting to set the maximum request size for the Web service.

system.web 要素の中の httpRuntime 要素にある maxRequestLength 属性を使用して、サーバーに対して大きいファイルを送信することによって行われるサービス拒否攻撃を防止します。既定のサイズは 4096 KB (4 MB) です。Use the maxRequestLength attribute in the httpRuntime element in the system.web element to prevent denial of service attacks that are caused by users posting large files to the server. The default size is 4096 KB (4 MB).

詳細については、「<httpRuntime> 要素」および「<maxRequestLength> 要素」を参照してください。For more information, see <httpRuntime> Element and <maxRequestLength> Element.

呼び出し元のアプリケーションと Web サービス コンピューターとの間のスニッフィングSniffing Between the Calling Application and the Web Service Computer

呼び出し元のアプリケーションと Excel Web Services が異なるコンピューターに展開されている場合、攻撃者は、呼び出し元のアプリケーションと Web サービス間のデータ転送ネットワーク トラフィックを傍受することがあります。この脅威は "スニッフィッング" または "盗聴" とも呼ばれます。If the calling application and Excel Web Services are deployed to different computers, an attacker can listen to the network traffic for data transfer between the calling application and the Web service. This threat is also called "sniffing" or "eavesdropping."

この脅威を軽減するために、以下のことをお勧めします。To help mitigate this threat, we recommend that you:

  • SSL (Secure Sockets Layer) を使用してセキュリティで保護されたチャネルをセットアップし、クライアントとサーバー間のデータ転送を保護します。SSL プロトコルは、ネットワークに物理的にアクセスしてパケットのスニッフィッングを行う攻撃者からデータを保護するために役立ちます。Use Secure Sockets Layer (SSL) to set up a secure channel to protect data transfer between the client and the server. The SSL protocol helps to protect data against packet sniffing by anyone with physical access to the network.

  • Excel Web Services を使用するカスタム アプリケーションが閉じたネットワーク内で実行されている場合 (たとえば、Excel Web Services が企業内の Web フロントエンド コンピューターに展開されている場合) は、該当するネットワークを物理的に保護します。Physically protect the relevant network if a custom application using Excel Web Services is running in a confined network—for example, if Excel Web Services is deployed on a Web front-end computer within the enterprise.

詳細については、「 Securing Your Network」および「 SOAP のセキュリティ」を参照してください。For more information, see Securing Your Network and SOAP Security.

Excel Services のトポロジ、スケーラビリティ、パフォーマンス、およびセキュリティについては、Microsoft SharePoint Server 2010 TechCenter を参照してください。For information about Excel Services topology, scalability, performance, and security, see the Microsoft SharePoint Server 2010 TechCenter.

なりすましSpoofing

Web サービスのインターネット プロトコル (IP) アドレスおよびポートを乗っ取られる脅威を軽減するため、SSL を使用することをお勧めします。これは、攻撃者が要求を受け取って Web サービスの代わりに応答するようになる事態を防止するために役立ちます。We recommend that you use SSL to help mitigate the threats of hijacked Web service Internet Protocol (IP) addresses and ports, and to help prevent attackers from receiving requests and replying on behalf of the Web service.

SSL 証明書は、少数のプロパティと一致することが確認されます。その 1 つに、メッセージの発信元の IP アドレスがあります。攻撃者は、Web サービスの SSL 証明書を持っていない限り、IP アドレスの「なりすまし」を実行できません。The SSL certificate is matched against a few properties, one of which is the IP address from which the message is coming. The attacker cannot spoof the IP address if it does not have the Web service SSL certificate.

詳細については、「 Securing Your Network」を参照してください。For more information, see Securing Your Network.

Excel Services のユーザー定義関数 (UDF)Excel Services User-Defined Functions (UDFs)

厳密な名前の依存関係Strong Name Dependencies

場合によっては、ユーザー定義関数 (UDF) アセンブリが、一緒に展開される他のアセンブリに依存していることがあります。依存関係にあるこれらの DLL がグローバル アセンブリ キャッシュに入っている場合、または UDF アセンブリと同じフォルダーに入っている場合は、DLL の読み込みが成功します。In some cases, a user-defined function (UDF) assembly depends on other assemblies that are deployed with it. These dependent DLLs load successfully if they are in the global assembly cache, or if they are located in the same folder as the UDF assembly.

ただし、後者の場合は、Excel Calculation Services が同じ名前の別のアセンブリを既に読み込んでいる場合に、読み込みに失敗する可能性があります。(アセンブリに厳密な名前が付いていない、または同じ名前の別のバージョンが展開されて読み込まれている、のいずれかの理由で読み込みに失敗します。)In the latter case, however, it is possible for the load to fail if Excel Calculation Services has already loaded another assembly with the same name. (It fails either because the assembly is not strongly named, or because another version with the same name has been deployed and loaded.)

次のシナリオについて考えてみましょう。次のようなディレクトリ構成になっています。Consider the following scenario, with the following directory structure:

  1. C:\Udfs\Udf01C:\Udfs\Udf01

    Udf01 フォルダーの内容は次のとおりです。The Udf01 folder contains:

  • Udf01.dllUdf01.dll

  • dependent.dll (厳密な名前が付いていない)dependent.dll (not strongly named)

    Udf01.dll ファイルは dependent.dll ファイルに依存しています。The Udf01.dll file has a dependency on the dependent.dll file.

  1. C:\Udfs\Udf02C:\Udfs\Udf02

    Udf02 フォルダーの内容は次のとおりです。The Udf02 folder contains:

  • Udf02.dll (Interop.dll に依存している)Udf02.dll (which depends on Interop.dll)

  • dependent.dll (厳密な名前が付いていない)dependent.dll (which is not strongly named)

    Udf02.dll ファイルは dependent.dll ファイルに依存しています。Udf01.dll の依存関係と Udf02.dll の依存関係では、同じ名前が共有されています。しかし、Udf02.dll の dependent.dll ファイルは、Udf01.dll の dependent.dll ファイルと同じではありません。The Udf02.dll file has a dependency on the dependent.dll file. Udf01.dll's dependency and Udf02.dll's dependency share the same name. But Udf02.dll's dependent.dll file is not the same as Udf01.dll's dependent.dll file.

次のようなフローを想定します。Assume the following flow:

  1. Udf01.dll は、最初に読み込まれる DLL です。Excel Calculation Services は dependent.dll を探し、Udf01.dll の依存ファイルを読み込みます。この場合は、dependent.dll です。Udf01.dll is the first DLL to be loaded. Excel Calculation Services looks for dependent.dll and loads Udf01.dll's dependency, which in this case is dependent.dll.

  2. Udf02.dll は、Udf01.dll より後に読み込まれます。Excel Calculation Services は、Udf02.dll が dependent.dll に依存していることを認識します。しかし、"dependent.dll" という名前の DLL は既に読み込まれています。したがって、Udf02.dll の dependent.dll ファイルは読み込まれず、現在読み込まれている dependent.dll ファイルが依存関係として使用されます。Udf02.dll is loaded after Udf01.dll. Excel Calculation Services sees that Udf02.dll depends on dependent.dll. However, a DLL with the name "dependent.dll" is already loaded. Therefore, Udf02.dll's dependent.dll file is not loaded, and the currently loaded dependent.dll file is used as the dependency.

この結果、Udf02.dll が必要とするオブジェクト (この例では、dependent.dll ファイル) がメモリに読み込まれていない状態になります。As a result, the object—in this case, the dependent.dll file that Udf02.dll needs—is not loaded into memory.

名前の衝突を防止するため、依存関係にあるオブジェクトには厳密な名前を付け、一意の名前を使用することをお勧めします。To avoid name collision, we recommend that you strongly name your dependencies, and name them uniquely.

全般General

マネージ コード DLL の名前Naming Managed-Code DLLs

アセンブリの名前を確実に一意にするため、「 Namespace Naming Guidelines」に従った完全修飾クラス名を使用してください。To ensure that your assembly names are unique, use the fully qualified class name, following the Namespace Naming Guidelines.

たとえば、Namespace.ClassName ではなくCompanyName.Hierarchichal.Namespace.ClassName を使用します。For example, use CompanyName.Hierarchichal.Namespace.ClassName instead ofNamespace.ClassName.

関連項目See also

タスクTasks

方法: 場所を信頼するHow to: Trust a Location

概念Concepts

Excel Services のアーキテクチャExcel Services Architecture

SOAP API にアクセスするAccessing the SOAP API

Excel Services のアラートExcel Services Alerts

Excel Services の既知の問題およびヒントExcel Services Known Issues and Tips

Excel Services ブログ、フォーラム、リソースExcel Services Blogs, Forums, and Resources