Excel 2003 におけるアドインと VBA マクロのセキュリティについて
Siew Moi Khor
Microsoft Corporation
May 2005
適用対象:
Microsoft Office Excel 2003
要約: Excel 2003 のセキュリティ設定とセキュリティ オプションを使用して、悪意のあるコンポーネントが読み込まれる危険性を低減し、コンポーネントの発行元の ID を確認して、ユーザーが明示的な信頼に基づいた決定を行うことができるようにする方法を説明します。
目次
はじめに
Excel のセキュリティ オプションの表
Excel 2003 のセキュリティの確認表示について
[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスについて
その他のリソース
はじめに
Microsoft Office Excel 2003 には、ユーザーが悪意のあるコンポーネントを読み込む危険性を低減するのに役立つ多くのセキュリティ オプションが用意されています。Excel 2003 で、Excel アドインや Microsoft Visual Basic for Applications (VBA) マクロが読み込まれるか、または無効になるかは、多くの要素に左右されます。
この記事では、Excel 2003 のセキュリティ機能によって、悪意のあるコンポーネントが読み込まれる危険性がどのように低減されるかについて説明します。このセキュリティ機能では、コンポーネントの発行元の ID を確認し、ユーザーの特定のセキュリティ設定に応じてユーザーが明示的な信頼に基づいた決定を行うことができるようにします。
Excel のセキュリティ オプションの表
表 1 と表 2 では、マクロとアンマネージ コード COM アドイン (Microsoft Visual Studio 6.0 を使用して構築されたもの) を読み込むときの Excel 2003 の動作について説明します。
重要: マネージ コード COM アドイン (Microsoft Visual Studio .NET を使用して構築されたもの) の詳細については、「Isolating Office Extensions with the COM Shim Wizard」(英語) と「Office XP でのマネージ COM アドインの配置」に詳しく記載されている、セキュリティの確認方法とマネージ コード COM アドインを読み込む方法を参照してください。
[セキュリティ] ダイアログ ボックスが使用できるかどうかは、Office アプリケーションによって異なります。また、このダイアログ ボックス内のオプションも、アプリケーションによって異なる場合があります。[セキュリティ] ダイアログ ボックスを表示するには、[ツール] メニューの [マクロ] をポイントし、[セキュリティ] をクリックします (図 1 参照)。
図 1. Excel 2003 のセキュリティ オプション
注: [以前の信頼できる発行元] タブは、以前のバージョンの Office で (Microsoft Internet Explorer ではなく) Office の信頼の格納場所を使用して、信頼された証明書を追加した場合にのみ表示されます。
また、特定の Office アプリケーションでは、特定のディレクトリからのみ暗黙的にマクロを読み込みます。たとえば、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオンにすると、個人またはワークグループの "信頼できる" 場所に格納されたすべてのマクロが、コードへの署名の有無にかかわらず実行が許可されます。ただし、すべての Office アプリケーションで、マクロに対して "信頼できる場所" のオプションがサポートされているわけではありません。
注: "信頼できる場所" はマクロのみに適用される用語で、ユーザーまたは管理者が信頼するフォルダとして選択したフォルダを指します。信頼できる場所はすべての Office アプリケーションでサポートされているわけではありませんが、特定のフォルダは既定で信頼されています。信頼できる場所は、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオンにしたときだけ適用されます。このチェック ボックスをオンにすると、特定の個人またはワークグループの "信頼できる場所" に格納されているすべてのマクロが、コードへの署名の有無にかかわらず読み込まれます。信頼できる場所の一部は、Excel で、[ツール] メニューの [オプション] をクリックし、[全般] タブをクリックして確認できます (図 3 参照)。このタブの [起動時にすべてのファイルを開くフォルダ] ボックスに信頼できる場所が表示されます。
図 2 に、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスを示します。このチェック ボックスは、[セキュリティ] ダイアログ ボックスの [信頼できる発行元] タブにあります。
図 2. [組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックス
Excel で信頼できる場所を確認するには、[ツール] メニューの [オプション] をクリックします。図 3 に、[オプション] ダイアログ ボックスを示します。[全般] タブをクリックすると、信頼できる場所が [起動時にすべてのファイルを開くフォルダ] ボックスに表示されます。図 3 では、信頼できる場所は 1 つも指定されていません。
図 3. 起動時にすべてのファイルを開く特定の場所を指定できます
[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスの詳細については、この記事の後半の「[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスについて」を参照してください。
表 1. 図 1 と図 2 に示した [セキュリティ] ダイアログ ボックスのオプション
オプション | 概要 |
---|---|
最高 | [最高] セキュリティ レベルは、Office 2003 で新しく導入されたセキュリティ レベルです。このセキュリティ レベルを選択し、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオフにすると、すべてのアドインとマクロが、署名の有無や信頼できる発行元から発行されたかどうかにかかわらず無効になります。
[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオンにすると、組み込み済みのすべてのアドインが実行されます。ただし、マクロの実行が許可されるかどうかは、そのマクロが信頼できる場所に保存されているかどうかによって決まります。 |
高 | [高] セキュリティ レベルを選択し、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオフにすると、未署名のすべてのアドインとマクロが無効になります。アドインまたはマクロが署名されていて、それらの発行元が [信頼できる発行元] の一覧にない場合、その発行元を信頼するか、またはそれらのアドインやマクロを無効にするかを選択するメッセージ ボックスが表示されます。アプリケーションのセッション単位で、アドインやマクロを実行するかどうか選択することはできません。選択できるのは、発行元を信頼するかしないかということだけです。
[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオンにすると、署名の有無にかかわらず、組み込み済みのすべてのアドインが実行されます。マクロは、署名の有無にかかわらず、信頼できる場所に格納されていれば実行されます。 |
中 | [中] セキュリティ レベルを選択し、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオフにすると、未署名のすべてのアドインとマクロを有効にするか、または無効にするかを選択するメッセージ ボックスが表示されます。アドインまたはマクロが署名されていて、それらの発行元が [信頼できる発行元] の一覧にない場合、その発行元を信頼するか、またはそれらのアドインやマクロをドキュメントのセッション単位で有効にするかを選択するメッセージ ボックスが表示されます。
[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオンにすると、署名の有無にかかわらず、組み込み済みのすべてのアドインが実行されます。マクロは、署名の有無にかかわらず、信頼できる場所に格納されていれば実行されます。マクロが信頼できる場所にない場合、それらのマクロを有効にするか、または無効にするかを選択するメッセージ ボックスが表示されます。マクロを有効にした場合、そのマクロは、現在のアプリケーションのセッションでのみ実行できます。 |
低 | [低] セキュリティ レベルを選択すると、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスの状態、アドインまたはマクロが署名されているかどうか、マクロが信頼できる場所に格納されているかどうかにかかわらず、すべてのアドインとマクロが読み込まれます。Excel のセキュリティ レベルを [低] に設定すると、セキュリティを設定していないのとほぼ同じことになります。 |
組み込み済みのアドインとテンプレートをすべて信頼する | 特定の Office アプリケーションで [組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオンにすると、署名の有無にかかわらず、組み込み済みおよび登録済みのすべてのアドインが信頼できると見なされます。また、アプリケーションで信頼できる場所がサポートされている場合、信頼できる場所にあるすべての組み込み済みのマクロは、署名の有無にかかわらず、信頼できると見なされ読み込まれます。 |
表 2 では、セキュリティ設定オプションについて詳しく説明します。この表では、特定のオプションの状態が、アドインまたはマクロの読み込みに与える影響について説明します。
注: 表 2 で "不問" と記載されているエントリは、アドインまたはマクロがデジタル署名されているか、アドインまたはマクロが信頼できる発行元から発行されたかどうか、マクロが信頼できる場所に格納されているかどうかにかかわらず、Excel により、そのアドインやマクロが特定のセキュリティ設定の組み合わせに対して同様に処理されることを示しています。
表 2. セキュリティ設定オプションの表
セキュリティ レベル | [組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックス | アドインまたはマクロがデジタル署名されている | アドインまたはマクロが信頼できる発行元から発行されている | マクロが信頼できる場所に格納されている | マクロに対する Excel の動作 | アドインに対する Excel の動作 |
---|---|---|---|---|---|---|
最高 | オン | 不問 | 不問 | はい | 暗黙的にマクロを読み込みます。 | 暗黙的にアドインを読み込みます。 |
オン | 不問 | 不問 | いいえ | マクロを読み込みません。ユーザーには、マクロが無効になったことを示す警告 (図 4 参照) が表示されます。 | 暗黙的にアドインを読み込みます。 | |
オフ | 不問 | 不問 | 不問 | マクロを読み込みません。ユーザーには、マクロが無効になったことを示す警告 (図 4 参照) が表示されます。 | アドインを読み込みません。 | |
高 | オン | 不問 | 不問 | はい | 暗黙的にマクロを読み込みます。 | 暗黙的にアドインを読み込みます。 |
オン | 不問 | 不問 | いいえ | マクロを読み込みません。ユーザーには、マクロが無効になったことを示す警告 (図 5 参照) が表示されます。 | 暗黙的にアドインを読み込みます。 | |
オフ | はい | はい | 不問 | 暗黙的にマクロを読み込みます。 | 暗黙的にアドインを読み込みます。 | |
オフ | はい | いいえ | 不問 | マクロを無効にするか発行元を常に信頼するかを選択するメッセージ ボックスが表示されます。 | アドインを無効にするか発行元を常に信頼するかを選択するメッセージ ボックスが表示されます。 | |
オフ | いいえ | 該当なし | 不問 | マクロを読み込みません。 | アドインを読み込みません。 | |
中 | オン | 不問 | 不問 | はい | 暗黙的にマクロを読み込みます。 | 暗黙的にアドインを読み込みます。 |
オン | 不問 | 不問 | いいえ | マクロを無効にするか有効にするかを選択するメッセージ ボックスが表示されます。 | 暗黙的にアドインを読み込みます。 | |
オフ | はい | はい | 不問 | 暗黙的にマクロを読み込みます。 | 暗黙的にアドインを読み込みます。 | |
オフ | はい | いいえ | 不問 | マクロを無効にするか有効にするかを選択するメッセージ ボックスが表示されます。ユーザーは、現在のセッションでのみマクロを有効にするか、または常にその発行元を信頼するように選択できます。 | アドインを無効にするか有効にするかを選択するメッセージ ボックスが表示されます。ユーザーは、現在のセッションでのみアドインを有効にするか、または常に発行元を信頼するように選択できます。 | |
オフ | いいえ | 該当なし | 不問 | マクロを無効にするか有効にするかを選択するメッセージ ボックスが表示されます。 | アドインを無効にするか有効にするかを選択するメッセージ ボックスが表示されます。 | |
低 | オン | 不問 | 不問 | はい | 暗黙的にマクロを読み込みます。 | 暗黙的にアドインを読み込みます。 |
低 | オフ | 不問 | 不問 | 不問 | 暗黙的にマクロを読み込みます。 | 暗黙的にアドインを読み込みます。 |
図 4. セキュリティ レベルが [最高] に設定されているためにマクロが無効になったことを説明する警告メッセージ (クリックすると拡大表示できます)
図 5. セキュリティ レベルが [高] に設定されているためにマクロが無効になったことを説明する警告メッセージ (クリックすると拡大表示できます)
Excel 2003 のセキュリティの確認表示について
クライアント コンピュータに組み込まれ登録されたアドインと、クライアント コンピュータに組み込まれたマクロが Excel でどのように処理されるかは、次の条件によって決まります。
[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスがオンになっているかどうか
このチェック ボックスをオンにすると、Excel では暗黙的に (セキュリティの確認表示を行わずに) アドインが読み込まれます。このチェック ボックスをオフにした場合、ユーザーへの確認が行われるかどうかは、表 1 と表 2 に記載した Excel のセキュリティ設定をどのように構成したかによって決まります。
注: Excel 2003 の既定の構成では、セキュリティ レベルが [高] に設定され、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスがオンになっています。
[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスの詳細については、この記事の「[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスについて」を参照してください。
アドインまたはマクロがデジタル署名されているかどうか
開発したアドインとマクロを配布する前には、VeriSign や GTE などの証明機関を使用してアドインとマクロに署名することを強くお勧めします。セキュリティは、ほとんどの組織の全般的な IT 戦略で欠かせないものになっています。セキュリティを重視している多くのユーザーや管理者は、Office アプリケーションのセキュリティ レベルを [高] に設定し、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオフにしています。この構成を行うことを強くお勧めします。
アドインとマクロにデジタル署名すると、多くの利点が得られます。公的に配布するアドインとマクロにデジタル署名すると、ユーザーに開発者が誰であるか、そのアドインとマクロが作成後に変更されていないことを保証できます。また、表 1 と表 2 に記載したように、セキュリティ レベルを [高] に設定し、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオフにすると、信頼できる発行元から発行された、署名付きの信頼できるアドインは読み込まれますが、未署名の (信頼できない) アドインは自動的に無効になります。このセキュリティ設定を使用した場合、コンポーネントを有効にするか、または無効にするかを選択するメッセージ ボックスが表示されるのは、ソフトウェアの発行元によってアドインまたはマクロの署名に使用された証明書が [信頼できる発行元] の一覧 (図 2 参照) にないときだけです。
アドインとマクロが信頼できる発行元から発行されたものであるかどうか
Excel 2003 では、ユーザーまたは管理者が信頼できる発行元として指定した発行元が識別されます。発行元には、ユーザーが所属する組織 (社内で開発されたアドインとマクロの場合) や、他の企業 (Microsoft など) を含めることができます。[信頼できる発行元] の一覧を表示するには、[ツール] メニューの [マクロ] をポイントし、[セキュリティ] をクリックして、[信頼できる発行元] タブをクリックします。表 1 と表 2 に記載したセキュリティ構成に応じて、Excel 2003 では、次のいずれかの方法でアドインとマクロを処理します。
暗黙的にアドインまたはマクロをメモリに読み込みます。
セキュリティの確認表示やユーザーによる操作を必要とせず、アドインまたはマクロをメモリに読み込みます。
署名付きのアドインやマクロを有効にするか、または無効にするかを選択するセキュリティの確認表示を行います。
ユーザーには、デジタル署名付きのアドインやマクロを無効にするか、または有効にするかを選択するメッセージ ボックス (図 6 参照) が表示されます。
図 6. ユーザーがアドインを無効にするか、または発行元を信頼することを選択できるメッセージ ボックス
このメッセージでは、ソフトウェアの発行元が [信頼できる発行元] の一覧に存在しないこともユーザーに警告します。また、このメッセージ ボックスには、ユーザーがそのアドインまたはマクロの発行元を次回から信頼できる発行元として認識するためのチェック ボックスが配置されています。これは、すべてのデジタル署名付きのアドインとマクロに適用される汎用的なセキュリティ警告です。
コンポーネントをメモリに読み込みません。
この操作は暗黙的に実行されますが、ユーザーには、図 4 と図 5 のようなアドインが無効になったことを示す警告が表示されます。
未署名のアドインやマクロを有効にするか、または無効にするかを選択するセキュリティの確認表示を行います。
アドインやマクロを無効にするか、または有効にするかを選択するメッセージ ボックスが表示されます。このセキュリティの確認表示は、図 6 のものとは異なることに注意してください。これは、アドインまたはマクロがデジタル署名されていない、つまり、ソフトウェアの発行元を識別するデジタル証明書を含んでいないためです。
ユーザーはアドインまたはマクロを有効にすることを選択し、特定のアドインまたはマクロを読み込むことができます。ユーザーがアドインを無効にすることを選択した場合、アドインはメモリに読み込まれません。また、マクロを無効にすることを選択した場合、マクロはメモリに読み込まれますが、無効状態になります。ユーザーがセキュリティ設定を変更しない限り、サポートしているアプリケーションを起動するたびに図 7 のメッセージが表示されます。
図 7. ユーザーが未署名のアドインやマクロを無効または有効にできるメッセージ ボックス
[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスについて
[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックス (表 1 参照) は、誤解されることが多いオプションです。このチェック ボックスは既定ではオンになっていますが、高度なセキュリティを必要とするユーザーは、このチェック ボックスをオフにすることをお勧めします。これは優れた "多層防御" の手段です。
未署名の個人用マクロや未署名の COM アドインを実行する必要がない場合は、このチェック ボックスをオフにしてください。表 1 と表 2 に記載したように、Office 2003 アプリケーションのセキュリティ レベルを [高] に設定し、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオフにすると、コードに署名されていないすべてのアドインとテンプレートが自動的に無効になります。アドインとテンプレートのコードが [信頼できる発行元] の一覧にない証明書を使用して署名されている場合、ユーザーには、それらのアドインやテンプレートを有効にするか、または無効にするかを選択するメッセージ ボックスが表示されます。
[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオンにすると、レジストリに組み込まれたすべての COM アドインや、個人またはワークグループの信頼できる場所に格納されたマクロが、コードへの署名の有無にかかわらず実行されます (COM アドインをレジストリに組み込むには管理者特権が必要です)。また、ユーザーは特定のテンプレート フォルダやスタートアップ フォルダにマクロを組み込むときに管理者特権を必要としないことにも注意する必要があります。たとえば、Excel では、次の 2 つの場所のフォルダがスタートアップ フォルダに該当します。
- Documents and Settings\user name\Application Data\Microsoft\Excel\XLSTART
- Program Files\Microsoft Office\Office11\XLSTART
[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオンにすると、悪意のある COM アドインをダウンロード、登録、および実行するか、または他のユーザーが信頼できる場所に配置した悪意のあるテンプレートを実行した場合、コンピュータが攻撃される可能性があります。登録されていないテンプレートでも、読み込むことができます。
次の手順では、デジタル証明書を購入せず、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオフにする場合に、個人用マクロまたはローカルに組み込んだ COM アドインを実行する方法について説明します。
- 個人用マクロまたはローカルに組み込んだ COM アドインを、(マクロには selfcert.exe、アドインには Authenticode ツールを使用して) テスト証明書で署名します。これで、セキュリティ レベルを [高] に設定し、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオフにしても、マクロとアドインを実行することができます。テスト証明書を生成する方法の詳細については、「Digital Code Signing Step-by-Step Guide」(英語) を参照してください。
- Office アプリケーションのセキュリティ レベルを [中] に設定し、[組み込み済みのアドインとテンプレートをすべて信頼する] チェック ボックスをオフにします。このセキュリティ設定を使用すると、アプリケーションの起動時に、COM アドインやマクロを無効にするか、または有効にするかを選択するメッセージ ボックスが表示されます。この設定は、テスト環境のみで使用することを強くお勧めします。
また、Microsoft TechNet Web サイトの「セキュリティに関する 10 の鉄則」にも目を通すことをお勧めします。
その他のリソース
セキュリティの詳細については、次の記事を参照してください。
- Office XP Visual Basic for Applications マクロ プロジェクトのコード署名
- Security in Microsoft Office 2003 Editions (英語)
- Digitally Sign a Word 2002 Document and Programmatically Retrieve Digital Signature Information (英語)
- Office 2003 Editions のセキュリティの強化
- Security Notes for Microsoft Office Solution Developers (英語)
- マイクロソフト サポート技術情報 822924: セキュリティ強化ではなく、グループ作業の有効化を目的とした Office 機能の概要
謝辞
この記事の執筆に力を貸してくれた同僚の Ambrose Treacy、Lawrence Landauer、および Dan James に感謝します。