Share via


Office ソリューション開発者向けのセキュリティの注意事項

テスト環境で Office セキュリティを設定する

注:

Visual Basic for Applications (VBA) コードを含めたり、マクロが有効なドキュメント、ワークシート、またはプレゼンテーションにのみ COM アドインを実行したりできます。 マクロが有効なファイルは、Word で .docm または .dotm 拡張子を持つドキュメントを保存することで作成できます。Excel の .xlsm、.xltm、または .xlam 拡張機能。PowerPoint の .pptm、.potm、.ppam、または .ppsm 拡張機能。

署名されていない COM アドインをインストールして実行するには、セキュリティ センターの [アプリケーション アドインを信頼された発行元によって署名する必要があります] オプションと [すべてのアプリケーション アドインを無効にする] オプションをオフにする必要があります。 [ アドイン ] タブを開くには、[ ファイル ] タブを選択し、[オプション] [>セキュリティ センターセキュリティ センター>の設定>] [アドイン] の順に選択します。

デジタル署名されていないものも含めて、すべての VBA マクロを実行するには、セキュリティ センターで [すべてのマクロを有効にする] オプションを選択する必要があります。 [マクロの設定] オプションを表示するには、[ファイル] タブを選択し、[オプション] [>セキュリティ センターのセキュリティ センター>の設定][マクロの設定]> の順に選択します。 セキュリティ上の理由により、この設定を適用するのはテスト環境だけにすることを強くお勧めします。 テスト終了後は元の状態に戻してください。

セキュリティ センターの [マクロ設定] タブで、オプションを [通知なしですべてのマクロを無効にする]、[通知ですべてのマクロを無効にする]、または [デジタル署名マクロを除くすべてのマクロを無効にする] に設定します。 マクロを無効にするには、Word 文書、Excel ワークシート、または PowerPoint プレゼンテーションをマクロ無効ファイル (.docm、.xlsm、または .pptm) として保存します。 [ マクロ設定] タブで [VBA プロジェクト オブジェクト モデルへのアクセスを信頼する] オプションを選択またはオフにして 、VBA プロジェクト オブジェクト モデルへのアクセスを 設定または無効にします。

注:

Office Fluent リボン ユーザー インターフェイスでは、COM やアプリケーション特有のアドインが有効化されて読み込まれると、それらのコントロールが [アドイン] タブに表示されます。

セキュリティ センターの [アドイン] タブで、使用可能 なアドイン の一覧を確認します。 同じタブで、[ 管理 ] ラベルの横にあるドロップダウン ボックスでアドインの種類を選択し、[ 移動 ] ボタンを選択して、COM アドインまたは Word アドインを有効、無効、追加、または削除します。

Windows レジストリを変更する

レジストリ エディターでもプログラムによっても、任意の方法で Windows レジストリを変更すると、常にある程度のリスクが伴います。 変更が不適切な場合、オペレーティング システムの再インストールが必要になるなどの問題が起きる場合があります。 変更する前に、まずコンピューターのレジストリをバックアップすることをお勧めします。 Microsoft Windows NT、Windows 2000、Windows XP、または Windows Server 2003 を実行している場合は、緊急修復ディスク (ERD) も更新する必要があります。

レジストリを編集する方法については、レジストリ エディター (Regedit.exe) の「キーと値の変更」ヘルプ トピック、またはレジストリ エディター (Regedt32.exe) のレジストリ情報の追加と削除に関するトピックを参照してください。

Windows API 関数呼び出しを行う

Windows アプリケーション プログラミング インターフェイス (API) 関数を呼び出す前に、引数とデータ型が Windows API DLL によってどのように処理されるかを理解しておく必要があります。 Windows 関数の呼び出し方が適切でないと、無効なページ フォールトなどの予期しない動作が引き起こされる可能性があります。 Windows 関数を呼び出す方法の詳細については、Office 2000 Developer Online ドキュメントの「Windows API とその他のDynamic-Link ライブラリ」トピックを参照してください。

コードにデジタル署名する

ドキュメントのデジタル署名は、ドキュメントの受信者が特定のソースから送信されたことを保証し、ドキュメントの内容がドキュメントの署名後に変更されたかどうかを検出できるように、ドキュメントを "スタンプ" するプロセスです。 さらに、デジタル署名を使用してドキュメントを読み取り専用としてマークし、その信頼性と整合性を保護できます。

