Office ソリューションの実行に必要なセキュリティ条件 (2003 システム)

更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • ドキュメント レベルのプロジェクト

  • アプリケーション レベルのプロジェクト

Microsoft Office のバージョン

  • Microsoft Office 2003

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

ドキュメント レベルのカスタマイズとアプリケーション レベルのアドインには、.NET Framework が備えているセキュリティ機能が組み込まれています。この機能により、信頼決定のベースとなる証拠を Office ソリューションで活用できるようになります。

Microsoft Office ソリューションを配置して実行するには、各エンド ユーザーのセキュリティ ポリシーで、アセンブリに完全な信頼を付与する必要があります。カスタマイズの場合、ドキュメントがユーザーのコンピュータではなくネットワーク上にある場合は、そのドキュメントにも完全な信頼を付与する必要があります。エンド ユーザー コンピュータにおけるセキュリティ ポリシーの設定については、「セキュリティ ポリシーの配置」を参照してください。

Microsoft Office ソリューションは、すべてのコードまたはゾーン ベースの証拠を受け付けないカスタム セキュリティ制限を追加します。つまり、Microsoft Office アプリケーションは、アセンブリがセキュリティ ポリシーでアクセス許可 (信頼) を付与されない限り、ローカル コンピュータ、ネットワーク、およびインターネットのどこに存在していても、このアセンブリを実行することはありません。

Microsoft Office Outlook には、信頼されていないコードが Outlook オブジェクト モデルにアクセスするのを防ぐ役割をする、オブジェクト モデル ガードが含まれています。また、オブジェクト モデル ガードでは、コードの実行時に、Outlook からエンド ユーザーに対して警告が表示されます。こうした警告を回避する方法については、「Office ソリューションに固有のセキュリティに関する考慮事項」を参照してください。

信頼レベル

.NET Framework のセキュリティには、次の 3 つの信頼レベルがあります。

  • 完全信頼このレベルは、現在のユーザーが実行できるアクションすべてにコード アクセス許可を与えます。Office ソリューションを実行するには、すべてのコードに完全な信頼が必要です。

  • 部分信頼このレベルは、指定した許可だけを与える制限付きアクセス許可セットです。部分的に信頼されたコードは Office ソリューションでは実行しません。

  • 信頼関係のないこのレベルはアクセス許可を与えないため、コードは実行しません。

必要となるアクセス許可セットは完全信頼です。Office ソリューションは、部分信頼のマネージ コード拡張機能または信頼されていないマネージ コード拡張機能は実行しません。アクセス許可セットの詳細については、「名前付きアクセス許可セット」を参照してください。

証拠の種類

.NET Framework セキュリティの証拠には、次の種類があります。

詳細については、「証拠」を参照してください。

Visual Studio では、プロジェクトをビルドするとき、これらのプロジェクトに完全な信頼を付与するのに URL 証拠が使用されます。Visual Studio は Visual Studio Tools for Office プロジェクトをビルドするとき、ユーザー レベルのセキュリティ ポリシーを変更して、Office プロジェクトのビルドの場所に完全な信頼を与えます。カスタマイズまたはアドインが実行されると、ローダーがアセンブリの場所の URL をポリシー システムに提供して、特定の場所に完全な信頼を与えます。

通常、個人のコンピュータで作業する場合はこのレベルのセキュリティで十分ですが、ソリューションの配置時にこの証拠を使用すると、セキュリティ上の問題が発生する可能性があります。アセンブリを配置するには、より厳密な形式の証拠を提供する必要があります。厳密な形式の証拠を使用するのには、次の 2 つの理由があります。

  • Web の場所に完全な信頼を与えると、その場所に書き込みアクセス権を持つ悪意のあるユーザーがアセンブリを自分のコードに置き換えて、人々にそれを実行させる可能性があります。

  • 既定のコンピュータ レベルのポリシーは、すべての Web サイトに部分的な信頼を与えますが、完全な信頼が必要であるため、ユーザー レベルのポリシーを設定して URL に完全な信頼を与えるだけでは不十分です。

