認証・認可
認証と認可の違い
架空の権限設定ミスから、認証ではなく認可の問題を見分ける演習です。
- 難易度
- 初級
- 所要時間
- 約9分
- カテゴリ
- 認証・認可
- 保存
- 未完了
学ぶこと
- 認証と認可の役割を区別する
- ログイン済みでも操作権限が必要な理由を理解する
- 最小権限と権限レビューの観点を持つ
前提知識
- 認証・認可の基本用語
- アカウント権限の基礎
シナリオ
社内のファイル共有アプリで、ログイン済みの一般ユーザーが管理者向けの請求設定画面を閲覧できることが分かりました。ログイン自体は正しく行われています。
与えられた素材
ユーザー: 一般社員
ログイン状態: 正常に認証済み
表示できた画面: /billing/settings
本来の利用者: 経理管理者のみ
発生している問題: ログイン済みなら設定画面が表示される フラグを入力する
この問題の本質を示すフラグを入力してください。形式: CYBERLENS{...}
入力値は小文字化し、空白を除去してSHA-256で照合します。入力内容は保存されません。
Hints
段階ヒント
- Hint 1
ログインできたかどうかは本人確認の話です。
- Hint 2
その画面や操作を許可してよいかは、本人確認とは別に判断します。
- Hint 3
このケースでは「ログイン済みならOK」という認可チェック不足が問題です。
Solved
解説
正解は、認可の失敗です。認証は「誰か」を確認する処理で、認可は「その人が何をしてよいか」を判断する処理です。このケースではログイン処理は正常でも、一般ユーザーが経理管理者向け画面を閲覧できており、操作権限の確認が不足しています。実務では、画面表示だけでなくAPIやDBアクセス直前でも権限を確認します。
防御・実務での確認ポイント
- ログイン済みであることと操作権限があることを分けて確認する
- UIだけで非表示にせず、サーバー側でも権限を検証する
- 管理者権限は定期的に棚卸しし、不要な権限を外す
- 権限変更は監査ログに残し、例外は期限付きにする