導入の背景・目的・課題

システム開発会社のS社は、VBAを使ったシステム開発を強みとしており、これまでの1,000社を超える開発実績とそのノウハウから、製造業や物流業、サービス業など幅広い業種から相談を受けています。

ある時、顧客から以前開発したExcelのマクロを活用した在庫管理システムについて相談がありました。その案件は、基幹システムのデータを利用して、倉庫の商品在庫が把握できるようにしていましたが、基幹システムをリプレイスしたところ在庫管理システムのマクロが実行できなくなってしまったとのことでした。S社の技術営業O氏が在庫管理システムを調べたところ、Microsoft Office製品のセキュリティが厳しくなり、Officeアプリケーションのマクロの設定が以下に設定されている場合、VBAやマクロは動作できない設定になっていることがわかりました。

警告を表示せずにすべてのマクロを無効にする

警告を表示せずにすべてのマクロを無効にする

警告を表示してすべてのマクロを無効にする

告を表示してすべてのマクロを無効にする

マクロを実行するためには、下記のいずれかにマクロを設定する必要がありますが、

デジタル署名されたマクロを除き、すべてのマクロを無効にする

デジタル署名されたマクロを除き、すべてのマクロを無効にする

すべてのマクロを有効にする

すべてのマクロを有効にする

一方で「すべてのマクロを有効にする」を設定させるのは、危険なコードが実行される可能性があり、顧客にリスクを負わせることになるため、懸念していました。

そこでO氏が調べた結果、顧客には「デジタル署名されたマクロを除き、すべてのマクロを無効にする」に 設定した上で、正規の認証局が提供する電子証明書サービスを導入していただくことで、セキュリティリスクの軽減とVBAやマクロの実行が両立できることを知り、サービス導入へ向けて検討を開始しました。

デジタル署名されたマクロを除き、すべてのマクロを無効にする

署名がないとVBAやマクロが実行できない

セキュリティの警告「マクロが無効にされました」

導入までの経緯

O氏は、正規の認証局が提供するソフトウェア用のデジタル署名を導入するため、Microsoft のサポートページにあったグローバルサインの日本版サイトを見てみることにしました。

ソフトウェア用のデジタル署名ができるコードサイニング証明書を提供しており、オンラインで見積も簡単に取得できるようになっていました。契約期間は1~3年とありましたが、更新頻度をなるべく抑えたいと考えたO氏は、3年での見積を取得しました。顧客にも費用の件で了承がとれたことから、コードサイニング証明書の導入を決めました。

導入して良かった点・導入効果

コードサイニング証明書をグローバルサインのウェブサイトで申請し、Windows環境にてドライバをインストール後、コードサイニング証明書を取得しました。O氏にて用意したUSBトークンに証明書と秘密鍵を格納し、Microsoft Officeのマクロのコードにデジタル署名をすることで、セキュリティ設定を下げることなく、安全にVBAやマクロを実行できるようになりました。

導入後、技術営業のO氏は「アプリケーションのセキュリティレベルを下げれば解決できるものだったかもしれませんが、悪意のある第三者が作成した不正なコードを含むマクロもあるため、先々を考え、リスクに対して早めに対処できました。Office署名により信頼できる発行元が作成したVBAやマクロであること、そして署名後に変更や保存が行われていないことを確認できることにより、安全性を保てるようになってよかったです。」とおっしゃっていました。

VBAやマクロの発行元を特定

VBAやマクロの発行元を特定

署名の詳細を表示し、信頼される認証局、証明書であることを確認し、以下の項目から選択します。

設定項目名 動作内容
不明なコンテンツから保護する マクロは実行されません
このセッションのコンテンツを有効にする セッション中はマクロを有効にします
この発行者のドキュメントをすべて信頼する 署名者の証明書がOffice製品の信頼できる発行元に登録され、以後、署名済みのマクロは常に有効となります

Microsoft Officeファイルを悪用しウイルスに感染させる手法も流行しているため、安全に利用できるよう真正性を保証する対策をしていくことが重要です。