Excel97以前のバージョンではどうだったか、ちょっと忘却してしまっているし、マック版のExcelではどうなのか分かっていないが、VBAのコードのデジタル署名は、Excel2000以降は考え方は変わっていないように思う。


基本的にデジタル署名の証明書を発行する第三者機関であるCA局と契約して証明書の権利を得て(こういう表現がいいのかどうか分からないが)、その権利の下で証明書を付ける。

ずいぶん前だが、デジタル署名の証明書を取得しようとしたことがある。なお、CA局ではコードサイニングという場合が多いようである。

ベリサインでは年8万円超だったが、他社で2万円超くらいで、真剣に検討したことがある。フレームワークの提供を本格化したらこれは再検討したいと思う。


なお、テスト用の目的限定ではあるが、証明書を作成するツールがある。

Ofiice2000ではDeveloper Edition に付いていた(他のEditionは無いと思う)。が、Ofiice XP Developer Editionには入っておらず、マイクロソフトに問い合わせた覚えがある。

2003からDeveloper Editionではなく別のVisual Studio の開発ツールになったこともあり、そちらは調べていないが、Office2007には付いていることを確認した。


環境上セキュリティレベルが高いところでも、署名があると動作させてよし、というポリシーであればこれで回避可能である。しかし、個人利用にとどめるべきだろう。業務で必要ならコードサイニングを行っているCA局と契約することをお勧めする。


余談になるかもしれないが。先日、内部統制について書いたが、VBAプロジェクトにパスワードでロックを掛けるだけで「改変されていないこと」を保証はできない。社内のシステムで、改変されていないことを保証するには、VBAプロジェクトに対してデジタル署名を行うと共に、署名者の管理を行うなどの必要性があるのではないだろうか。



先日、ラインプリンタについて書いた。
まだMS-DOSのバージョンが3.1とか3.3で、4が出た頃。UNIX(SONYのNEWS)上のCOBOL(RM-COBOL)からページプリンタを制御した事がある。今のCOBOLは拡張されているかも知れないが、当時のCOBOLの出力は「行単位」である。
※なお、この後「通常のCOBOL」と書くものは、私が経験の長かったIBM/富士通/日立の大型汎用機(MSP系)上のCOBOLを指します。

ページのレイアウトを考え、COBOLプログラムから出力するデータと帳票のフォームであるオーバーレイのデータとに分ける。ここまでは通常のCOBOLでも行うことだ。
そのとき特別に配慮したことは、フォントサイズの調整やオーバーレイの切替、バーコード出力など、プリンタへの制御コード送信、であった。この制御、分かるまでは難物であった。
プリンタ制御にはPC-PR201に準じたプリンタ言語を使ったのだが、それ自体はそう難しいものではない。通常のCOBOLではファイル出力もプリンタ出力もレコードへの出力で、制御を意識するなら
既にメーカーごとのCOBOLの仕様による改行数や改ページ、漢字のフォントサイズくらいであり、制御コードそのものを意識する必要はなかった。(COBOLerなら当然、データをバイナリーコードで確認した経験があるでしょう。そういう意味ではメーカーごとの漢字の開始/終了コードや改ページコードなどは知識としては知っているでしょうけれどね)


まずは、制御コードをプリンタの出力にのせてみた。すると「ごみ」が表示される始末。つまり、COBOL言語の仕様内からプリンタを制御することは不可能、ということを意味する。
よって考えたのが
・制御コードを送信するCプログラムをコールする
・印刷データをCプログラムに渡し、そちらで埋め込む
・UNIXのシェルを呼び出してプリンタに制御コードを送付する
などであった。

結局、シェルコールがCOBOLから保証されていたのでそれを使うことで解決した。

当時はそのプログラムからしかそのプリンタへのアクセスはなかったが、今だとそういう乱暴なプログラムだと「別の印刷タスク」と認識されてしまうのだろう。
今、アプリケーションからそのような制御が必要になることはそうないのだろうけれど、もし必要な場合はどう作ればいいのだろう?ちょっと気になる。


以下、当時の記憶などを思い出しながら、インパクト式プリンタを運用で使う際の考慮点を独断と偏見でまとめました。



インパクト式プリンタの考慮点

J-SOX、内部統制関連で当初見落としだったのが、スプレッドシートである。企業の中で広く使われている実態を考慮すると、スプレッドシートに関しては「監査の実務上、監査対象とするかどうか判断に迷う」ということで、盛り込まれたそうだ。

スプレッドシートといわれているものの、ほぼExcelのことを指すことは間違いない。


つまり、スプレッドシートに関しても「システムである」という認識であるわけで、当然「説明責任」を負うことになる。

なのにExcelに関してきちんとした方策がとられているのか?属人的であったり、改変が行えたり、と、統制とかけ離れている場合も多いだろう。


更に、Excelの保護に精通している人も少ない。つまり、監査基準にも漏れがないとは言い切れないのではないか?ここは検証してみる必要があるとは思っている。