同じログインでも、できることが違う
同じ社内ツールにログインしていても、一般のスタッフは閲覧だけ、管理者は編集まで、経理部の人だけが請求データを見られる。この「入ったあとに何をしてよいか」を決めるのが認可です。
建物の受付で本人確認が済んだ人に、入館証を渡す場面を思い浮かべてください。入館証には入ってよい部屋が決まっていて、会議室までの人もいれば、サーバールームまで入れる人もいます。システムでも、本人確認(認証)が済んだあとに、その人が「閲覧だけできるのか」「編集もできるのか」「管理機能まで使えるのか」を割り当てます。
使われる場面は、たとえば次のようなものです。
- 一般ユーザーは閲覧だけ、管理者は編集もできるようにする
- 部署ごとに見える情報を分ける
- API ごとに、読み取り専用か更新もできるかを分ける
- 有料プランの人だけが特定の機能を使えるようにする
入館証は小さく配ってこまめに回収する
権限を細かく分けるの、正直めんどう。とりあえず全員を管理者にしておけばよくない?
それだと、誰か一人のアカウントが乗っ取られた瞬間に、全部の部屋が開いちゃうよ。
権限は、最初は必要最小限から始めます。全員に管理者権限を配るのは楽ですが、被害が起きたときの広がり方がまるで違います。
回収も同じくらい大事です。異動した人が前の部署の情報を見られたまま、退職した人のアカウントが生きたまま、という状態を放置しないよう、役割が変わったときに権限を見直し、すぐに外せる手順を決めておきましょう。
ボタンを隠しても裏口は開いている
見落とされがちなのが、画面の外です。管理メニューを一般ユーザーの画面から消しただけでは、裏側の API を直接呼び出されたら操作できてしまうことがあります。
ボタンを隠すのは、ドアに「関係者以外立入禁止」の貼り紙をするようなもので、鍵はかかっていません。権限のチェックは、画面だけでなく API や裏側の処理でも同じようにかけてください。
「誰か」を確かめる認証と、「何をしてよいか」を決める認可の関係は、認証と認可の違いで詳しく整理しています。