URL 証拠を使用する場合は、ユーザー ポリシー レベルではなく、必ずコンピュータ ポリシー レベルのイントラネット ゾーン分岐にポリシーを設定してください。また、信頼できる人のみが書き込めることがわかっている場所だけに完全な信頼を与えてください。より良いポリシーは、厳密な名前のように暗号化された厳密な証拠と場所の組み合わせを使用することです。厳密な名前は、常に場所の情報と共に使用して、厳密な名前のアプリケーションのセキュリティに問題が生じた場合に、安全に修正できるようにしておく必要があります。

ドキュメント レベルのカスタマイズの場合は、ドキュメントにも場所ベースの証拠があるため、悪意のあるユーザーが不正な目的でコードを使用するドキュメントを作成して、信頼されているコードを別の目的で使用するのが難しくなります。マネージ コード拡張機能が設定されたドキュメントは、完全に信頼できる場所に配置されていない限り、アセンブリを実行しません。既定では、MyComputer ゾーンは完全に信頼されているため、ユーザーのコンピュータ上のドキュメントはコードを実行できます。ただし、Internet ゾーンは完全に信頼されているわけではありません。

マネージ コード拡張機能が設定されたドキュメントは、Office 証明書ストアに依存する Office マクロ セキュリティを使用しません。マクロ セキュリティは、アセンブリ セキュリティと関連がありません。

.NET Framework のセキュリティについては、「コード アクセス セキュリティの基礎」を参照してください。.NET Framework のセキュリティに関する全般的な情報については、「.NET Framework におけるセキュリティ」および「セキュリティ ポリシーの管理の概要」を参照してください。

アセンブリのセキュリティの概要

アセンブリの場所

既定の設定

セットアップ方法

開発用コンピュータ

Office プロジェクトをビルドすると、メイン アセンブリと [ローカル コピー] が true に設定されているすべての参照アセンブリには、コンピュータで完全な信頼が付与されます。

対処は必要ありません。

共有ネットワーク位置

アセンブリには信頼が付与されていません。

管理者は、共有ネットワーク位置を信頼するネットワーク セキュリティ ポリシーを設定し、アセンブリをデジタル署名などで保護します。詳細については、「アセンブリのセキュリティに関する考慮事項」を参照してください。

エンド ユーザー コンピュータ

アセンブリには信頼が付与されていません。

管理者はユーザーのセキュリティ ポリシーでアセンブリに信頼を付与します。詳細については、「セキュリティ ポリシーの配置」を参照してください。

ドキュメントのセキュリティの概要

ドキュメントの場所

既定の設定

セットアップ方法

開発用コンピュータ

ドキュメントに完全な信頼が付与されています。

対処は必要ありません。

共有ネットワーク位置

ドキュメントには信頼が付与されていません。

管理者は、共有ネットワーク位置を信頼するネットワーク セキュリティ ポリシーを設定します。また、オプションとして Office ドキュメントだけを信頼するカスタム ポリシーを使用できます。詳細については、「方法 : 共有の場所にあるドキュメントおよびブックにアクセス許可を与える (2003 システム)」を参照してください。

エンド ユーザー コンピュータ

ドキュメントに完全な信頼が付与されています。

対処は必要ありません。

開発用コンピュータのセキュリティ

開発者が Visual Studio で Office プロジェクトをビルドすると、既定では、アセンブリ名を含むアセンブリへの完全パスが、ユーザー レベルの .NET Framework セキュリティ ポリシーに追加されます。これにより、アセンブリに完全な信頼が付与されます。プロジェクトの出力フォルダ内の参照アセンブリにも、プロジェクトのビルド時に完全な信頼が付与されます。

