🎓 レベル:標準 | 重要度:A(必須) 📎 前提:リスク評価と多層防御
要点(BLUF)
- 設計原則は「個別の対策」より上位の判断基準。新しい技術が来ても、原則は使い回せる。
- 中核は最小権限(必要な分だけ許す)とフェイルセーフ(壊れたら安全側に倒れる)。
- 原則は暗記ではなく、設計の岐路で「どちらが原則に沿うか」を選ぶための物差しとして使う。
概念:原則は時代を超える物差し
製品やクラウドの機能は数年で変わりますが、良い守りの考え方は半世紀近く変わっていません。Saltzer と Schroeder(1975)が示した古典的原則は今も生きています。原則を持っていれば、未知の技術に出会っても「この設計は原則に反していないか」と判断できます。
仕組み:押さえるべき主要原則
| 原則 | 意味 | 守る側の効果 |
|---|---|---|
| 最小権限(Least Privilege) | 必要最小限の権限だけ与える | 侵害時の被害範囲を限定 |
| フェイルセーフ(Fail-safe defaults) | 既定は「拒否」、許可は明示 | 故障・例外時に安全側へ倒れる |
| 攻撃面の最小化(Economy/Minimize) | 機能・入口・コードを減らす | 守る範囲そのものを縮小 |
| 多重防御(Defense in depth) | 層を重ねる | 一枚破られても全滅しない |
| 権限分離(Separation of privilege) | 重要操作に複数の条件 | 単一の鍵で全部開かない |
| 最小共通機構(Least common mechanism) | 共有資源を減らす | 1か所の侵害の波及を抑える |
| オープン設計(Open design) | 安全性は秘密の構造に依存しない | 「隠して守る」に頼らない |
| 心理的受容性(Psychological acceptability) | 使いやすく作る | 回避・抜け道を生まない |
これらは互いに補強し合います。たとえば最小権限と権限分離はセットで効き、フェイルセーフと既定拒否は同じ思想です。
図解:フェイルセーフ(既定は拒否)
flowchart TD
REQ["アクセス要求"] --> CHK{"明示的に許可されているか"}
CHK -->|"はい(許可リストに合致)"| ALLOW["許可する"]
CHK -->|"いいえ・判定不能・エラー"| DENY["拒否する(安全側に倒す)"]
ポイントは、判定できないとき・エラーのときも「拒否」に倒すこと。許可を既定にすると、想定外の状態がそのまま穴になります。
防御側の使い方:設計の岐路で原則を当てる
- 権限を設計するとき:まず全部禁止から始め、必要なものだけ足す(既定拒否+最小権限)。クラウドの IAM 実務は クラウドの責任共有とIAM へ。
- エラー処理を書くとき:例外時に機能を開放しない。失敗したら止める/拒否する。
- 機能を足すとき:本当に要るか。要らない入口は攻撃面(脅威モデリング(STRIDEと攻撃面))を増やすだけ。
- 「秘密だから安全」と言いたくなったとき:それはオープン設計違反。安全性は鍵の秘匿に依存させ、仕組みの秘匿に依存させない(暗号の 暗号の基礎 目次 と同じ思想)。
なぜ安全か:被害の上限を設計で固定できる
最小権限とフェイルセーフが効くのは、最悪のときの被害上限を先に決めるからです。あるアカウントが乗っ取られても、そのアカウントに最小の権限しか無ければ被害はそこで頭打ち。例外時に拒否へ倒れる設計なら、想定外の入力でも「開いてしまう」ことがない。つまり原則は「うまくいくとき」ではなく「壊れたときにどこまでで止まるか」を保証します。
仕組みの直観
原則はホテルのマスターキー設計に似ています。清掃員の鍵は担当階の客室だけ(最小権限)、停電時に金庫は施錠側で固まる(フェイルセーフ)、金庫を開けるには鍵と暗証番号の両方(権限分離)。マスターキー1本で全部開く設計は楽ですが、1本失うだけで全館が危険になります。
⚠️ よくある誤解・設定ミス
- 「とりあえず広めに権限を付ける」:後で絞る前提が守られず、過剰権限が放置される。最小権限の逆。
- エラー時に処理を続行する(フェイルオープン):例外パスが事実上の許可になる。OWASP 2025 でも「例外条件の取り扱い不備」が新カテゴリ入り(OWASP Top 10 の概観)。
- 隠ぺいによる安全(security by obscurity)に頼る:構造を隠すのは補助で、主たる守りにしない。
- 使いにくすぎる対策:利用者が付箋にパスワードを書くなど抜け道を生む。心理的受容性を軽視しない。
対応 lab
概念回のため専用 lab はありません。「安全性を鍵の秘匿に寄せる」オープン設計の実例は、第2章のデジタル署名デモ security-study/labs/digital_signature_demo.py(アルゴリズムは公開、秘密鍵だけが秘密)で確認できます。
関連
- 原則を組織で運用する枠組み → セキュリティガバナンスとフレームワーク(NIST CSF 2.0)
- 攻撃面を洗い出す → 脅威モデリング(STRIDEと攻撃面)
- アクセス制御への具体化 → アクセス制御モデルとゼロトラスト