VBAのセキュリティレベルの話

VBAはプログラムですから、悪意を持った人が使えば、コンピューターウイルスを広めるような仕組みが入っているものを広めるといったこともあるのです。

20年前の話ですがパソコンスクールの講師をやっていた時にパソコンスクールのパソコン50台に受講生が持ち込んだExcelデータにそのような悪意を持ったウイルスが混入しているマクロが入っていて、全パソコンにウイルスが感染してしまい1日パソコンスクールを臨時休校にしたことがあります。おそらく損失額は100万円弱でした。ある資格試験の直前でしたので受講生にも迷惑がかかりました。

今でこそそのようなウイルスは広まらないようにできていますが、しかしいつどこでセキュリティホールをついた悪意をもった仕組みが現れるか分かりませんので、もっと根本にあるマクロやVBAのセキュリティについて調べてみました。

私を含め、よくマクロが動かなくなった時にセキュリティレベルを一番低くすればいいと言いがちですが、それは本当にいいのか、もう一度考えてみたいと思います。

Excelに限らず、Microsoft Officeで作成したデータはマクロを入れることができるものが多く、マクロを入れる場合、ファイルの種類をデフォルトのままではなくマクロ有効ファイルにして保存しなければなりません。そうすることによって普通のファイルアイコンと違う形のファイルアイコンになりますし、拡張子も変わりますので、それで開く前に本当にそれで開いていいのか判断できるようになっています。

デフォルトでは、セキュリティレベルは一番ガチガチの設定になっています。それはマクロが動かない設定です。

作成したマクロを誰かに送った時に動かないと言われた時には、はじめに案内するのは昔の名称であればセキュリティセンター、最近トラストセンターに名称が変わりましたが、オプション設定でこの設定を変えていくことになります。

マクロやVBAのセキュリティレベル

トラストセンターの設定では マクロの設定ができてマクロの設定のレベルが4段階で設定してあります。

「警告を表示せずにマクロを無効にする」ではマクロは動きません。

「警告を表示してすべてのマクロを無効にする」もマクロが動かないイメージなのですが、初めて開くマクロ有効ブックを開いた時に警告メッセージを表示してそこで「マクロ有効にする」ボタンをクリックすることによってそのブックがそれ以降マクロが有効な状態で開かれるという状態です。

「デジタル署名されたマクロを除き、すべてのマクロを無効にする」はデジタル署名という制作者の本人証明をマクロを作成する際にVBEで設定することによって、そのマクロは安全だと保証してあるものとして安全に開かれるようにしたブックであればマクロ有効で開くというものです。しかしこのデジタル署名も割と簡単に誰でも設定することができるので真の証明書になっているかどうかは私は判断できないということ、デジタル署名には有効期限がありその有効期限が切れた後はマクロは無効になってしまうのではないかということも私はどうかはよく分からないので、この設定をするにはかなり高度な知識が必要なのではないかなと思っています。デジタル署名の取得の方法はこの後説明します。

「すべてのマクロを有効にする」は有無を言わずマクロを有効にする状態で、一番お手軽ではあるもののセキュリティ的には一番まずいという状態です。

このどれが一番いいのかも状況にもよりますし一人ひとりの責任判断にもよりますので私も判断できない部分です。ただ、運用上、一番適切なのは「警告を表示してすべてのマクロを無効にする」にして初めて開くときにマクロを有効にする設定を1ファイルごとに行っていくのがマクロを使いつつ安全なラインを確保する選択肢なのかなと私自身は思います。

とはいうものの面倒なのでわりと「すべてのマクロを有効にする」の設定にしているパソコンも私のパソコンには何台かあります。

信頼できる場所

しかしこの設定によらず、あるフォルダーに入っているファイルは全て信頼できるのでマクロを有効で開くことができるという設定をすることができます。マクロで何かを開発する場合はその都度マクロを有効にするのも大変なので、プロジェクト用のフォルダを作ってそこで作業をするのがいいかなと思います。その手段は以下の通りです。

トラストセンターの信頼できる場所の中の新しい場所の追加をクリックすることによってフォルダーを設定することができます。

一つそのようなフォルダーを作っておいてサブフォルダーも信頼できる範囲に設定すればその中で複数のプロジェクトも開発できるので便利かなと思います。

デジタル署名

面倒ではありますがVBAにデジタル署名をつけることは誰にでも簡単にできそうです。

デジタル証明を発行するためにはSelfCertというOffice同梱のソフトを使う必要があるようなのですが、この場所がなかなか難しいので簡単に見つける方法を案内します。

 WindowsのスタートボタンをクリックしてWordやExcelのアイコンを右クリックしてその他の中のファイルの場所を開くをクリックすると、まず、WordやExcelのスタートメニューのショートカットアイコンがたくさん入っている所に会うので、その中のWordやExcelの アイコンを右クリックしてファイルの場所を開くをクリックします。

大文字のEXCELやWORDがあってこれがExcelやWordの本体なのですが、このフォルダーにSELFCERTというアプリケーションファイルがあるのでこれを開きます。私はこのツールを素直に開けなくてパソコンを何回か再起動してやっと開くことができるようになりました。それからは素直に開いています。

証明書の名前を聞いてくるので適当な名前を入れるのですがわからなくならないようにしてください。

どこに発行されたのか分かりませんが証明書が作られるのでVBEを開き、 ツールの中のデジタル署名をクリックして証明書の「選択」のボタンをクリックして表示された証明書を選択します。証明書を複数作成している場合はその他をクリックすると選択することができます。

そのままOKすれば、これから作成するマクロ、VBAにはデジタル証明書が添付されるようになるということなのですが、OKの前に詳細をクリックすれば その証明書の詳細が表示されます。 

デジタル証明をしたくなくなったら、VBEのツールの中のデジタル署名で「削除」をクリックすれば削除できます。削除というより設定を外すというだけで証明書自体は削除することが出来ません。別に証明書自体は削除する手段があるのでしょう。 

おそらくここで発行されたデジタル証明書は個人向けと言うか例えば政府機関のサイトで配布するようなデータに付けられるようなものではないと考えています。その場合はきちんとしたデジタル証明書の認証局から発行されたデジタル証明書を使わないといけないのではないかなと思います。最近マイナンバーカードと連動してそれができるようになったということも聞いているのでこれからそれが手軽になるといいなと思います。 

まとめ

セキュリティレベルの話をすると結局どれがいいのという話になるのですが、それを決めるのは実際にそのExcelを使う本人が自己責任で設定するしかないと考えています。そのためにはこの記事レベルの知識が必要になります。ただ正直なところこのレベルを一般的なWordやExcelユーザーに浸透させることはなかなかハードルが高いのではないかなと思っています。

実務的に考えればマクロのセキュリティはかなり面倒な話になり業務にとってはかなりなコストを浪費してしまっています。もっと簡単にセキュリティが担保されるとか、マクロには悪意のあるものが絶対に混入しないような仕組みとかが早く出てこないかなと思っています。

コメント

タイトルとURLをコピーしました