既定の設定が変更されていない場合、Visual Studio Tools for Office は、ソリューションをビルドするたびにキャッシュ内のセキュリティ ポリシーを確認します。アセンブリに完全な信頼が付与されていない場合は、Visual Studio Tools for Office によって完全な信頼が付与されます。したがって、アセンブリの名前を変更したり、プロジェクトを別の場所に移動したりしても、プロジェクトの信頼は保持されます。

既定の信頼設定を変更すると (アセンブリの場所の信頼プロパティを false に設定すると)、Visual Studio ではアセンブリに完全な信頼が付与されず、コードは実行されません。コードを再び実行するには、アセンブリの場所の信頼プロパティを true に変更し、ソリューションを再ビルドします。また、Projects フォルダおよびそのサブフォルダから実行するすべてのコードに完全な信頼が付与されるように、グローバル規則を設定することもできます。

プロジェクトの信頼オプションの設定およびフォルダへの完全な信頼の付与については、「方法 : フォルダおよびアセンブリにアクセス許可を付与する (2003 システム)」を参照してください。

セキュリティ ポリシーのキャッシュ

共通言語ランタイムは、プロセスごとにセキュリティ ポリシーをキャッシュします。Visual Studio では、プロジェクトをビルドするときにこのキャッシュを確認し、アセンブリに完全な信頼が付与されているかどうかを調べます。Visual Studio の起動時に既にアセンブリに完全な信頼が付与されている場合、Visual Studio では、ビルド処理中にアセンブリのポリシーが作成されません。

Visual Studio の実行中に、プロジェクトに関連するセキュリティ ポリシーを変更する場合、Visual Studio では、その変更が検出されません。変更が原因でプロジェクトを実行できない場合、アプリケーションはセキュリティ例外をスローします。これは、Visual Studio では、アセンブリに完全な信頼を付与するポリシーが再作成されないためです。Visual Studio でセキュリティ ポリシーの変更を検出できるようにするには、Visual Studio を閉じてから再び開く必要があります。

以前のバージョンで作成されたソリューション

コンピュータにインストールされている Microsoft .NET Framework の各バージョンには、セキュリティ ポリシーが関連付けられています。Visual Studio Tools for Office ソリューションは、そのソリューションが作成された .NET Framework のバージョンのセキュリティ ポリシーを確認します。つまり、Visual Studio Tools for Office Version 2003 を使用してソリューションを作成した場合は、.NET Framework Version 1.1 のセキュリティ ポリシーを必ず確認します。Visual Studio 2005 Tools for Office を使用してソリューションを作成した場合は、.NET Framework Version 2.0 のセキュリティ ポリシーを必ず確認します。

Visual Studio Tools for the Office System 3.0 ソリューションは .NET Framework Version 3.5 を確認しますが、Office 2003 のソリューションは .NET Framework 2.0 を使用するように設定できます。詳細については、「方法 : 対象の .NET Framework を変更する」を参照してください。

ネットワーク上で作成したプロジェクト

共有ネットワーク位置にプロジェクトを作成できますが、作成したプロジェクトにコンピュータ (Machine) レベルで完全な信頼を付与するまで、ネットワーク経由でプロジェクトを実行することはできません。既定では、Visual Studio Tools for Office は、ユーザー (User) レベルで URL 証拠を付与します。アセンブリには、手動で、コンピュータ (Machine) レベルの完全な信頼を付与する必要があります。

URL 証拠だけを使用して完全な信頼を与えると、その場所に書き込みアクセス権を持つ悪意のあるユーザーがアセンブリを自分のコードに置き換えて、人々にそれを実行させる可能性があります。URL 証拠の代わりに、または URL 証拠に加えて使用できる他の形式の証拠を検討してください。詳細については、このトピックの「証拠の種類」を参照してください。

エンド ユーザーのセキュリティ

エンド ユーザーは、通常のドキュメントを開くのと同じように、マネージ コード拡張機能が設定されたドキュメントを開きます。ドキュメントがエンド ユーザーのコンピュータ上に存在する場合やドキュメントにネットワーク共有の信頼が付与されている場合、Word または Excel は、アセンブリを読み込んで実行しようとします。アドインの場合は、ユーザーが Microsoft Office アプリケーションを起動するときにアドインが読み込まれます。

