基本情報技術者 2018年 春期 午前(科目A) 問43
問題文
利用者情報を格納しているデータベースから利用者情報を検索して表示する機能だけをもつアプリケーションがある。このアプリケーションがデータベースにアクセスするときに用いるアカウントに与えるデータベースへのアクセス権限として、情報セキュリティ管理上、適切なものはどれか。ここで、権限の名称と権限の範囲は次のとおりとする。
〔権限の名称と権限の範囲〕
参照権限: レコードの参照が可能
更新権限: レコードの登録、変更、削除が可能
管理者権限: テーブルの参照、登録、変更、削除が可能
選択肢
ア:管理者権限
イ:更新権限
ウ:更新権限と参照権限
エ:参照権限(正解)
🔒 解説は解答すると表示されます
最小権限の原則【午前解説】
正解の理由
このアプリケーションは「利用者情報を検索して表示する」機能だけを行うため、データベースに対して必要なのはレコードの参照のみです。問題文の権限定義によれば、参照権限は「レコードの参照が可能」、更新権限は「登録・変更・削除が可能」であり、更新権限は参照を含まないことに注意します。テーブル管理者権限はさらに広い操作を許すため過剰です。したがって、必要最小限の権限を与えるという「最小権限の原則」に従い、エの参照権限のみを付与するのが適切です。
解法ステップ
- アプリケーションが実行する操作を具体化する:検索(SELECT)と表示のみ。
- 与えられた権限定義に照らし合わせる:参照権限=読み取り、更新権限=登録・変更・削除(読み取りを含まない)、管理者権限=さらに広範。
- 必要な操作を満たす最小の権限を選ぶ:参照だけなら参照権限のみ。
- 他の選択肢が要件を満たすか/過剰かを確認する:不足(読み取りできない)や過剰(書き込みや管理操作を許す)であれば不適切。
選択肢別の誤答解説
-
ア(管理者権限)
管理者権限はテーブルに対する参照・登録・変更・削除が可能であり、検索表示だけに比べて不要な書き込み・構造変更権限を与えます。攻撃を受けた際の被害が大きくなるため過剰です。 -
イ(更新権限)
更新権限は登録・変更・削除を行える権限であり、問題文の定義では参照(読み取り)は含まれません。検索表示を行うには参照権限が必要なので、更新権限のみでは動作要件を満たさない一方で、書き込み権限を与える点でリスクが高く不適切です。 -
ウ(更新権限と参照権限)
参照は必要ですが、更新権限を追加で与えると書き込み・削除が可能になり過剰になります。参照と更新は定義上別の権限であり、両方与えると将来の誤操作や不正利用のリスクが増すため、要件に対して最小ではありません。 -
エ(参照権限)
レコードの読み取りだけを許すため、機能要件を満たしつつ権限を最小化できます。よって最適です。
よくある誤解
- 「更新権限があれば参照もできる」は誤り:本問の定義では更新権限は登録・変更・削除であり、参照権限とは別です。実務でもDBごとに権限の範囲は明確に確認する必要があります。
- 「管理者権限を与えておけば何でも安心」は誤り:管理者権限は便利だが被害範囲が大きく、アプリには不要な権限は与えないのが安全です。
- 「開発の便宜優先で多めに権限を与える」は誤り:本番環境では最小権限を守り、必要になってから追加する運用が望ましいです。
補足コラム
実運用では「アプリ専用の読み取り専用アカウント」を作り、参照以外の権限を付与しないことで安全性を高めます。さらに以下の対策を組み合わせると良いでしょう。
- DB側でのロール(read-only)運用やビューを用いてアクセス対象を限定する。
- アプリからのアクセスは接続元IPやネットワークセグメントで制限する。
- 資格情報の管理(秘密情報の安全な保管・ローテーション)と監査ログ(誰が何をしたか)の有効化。
- 将来的に更新機能が必要になった場合は別アカウント/明示的な権限付与プロセスで対応する。
例:MySQLで読み取り専用ユーザを作る場合の例
CREATE USER 'app_read'@'app_host' IDENTIFIED BY '強いパスワード';
GRANT SELECT ON mydb.users TO 'app_read'@'app_host';
FLUSH PRIVILEGES;
FAQ
Q1: アプリが将来更新機能を持つ可能性がある場合、いまから更新権限を与えておくべきですか?
A1: 与えないでください。不要な権限は与えず、更新機能が正式に必要になった時点で追加権限を付与する方が安全です。
A1: 与えないでください。不要な権限は与えず、更新機能が正式に必要になった時点で追加権限を付与する方が安全です。
Q2: 参照権限だけではログや関係テーブルの参照ができない場合は?
A2: 必要なテーブルやビュー単位で最小限の参照権限を付与します。権限を広く与えるのではなく、アクセス対象を限定してください。
A2: 必要なテーブルやビュー単位で最小限の参照権限を付与します。権限を広く与えるのではなく、アクセス対象を限定してください。
Q3: アプリ側で権限昇格(管理者権限を一時的に使用)する設計は許容されますか?
A3: 原則として避けます。管理操作は管理者アカウントと運用手続きで行い、アプリからは管理権限を使用しないのが望ましいです。
A3: 原則として避けます。管理操作は管理者アカウントと運用手続きで行い、アプリからは管理権限を使用しないのが望ましいです。
関連キーワード: 最小権限、参照権限、更新権限、管理者権限、ロールベースアクセス制御、権限の分離、読み取り専用アカウント、アクセス制御ポリシー

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

