Q

顧客情報を扱うWebアプリケーションの画面を,ユーザーに印刷させたくありません。市販ツールを利用せず簡単に制限をかける方法はありませんか?

A

情報の漏えいを防ぐという観点から,アプリケーションの画面を一般ユーザーに印刷させたくないという要件は最近多々あると思います。今回のような条件はInternet Explorer管理者キット(IEAK)を使っても可能ですが,ここではレジストリやグループ・ポリシーを使って実現する方法を説明します。

 Internet Explorer(IE)に表示された内容を印刷できないようにするだけならば,「ブラウザの印刷機能を無効にする」という設定があれば便利です。

 しかし,グループ・ポリシーの中にIEに制限をかけるポリシーがいくつかあるものの,残念ながら印刷を無効にするポリシーはありません。そこで,レジストリを直接編集して印刷を制限するように設定します。


△ 図をクリックすると拡大されます
図1●レジストリを設定するとInternet Explorerの印刷関連メニューがなくなる

 具体的にはレジストリのHKEY_CURRENT_USER
\Software\Policies\Microsoft
\InternetExplorer\Restrictionsというキー(ない場合は作成)にDWORD値で「NoPrinting」で「1」を設定すれば印刷関連のメニューが非表示になります(図1)。右クリックで表示されるメニューやボタン,Ctrl+Pでの印刷機能も使えなくなります。なお,この値を「0」に設定すると印刷の制限は無効となります。

データ保存や画面のコピーも禁止する
 ただし,情報漏えいを防ぐには,印刷を禁止するだけでは不十分です。コンテンツが保存できるとWordなど他のアプリケーションから印刷できますし,画面イメージを直接コピーして印刷することも考えられます。


△ 図をクリックすると拡大されます
図2●Internet Explorerで表示した画面をファイルとして保存できなくするにはグループ・ポリシーを使う

 まず,IEで表示されたコンテンツを保存させない設定はグループ・ポリシーで実現可能です。[ユーザーの構成]-[管理用テンプレート]-[Windowsコンポーネント]-[Internet Explorer]-[ブラウザのメニュー]にある[[ファイル]メニュー:[名前を付けて保存]コマンドの使用を許可しない]という項目を[有効]にすれば制限できます(図2)。このポリシーは印刷を禁止する場合と同じレジストリ・キーに「NoBrowserSaveAs」というDWORD値で保存されるので,こちらを直接編集しても同様の設定が可能です。



△ 図をクリックすると拡大されます
図3●レジストリ・エディタ(regedt32.exeなど)を使ってキーを追加すればPrintScreenキーを無効にできる

 画面のイメージ・コピーを禁止するのは,やや強引ですが「PrintScreen」キーを無効にするようにマッピングすることで実現します。具体的にはHKEY_LOCAL_MACHINE
\SYSTEM\CurrentControlSet
\Control\Keyboard Layoutというレジストリ・キーにScancode Mapというバイナリ値を作成し図3のようなデータを入力します。

 この内容を簡単にいうと,PrintScreenキーのスキャン・コードである「E037」と,Alt+PrintScreenキーのスキャン・コードである「54」に,無効のNULL値である「00」を割り当てています。この設定はキーボードの種類によって異なる場合があるので事前に検証してください。

 詳しく説明すると,これらの数字は8文字単位になっており,最初の2つの「0000 0000」がヘッダー,次の「0300 0000」がマッピング・エントリ数(今回は2つのエントリなのでターミネータと合わせて3),最後の「0000 0000」がターミネータです。その間の2セットがマッピングの変更で「0000 37E0」ではPrintScreen(E037)にNULLを,「0000 5400」ではAlt+PrintScreen(54)にNULLを割り当てています。このように上位と下位のバイトを入れ替えた上で,「置き換えるコード,置き換えられるコード」の順に記述します。

 これらの設定を複数のマシンに一括して有効にしたい場合は,2003年8月号のp.91で説明したカスタム・ポリシーを利用します。

 ただし,この方法を使っても別のツールを使って画面のコピーを取ることまでは制限できません。Office製品を含めて本格的に印刷制限をしたい場合は,やはり市販ツールを利用するほうがよいでしょう。

天野 朋樹