SKYSEA Client Viewには、USBデバイスを制御する機能があります。
一般的にUSBデバイスにはシリアル番号(デバイスインスタンスID)というものが割り当てられています。
SKYSEA Client Viewをはじめとする、IT資産管理ソフトウェアには、このシリアル番号をベースに、利用をしてよいか、悪いかを設定する機能を持っています。
システムにUSBデバイスの情報を一本一本登録し、登録されていないUSBデバイスは、すべて禁止、登録されているUSBデバイスについては、利用できるようにする、という仕組みです。
このシリアル番号なのですが、実は固有であることは、保証されていません。
時々、「ものすごく遠く離れた拠点で、同時に同じUSBデバイスが利用されているログが見つかったんだけど」という問い合わせをいただくことがありますが、経験上わずかではありますが、同じシリアル番号が割り当てられているUSBメモリって、意外にあるのです。
下記はエレコム様のリンクですが、
https://qa.elecom.co.jp/faq_detail.html?id=4242
エレコム様では、SKYSEA Client View等のツールで管理するために、シリアル番号の重複があるかないかの情報を提供しています。我々管理ソフトウェアのベンダーにとっては、ありがたい存在です。
さて、USBデバイスを使っていいかどうかを判断するのは、端末上になります。
登録されているどのUSBメモリが挿入されるかを予め予見することはできませんから、端末上で管理対象のすべての情報を参照できるようにしておき、USBデバイスが接続するたびに、照合するしかありません。
では、一旦全リストを端末に渡すこととして、これらのシリアル情報を渡すためのデータ量を考えてみましょう。
これらのツールは、おおむねベンダID、プロダクトID、シリアル番号の三種の情報を使っています。ベンダIDと、プロダクトIDは、4桁の英数字の情報ですので、それぞれ8バイトとします。
シリアル番号は可変ですが、おおよそ40バイトとしてみます。すると、USBデバイス一本当たり50バイトほどの情報量になります。
さて、会社によってはUSBメモリの登録本数は1万本以上にも及びます。そうなると、50×10000=0.5MBぐらいですね。PCが1000台ぐらいあると、500MBぐらいのトラフィック量になりますし、10000台にも及ぶと5GB程度のトラフィック量になります。
これらの情報は、極力最新でなければなりません。仮にサーバー上で情報を更新した後、全PCに通知して取りに来てもらうとすると、トータルで5GB程度の通信が突然発生することになります。
1Gbpsの速度が出ると仮定しても、40秒ほど、管理サーバーの通信は、USBデバイスの情報を配信するために利用されてしまうことになります。
そもそもUSBメモリというのは、さほど利用されるものではありませんので、そのために長時間そのための通信を特定の時間帯に発生されるというのはパフォーマンス的によくない、という話があります。
しかし、先にデータを渡しておこうとすると、こういう実装にならざるを得ません。通信量を抑えるためのアプローチとして、どういうものが考えられるでしょうか?
一つは、端末とUSBデバイスの組み合わせで登録しておくことです。端末あたりの登録本数を絞っておくことで、端末対サーバーの通信は抑えることができます。
また、必然的にあるUSBデバイスを特定の端末でのみ利用させたい、という利用シーンにはマッチします。半面、このUSBメモリはどこでも使っていいんだけどな、というときは管理が煩雑になります。端末が1万台並んでいる画面で、さらにウィンドウを開き、そこでUSBメモリの登録や紐づけを行うことになります。USBメモリ全体を俯瞰するわけではないので、面倒だと感じられる人もいそうです。
次に考えられるのは、USBデバイスの記憶容量の中に、利用条件を書き込んでおくことです。
こうしておくと、サーバーに通信を行うことなく、USBメモリが利用可能かどうかを判定することができます。
さて、SKYSEA Client Viewはどうしているのかというと、USBデバイスを利用するたびに、サーバーに確認を行っています。
こうすることで、USBメモリを利用する端末にだけ、最低限の通信を発生させるという結果が得られています。
どの実装方針にもメリット、デメリットがあり、どれが正解、とは言えません。
これらはソフトウェアの個性だと思っています。