見出し画像

リモートデスクトップの接続記録を台帳管理したいけど誰も記録してくれないんですよねって課題を解決した話。

サラリーマン時代の話になりますが、社内のセキュリティ関係の外部監査で、社外へのリモートデスクトップ接続の管理がきちんとできていないという指摘があったそうです。
一応台帳があってそこに記録するルールとなっているのですが、ちゃんと記録してくれる人が少ない現状でした。

ルールを守らない人に指導するというのも限界がありますし、現場サイド視点ではそんなことサポートの都度いちいちやってらんねえよというのもごもっともな話です。障害対応なんかは一刻を争いますからね。

社内での会議でも守らない人が悪いという論調が強くて「厳しく指導する」程度の意見しか出ませんでしたし、世の中にはリモート接続を管理するクラウドサービスがあるらしいのですが、コスト面でまったく割りが合わず導入は論外という感じでした。

これじゃ何も解決しない。毎回監査で指摘を受け、毎回改善策を回答するというのもすぐにネタ切れになるし、対応を間違えれば認証取り消しの可能性も出てくるかもしれません。

ということで私はこの現状を何とかできないかと考えてみました。

OSのリモートデスクトップ接続機能。この機能には、何時何分どの端末がどこに接続し何時何分に接続が終了したかいう台帳に欲しい情報を所定のレイアウトで出すということはできませんでした。

じゃあどうするか。ふむ。リモートデスクトップ接続の本体はmstsc.exeという実行ファイルらしい。では、プログラムを自作してそこからmstsc.exeをキック(実行する)と良いのではないか?キックする前後でログを出す機能をつけるといけるのではないか?

ということで実験!
そして成功!

自作したプログラムからリモートデスクトップを呼び出してmstsc.exeを実行して接続し、接続ログを出力することに成功しました。
次に、これを踏まえて越えなければいけない壁がありました。
それはデータの回収です。
接続ログは各自のパソコンに保管される仕組みなので、接続ログを回収しなければ台帳を作成することはできません。
最初から社内サーバーに接続ログを保管する仕組みで作ってしまえば良いのでは?と思うかもしれませんが、出張先からサポートした際のログが保存できないという問題があったため、各自のパソコンに保管する仕組みとしました。

では、どうやって回収するか。
それの鍵はActiveDirectoryにありました。

ActiveDirectoryとは簡単に言うと社内のユーザーを管理する仕組みです。んで、こいつには「ユーザーがログインした時に○○のプログラムを実行する」という機能がありました。
なのでこれを使ってログイン時に、接続ログがあったらサーバーに送れば良いのです。
というわけで接続ログのストックがあったらサーバーに移動させるプログラムを自作し、ログイン時にそのプログラムを実行させる設定をActiveDirectoryに追加して完了!

社内に「リモート接続のときはこのプログラムから行ってください。台帳記入しなくても良くなりますよ」とアナウンスして完了です。
いちいち台帳記入しなくて良いのか!ということで、現場のみんなが使ってくれるようになりました。

ということで無事今回の課題を解決することができました。
既存の簡単な技術の組み合わせでこういったことができるようになるわけです。

いいなと思ったら応援しよう!