デジタル署名に加え、ドキュメントのコンテンツ内に表示される、ドキュメント内署名を施すこともできます。 ドキュメントの発信者は、ドキュメントに署名行を設け、署名しない状態で受信者に送って、署名するように求めることができます。 受信者はそのドキュメントを開いて署名行を見つけ、署名を施して発信者に返します。

ドキュメントにデジタル署名する手順を大まかにまとめると、次のようになります。

  1. ドキュメントの発信元は、"ハッシュ" と呼ばれるプロセスを使用して、ドキュメントのコンテンツを数行に圧縮します。圧縮されたコンテンツは、メッセージ ダイジェストと呼ばれます。 ハッシュ化処理は専用のソフトウェアで行います。
  2. 次に発信者は、署名機関から取得した秘密キーを使ってメッセージ ダイジェストを暗号化します。 これがデジタル署名です。
  3. 発信者はこのデジタル署名をドキュメントに添付します。 ここまでで、ハッシュ化されたデータ全体に署名が施され、署名が暗号化されて、ドキュメントに添付されたわけです。
  4. 発信者はこのドキュメントを受信者に送ります。
  5. 受信者はまず、発信者から受け取った公開キーを使ってドキュメントを復号します。 これにより、署名はメッセージ ダイジェストの形に戻ります。 これがうまくいけば、ドキュメントは確かに発信者が署名したものであることが証明されます。
  6. 受信者はデジタル署名ソフトウェアを使って、ドキュメントをハッシュ化してメッセージ ダイジェストを生成し、このハッシュと発信者から受け取ったハッシュを比較します。 両者が一致すれば、発信者がドキュメントを送信してから、ドキュメントの内容は改変されていないことになります。

デジタル署名をユーザーが利用できるようになったのは Office XP 以降です。 しかし、Office 2007 では機能が追加され、より簡単な操作でドキュメントにデジタル署名し、ドキュメントに署名して読み取り専用にし、ドキュメント内にインライン署名行を追加することができるようになりました。 Office ユーザーは、[ ファイル ] タブで使用できる Office ユーザー インターフェイスからこれらのタスクを実行できます。

Office 2007 では、インライン署名やデジタル署名をプログラムで操作しやすくするメンバーも導入されました。

Office にマネージド COM アドインを安全に展開する

Office セキュリティに準拠するには、マネージ COM アドイン (共通言語ランタイムを目的とする COM アドイン) にデジタル署名し、セキュリティ センターで、Office アプリケーションにアドインを追加できるようにユーザーのセキュリティを設定する必要があります。 さらに、マネージ COM アドイン プロジェクトに小規模なアンマネージ プロキシ (shim と呼ばれる) を組み込んで、予期しないセキュリティ警告を回避する必要があります。

Visual Basic エディターを自動化する

Office では、Visual Basic for Applications機能拡張オブジェクト モデルの機能を呼び出すときに、Visual Basic プロジェクトへのプログラムによるアクセスが信頼されていないというエラー メッセージが表示される場合があります。 このメッセージが表示されないようにするには、[ファイル] タブ [オプション>] [セキュリティ センター] > タブの順に選択し、[セキュリティ センターの設定] を選択します。 次に、[ マクロ設定] タブで、[ VBA プロジェクト オブジェクト モデルへのアクセスを信頼 する] ボックスを選択します。 このボックスをオンにすると、開いたマクロが有効なドキュメント内のマクロが、Visual Basic のコア オブジェクト、メソッド、およびプロパティにアクセスできるようになります。

オプションを設定すると、セキュリティ上の危険が発生する可能性があります。 推奨される動作は、Visual Basic オブジェクト モデルにアクセスするマクロの期間だけ、[VBA プロジェクト オブジェクト モデルへのアクセスを信頼 する] ボックスをオンにすることです。 マクロの実行が完了したら、[ VBA プロジェクト オブジェクト モデルへのアクセスを信頼 する] ボックスをオフにしてください。

パスワードを使用する

アプリケーションではハードコードされたパスワードを使用しないでください。 プロシージャでパスワードが必要な場合は、ユーザーに要求したパスワードを変数に格納し、プログラムでその変数を使います。

強力なパスワードを必ず使います。 強力なパスワードには以下が含まれます。

  • 小文字と大文字の両方
  • 数値
  • シンボル (#、$、%、^など)
  • 少なくとも 8 文字

強力なパスワードには、パターン、テーマ、辞書に掲載されている単語などを含めないでください。

  • $tR0n9p@$s
  • G80dn[s$M4!

注:

パスワードは頻繁に (たとえば、1 ~ 3 か月ごとに) 変更してください。

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。