ある日、導入先から連絡が来た。
「閲覧ユーザーで削除ボタンが見えているのですが」
その施設では、担当の方が閲覧のみのユーザーのアカウントを追加している最中だった。
その作業の中で気づいたという。
閲覧のみ、という設定にしたはずの画面に、患者情報の削除ボタンが出ていた。
あとで確かめると、見えているだけではなかった。
押せば、実際に削除できた。
見つけたのは、作った私ではなく、使う側だった。
「ログインできる」と「見てよい」は、別の話だった
削除ボタンが見えていた。この一言の裏で、何が起きていたのか。
アプリの中では、ログインのときに2つの別々の仕事が動いている。
ひとつは、いま画面を開いているのが誰かを確かめること。
IDとパスワードを入れてもらう、あの部分だ。
もうひとつは、その人に何をさせてよいかを決めること。
閲覧だけなのか、入力もできるのか、削除までできるのか。
前者を認証、後者を認可と呼ぶ。
同じ「ログイン機能」の中の話に見えるが、作る作業としては別々にある。
この2つは、見え方がまったく違う。
認証は目に見える。パスワードが違えば入れないし、合っていれば画面が開く。
効いていなければ、その場で分かる。
認可は見えない。正しく効いていても、画面には何も起きない。
自分が見てよいものが、見えているだけだ。
そして、抜けていても見え方は同じになる。
ここに共有アカウントが重なる。
部署ごとに1つのアカウントを使っている場合、
「誰であるか」の答えは「受付の誰か」までしか出ない。
個人までは分からない。
すると、その先で引ける線も部署単位までになる。
部署単位で足りる業務なら、その運用で回る。
ただし、操作の記録に残るのも部署名までになる。
あとから「これは誰が消したのか」と聞かれたとき、答えられるのはそこまでだ。
教科書どおりに作ると、現場で使えなくなる
私が作っているアプリは、外から直接たどり着けないようにしてある。
院内のネットワークの中だけで動いていて、外部からの通信は遮断してある。
そう作ってあれば、世間でよく聞く手口の多くは届きにくくなる。
ただし、どの院内アプリもそうだとは限らない。
遠隔で保守できるようにしてある構成もあるし、
USBメモリや持ち込み端末のように、ネットワークを通らない経路も残る。
まず、そこを確かめることだ。
そのうえで残るのが、中にいる人が、見てよい範囲を超えられるかどうか。
これは、外から届くかどうかに関係なく残る。
そして一般に出回っているアプリの作り方は、
「1人が1つのアカウントを持つ」ことを前提に組み立てられている。
部署でひとつ、という使い方は、そもそも想定されていない。
自動ログアウトも同じだ。
教科書どおりなら、一定時間操作がなければログアウトさせる。
それが正しい。
だが私が関わっている施設では、次の患者まで1時間以上空くことがある。
どこでもそうだとは言わない。
ただ、そういう現場がある。
かといって空いている間が暇なわけではなく、撮影の合間は忙しい。
そこで60分でログアウトされると、忙しい最中にもう一度IDとパスワードを打つことになる。
これは「使えない」ということだ。
そして使えない仕組みは、たいてい回避される。
ログアウトしないよう設定を変えてくれと言われるか、パスワードが机に貼られるか。
安全のために入れた仕組みが、安全でない運用を生む。
答えは、時間を延ばすことではなかった。
一定時間操作がなければ、ログアウトさせるのではなく画面を隠す。
作業中の入力はそのまま残し、再開するときにパスワードを1回入れてもらう。
パソコンのロック画面と同じ考え方だ。
離席中に他人が画面を見ることはなく、戻ってきた人は続きから作業できる。
大事なのは、この判断が技術の側から出てこないということだ。
「次の患者まで1時間空くことがある」「合間は忙しい」——
これは検査の業務を知っている人にしか言えない。
決められるのは方式であって、その方式が現場で回るかどうかを知っているのは、使う側だけだ。
発注するとき、聞いておきたい5つのこと
最後に、発注する側から聞ける質問を挙げておく。どれも専門知識はいらない。
1. アカウントは1人1つですか。
部署でひとつですか。
共有なら、記録に残る「操作した人」は部署名までになる。
あとから個人まで遡れない。それを先に知っておく。
2. 職種ごとに、何ができて何ができないかの一覧はありますか。
それを決めたのは誰ですか。
ベンダーが決めた区分なら、業務を知らない人が引いた線だということになる。
3. 権限のない職員が、画面にボタンが出ていない操作をしようとしたら、どうなりますか。
断るのは画面側ですか、その奥ですか。
ボタンが見えないことと、実行できないことは別だ。
私が見落としたのは、ここだった。
4. 離席したとき、画面はどうなりますか。
その設定は、うちの業務の流れを聞いた上で決まりましたか。
何分が正しいかに正解はない。
業務を聞かずに決めた設定は、現場で回避されやすい。
5. すべての制限を素通りできる管理者アカウントは、誰が持っていますか。
他の部署のアカウントで入れる人はいますか。保守業者も持っていますか。
持っている人の数が、そのまま「後から誰の操作か分からなくなる範囲」になる。
これらに即答できないベンダーが不誠実だ、という話ではない。
私も、聞かれるまで確かめなかった。
こうした点は、厚生労働省が示している
「医療情報システムの安全管理に関するガイドライン」でも取り上げられている。
ただし適合するかどうかの判断は所管の当局や専門家の領域で、この記事が答えを出せるものではない。
発注側として持っておきたいのは「適合していますか」と聞くことではなく、
「うちはこう運用しています」と説明できる状態の方だと思う。
なぜ、自分で気づけなかったのか
なぜ自分で気づけなかったのか。
開発中、私はほとんど管理者アカウントで画面を見ていた。
自分で作った機能を、自分で開いて確かめる。
管理者には全部の操作が許されているので、ボタンが出ているのは当たり前だった。
閲覧のみのユーザーで同じ画面を開いたことが、一度もなかった。
連絡を受けて確かめて分かったのは、患者情報の削除だけではないということだった。
薬剤情報の削除も、治療終了の処理も、そのまま通った。
権限は設定していたつもりだった。
今となっては、画面のボタンを消す処理を書いたのか、書かなかったのかも思い出せない。
どちらにしても、確かめていなかったことは同じだ。
自分のアカウントで動かしている限り、この画面はずっと正常だった。
連絡を受けて、直した。
そして同じことが起きたら止まるように、
閲覧のみのユーザーで削除を試みるテストを書いて残した。
このシリーズについて
院内で使うアプリを発注する側が、何を確かめられるかを書いています。
- 院内に置く理由(準備中)
- データはどこにあるか(準備中)
- 共有PC・共有アカウントという前提(この記事)
- 既存システムとの接続(準備中)
- 「動きました」と「使えます」の差
- 入れた後に起きること(準備中)