Microsoft Office アプリケーションは、セキュリティ ポリシーをチェックして、次のいずれかの処理を実行します。

  • アセンブリとドキュメント (該当する場合) に明示的にアクセス許可が付与されている場合、そのアセンブリは実行を許可されます。エンド ユーザー コンピュータにおけるセキュリティ ポリシーの設定の詳細については、「セキュリティ ポリシーの配置」を参照してください。

  • アクセス許可の決定のためにアセンブリに設定されている唯一の証拠が、すべてのコードまたはゾーンをベースとしている場合、コードは実行されず、現在のセキュリティ ポリシーではコードを実行できないことを示すエラー メッセージが表示されます。コードを実行できるようにポリシーを設定するには、ユーザーは管理者に連絡する必要があります。

既定の Visual Studio Tools for Office セキュリティ ポリシーでは、カスタマイズのコードの実行は許可されません。既定では、セキュリティ ポリシーは MyComputer ゾーンを信頼しますが、マネージ コード拡張機能を持つドキュメントのアプリケーション ドメイン ポリシーは、コードに明示的に信頼が付与されていない限り、MyComputer ゾーンのコードの実行を許可しません。これは、開発者およびエンド ユーザーが通常体験する動作とは異なりますが、既定の設定を使用すればデスクトップをより安全に保護できます。さらにエンド ユーザーは、信頼されていないコードを実行できるよう、Office 内のセキュリティ オプションを変更することができません。.NET セキュリティ ポリシーを明示的に変更した場合にだけ、マネージ コード拡張機能を実行できます。

Office ドキュメントの信頼

多くの場合、Office ドキュメントは MyComputer ゾーンから実行されます。そして、何もアクションを実行しなくてもドキュメントは予期したとおりに開かれます。しかし、アプリケーションを実行するには、アセンブリに完全な信頼が付与されている必要があります。電子メールの添付ファイルとして受信したドキュメントは、それが信頼されているアセンブリを指しているとしても、ソリューションを実行する前にユーザーのデスクトップなど別の場所に保存する必要があります。これは、添付ファイルが完全な信頼を付与されていない Internet ゾーンにあるからです。

ドキュメントがネットワーク上にある場合、管理者はそのドキュメントにもアクセス許可を付与する必要があります。テンプレートなどの静的ドキュメントの場合、管理者はドキュメントの完全パス (URL) をベースにドキュメントを信頼できます。多くのユーザーが任意のコンテンツをアップロードできる SharePoint リストのような、より一般的な保存場所の場合、管理者は、該当する共有位置に配置されている Office ドキュメントだけを信頼するよう選択できます。詳細については、「方法 : 共有の場所にあるドキュメントおよびブックにアクセス許可を与える (2003 システム)」を参照してください。

アセンブリからの信頼の削除

組織内でセキュリティ上の問題が発見された場合、管理者は、すべてのコードに実行するためのアクセス許可を付与しないポリシーを適用して、一時的にすべてのマネージ コードを無効にすることができます。必要なマネージ コードがある場合、管理者は、その必要なコードに固有のプロパティ (位置、厳密な名前、または署名) を選択し、必要なアクセス許可を付与して、必要とするコードだけが実行されるようポリシーをさらに変更できます。セキュリティ上の問題が解決したら、ポリシーを元に戻すだけでマネージ コードを簡単に有効にできます。詳細については、「方法 : フォルダおよびアセンブリからアクセス許可を削除する (2003 システム)」を参照してください。

参照

概念

安全な配置 (2003 システム)

Office ソリューションのセキュリティに関するベスト プラクティス (2003 システム)

Office ソリューションに固有のセキュリティに関する考慮事項

アプリケーションの保護

その他の技術情報

Office ソリューションにおけるセキュリティ (2003 システム)