見られる画面と操作範囲を分ける、認可の考え方

認可は、確認できた相手に対して、どこまで入ってよいか・何をしてよいかを決める仕組みです。

同じログインでも、できることが違う

同じ社内ツールにログインしていても、一般のスタッフは閲覧だけ、管理者は編集まで、経理部の人だけが請求データを見られる。この「入ったあとに何をしてよいか」を決めるのが認可です。

建物の受付で本人確認が済んだ人に、入館証を渡す場面を思い浮かべてください。入館証には入ってよい部屋が決まっていて、会議室までの人もいれば、サーバールームまで入れる人もいます。システムでも、本人確認(認証)が済んだあとに、その人が「閲覧だけできるのか」「編集もできるのか」「管理機能まで使えるのか」を割り当てます。

使われる場面は、たとえば次のようなものです。

  • 一般ユーザーは閲覧だけ、管理者は編集もできるようにする
  • 部署ごとに見える情報を分ける
  • API ごとに、読み取り専用か更新もできるかを分ける
  • 有料プランの人だけが特定の機能を使えるようにする

入館証は小さく配ってこまめに回収する

Tatoediaの読者モブ
読者さん

権限を細かく分けるの、正直めんどう。とりあえず全員を管理者にしておけばよくない?

Tatoediaの案内役
案内役

それだと、誰か一人のアカウントが乗っ取られた瞬間に、全部の部屋が開いちゃうよ。

権限は、最初は必要最小限から始めます。全員に管理者権限を配るのは楽ですが、被害が起きたときの広がり方がまるで違います。

回収も同じくらい大事です。異動した人が前の部署の情報を見られたまま、退職した人のアカウントが生きたまま、という状態を放置しないよう、役割が変わったときに権限を見直し、すぐに外せる手順を決めておきましょう。

ボタンを隠しても裏口は開いている

見落とされがちなのが、画面の外です。管理メニューを一般ユーザーの画面から消しただけでは、裏側の API を直接呼び出されたら操作できてしまうことがあります。

ボタンを隠すのは、ドアに「関係者以外立入禁止」の貼り紙をするようなもので、鍵はかかっていません。権限のチェックは、画面だけでなく API や裏側の処理でも同じようにかけてください。

「誰か」を確かめる認証と、「何をしてよいか」を決める認可の関係は、認証と認可の違いで詳しく整理しています。