SC Workbook
科目 A-2 · システム開発技術

障害時に許可する認可処理

文書のダウンロード可否を判定する次の関数をレビューした。認可サーバには,文書ごとにダウンロードを禁止する利用者の一覧が登録されている。

def can_download(user, doc_id):
    try:
        policy = authz_client.get_policy(doc_id)  # 認可サーバに問合せ
        return user.id not in policy.denied_users
    except Exception:
        logger.warning("authz lookup failed")
        return True

アクセス制御の設計原則に照らした指摘として,最も適切なものはどれか。

  1. ア認可サーバの障害時にも業務を継続できるように例外時に True を返しているので,可用性を確保する設計であり,アクセス制御の観点からも問題はない。
  2. イ禁止された利用者以外を全て許可し,判定できないときも許可している。許可された利用者の一覧に基づいて判定し,判定できないときは拒否するように改めるべきである。
  3. ウ認可サーバへの問合せ結果を利用者ごとに長時間キャッシュし,以後の要求では問い合わせないようにすれば,障害時の誤った許可を防げるので,判定方法は今のままでよい。
  4. エ例外の詳細なメッセージやスタックトレースを利用者の画面に表示し,認可サーバの障害が原因であることを利用者が把握できるようにすべきである。
正解と解説を見る

正解 イ

この問題の基礎知識

  • フェールセーフ(安全側に倒す)の考え方では,障害や例外によってアクセスの可否を判定できないときは拒否する。障害時に許可すると,障害を起こさせるだけで認可を回避される。
  • 許可リスト方式は明示的に許可したものだけを許可し,拒否リスト方式は明示的に禁止したもの以外を全て許可する。拒否リスト方式では,登録漏れがそのまま不正な許可になる。
  • デフォルト拒否(deny by default)は,どの規則にも当てはまらない要求を拒否する原則である。また,エラーメッセージに内部の詳細を表示すると,攻撃者にシステムの情報を与える。
ア認可サーバの障害時にも業務を継続できるように例外時に True を返しているので,可用性を確保する設計であり,アクセス制御の観点からも問題はない。

障害時にも機能を止めないことを優先して許可に倒すと,認可サーバを停止させたり応答を妨げたりするだけで,禁止された利用者も含めて誰でもダウンロードできてしまう。アクセス制御では,判定できないときは拒否する(安全側に倒す)のが原則である。

イ禁止された利用者以外を全て許可し,判定できないときも許可している。許可された利用者の一覧に基づいて判定し,判定できないときは拒否するように改めるべきである。正解

一覧に載っていない者を許可する方式は,登録漏れがそのまま不正な許可になる。明示的に許可された場合だけ許可するデフォルト拒否(deny by default)とし,例外などで判定できないときも拒否して,認可を回避されない状態で処理を終えるべきである。

ウ認可サーバへの問合せ結果を利用者ごとに長時間キャッシュし,以後の要求では問い合わせないようにすれば,障害時の誤った許可を防げるので,判定方法は今のままでよい。

長時間のキャッシュは,禁止の追加などの変更が反映されず,要求ごとに権限を検証するという原則に反する。また,キャッシュにない要求で例外が起きれば許可される点も,禁止一覧に載っていなければ許可する点も変わらない。

エ例外の詳細なメッセージやスタックトレースを利用者の画面に表示し,認可サーバの障害が原因であることを利用者が把握できるようにすべきである。

エラーメッセージに内部の詳細を含めると,システムの構成などの情報を攻撃者に与えることになり,避けるべきである。また,表示を変えても例外時に許可するという問題は解消しない。

検証用の出典出典照合済み
OWASP Authorization Cheat Sheet(Deny by Default,Validate the Permissions on Every Request,Exit Safely when Authorization Checks Fail) / NIST SP 800-160 Vol. 1 Rev. 1 Engineering Trustworthy Secure Systems(Appendix E Protective Defaults,Protective Failure)
照合の根拠(5 件)
問題 ID A2-SDV-0512 · AI 作成のオリジナル問題 · 正解と各選択肢の根拠を出典の原文で確認しています。 照合日 2026-11-08

非公式の学習用アプリです(IPA とは関係ありません)。問題はすべて AI が作成したオリジナルで、誤りを含む場合があります。