楽観的・悲観的を軸に考えるセキュリティ設計
こんにちは。
今回は自戒も含めちょっと哲学チックに、セキュリティ設計を「楽観的」と「悲観的」から眺めてみる、という記事です。
🧠 そもそも「楽観的」「悲観的」ってなに?
ざっくりこうです:
思想 | セキュリティに当てはめると… |
---|---|
楽観的 | 「ここは悪用されないだろう」 |
悲観的 | 「悪用される前提で守ろう」 |
性善説/性悪説に近いかもしれない
⚖️ 設計に潜む「楽観」と「悲観」
🟢 楽観的な設計(性善説寄り)
- 前提:「まあ、誰も来ないでしょ」
- 設計:「そこまで厳しくなくていいでしょ」
- 感情:安心、油断、信頼
🔴 悲観的な設計(性悪説寄り)
- 前提:「いつか誰かが来る」
- 設計:「最初から全員を疑おう」
- 感情:警戒、不信、防衛本能
💥 実例で見る「楽観設計のやらかし」
🏗️ 例1:社内ネットワークだけだし大丈夫でしょ?
→ VPNの設定漏れで外部に公開
→ Shodan「Hello :)」
→ Slack「うちの見積書が海外掲示板に……!?」
- 🟢 設計思想:「知らない人が来るなんてレアでしょ」
- 🔴 現実:Shodanは毎日スキャンしてます
🔐 例2:Basic認証つけたからOK(のつもり)
→ ユーザー名:
admin
パスワード:admin
→.htpasswd
も一緒にGitHubへコミット✨️
- 🟢 設計思想:「知ってる人しかアクセスしない」
- 🔴 現実:GitHubは世界中の研究者と攻撃者がウォッチしてる
🧪 例3:検証環境に本番データ入れてるけどまあ大丈夫でしょ?
→ 検証環境が外部公開されていた
→ Basic認証のID/PWは例によってadmin/admin
→ ようこそ本番データの世界へ
- 🟢 設計思想:「開発チームしか知らない環境だし」
- 🔴 現実:URLさえ知っていれば誰でも来る
⚙️ 例4:オンラインコンパイラでAPIキー貼ったろ!
→ コードが学習&公開され、APIキーも一緒に拡散
→ そのキーがAdmin権限持ってた
→ 請求額:数百万円
- 🟢 設計思想:「一時的に貼るだけだから」
- 🔴 現実:「公開されたものは永遠にインターネットに残る」
☠️ 最近の例:AIアシスタントの思わぬ罠
- AIに「昔貼った自分のキー」が学習されてる
- AIアシスタントが秘密キーを別人にサジェスト
- 🟢 設計思想:「AIは味方でしょ?」
- 🔴 現実:「AIはログを食べる予測装置」
👁️ 世界はおもったより「見てくる」
「見られてない」という楽観は通じない相手:
- Shodan/ZoomEye:「ポート全部見に来ます」
-
昔の自分:「とりあえず
0.0.0.0
で起動!w」 - 元同僚:「昔のURLまだ生きてるんだけどwログイン情報も残ってるw」
- ChatGPT:「このAPI叩けるか試してみようよ!」
🧱 悲観的(性悪説)的セキュリティ設計に学ぶ
🔐 原則
発想 | 設計指針 |
---|---|
誰も信じない | ゼロトラスト設計 |
事故は起きる | 自動スキャンで検知 |
人はミスる | 最小権限を徹底 |
記憶しない | アクセスログはログで残す |
検証≠本番 | データは完全に分離 |
⚠️ でも性悪設計だけだと疲れる…
問題点:
- 毎回トークン+2FA+社内稟議の3コンボ
- 開発のスピードが出ない
- チーム内に不信感が漂う(「全員疑う」とか怖くない?)
- そのうちCloudTrailが逆転裁判の証拠品のようなものになってしまう
🧘♀️ 理想は「楽観と悲観のハイブリッド」
状況 | 設計姿勢 | 実装イメージ |
---|---|---|
ローカル開発 | やや楽観 |
.env で秘密管理+Git除外 |
社内向けAPI | 中立 | IP制限+認証トークン |
外部公開アプリ | 全力悲観 | WAF+ゼロトラスト+IDS監視 |
🖼️ セキュリティインシデントが起こる構造(みんな大好きスイスチーズモデル)
どの層も完璧じゃない。でも全部がズレていると“貫通”する。
🤔 最後に:あなたの設計はどっち派?
- 「まあ大丈夫でしょ」の楽観派?
- 「やつは必ず来る」の悲観派?
💡 筆者のおすすめはこれ
「心は楽観、設計は悲観」
→ チームは信じよう。システムは疑おう。
💬 コメントでぜひ教えてください!
- 「昔こんなやらかしした」
- 「油断して爆死した話」
- 「最初から疑って助かったエピソード」
黒歴史、笑い話、全部歓迎です🙌