「後から直す」はもう卒業!家を建てる前に「泥棒の視点」を持つセキュリティ設計術
「システムを作ってから、最後にセキュリティ診断でバグを見つけて直す」。これ、実はものすごく効率が悪いんです。家を建てた後に「あ、玄関の鍵が壊れやすいかも」と気づいてから壁を壊して工事するのと同じくらい大変ですよね。
今回は、システム開発の設計段階で「どんな泥棒が来るか」を予測し、最初から鉄壁の守りを作る「脅威モデリング(STRIDE)」について、一緒に学んでいきましょう。
—
脅威モデリングって、結局なに?
専門用語を使わずに例えると、「泥棒の計画を先読みするシミュレーション」のことです。
例えば、あなたが新居を建てる時、ただ「きれいな家」を目指すだけでは足りませんよね。「ここから侵入されないか?」「窓の鍵は外から開けられないか?」と、泥棒の視点に立って設計図をチェックするはずです。
ITの世界でも同じです。「ログイン機能があるなら、パスワードを当てるやつが来るよね?」「データのやり取りを見てるやつがいたらどうする?」と、設計図の段階で攻撃の手口を想定する。これが脅威モデリングです。
—
STRIDEモデル:泥棒の「6つの手口」を知ろう
マイクロソフトが提唱した「STRIDE(ストライド)」という枠組みを使うと、頭の中がスッキリ整理されます。
- S (Spoofing:なりすまし)
- 他人のふりをする。偽の免許証で家に入るようなもの。
- T (Tampering:改ざん)
- データを書き換える。家の表札を勝手に変えるようなもの。
- R (Repudiation:否認)
- 「やってない!」としらを切る。アリバイ工作ですね。
- I (Information Disclosure:情報漏洩)
- 中身を覗き見される。窓から家の中の金庫を見られるようなもの。
- D (Denial of Service:サービス拒否)
- 家を破壊して誰も入れないようにする。嫌がらせです。
- E (Elevation of Privilege:権限昇格)
- 一般人が管理者権限を持つ。鍵屋さんがマスターキーを盗むようなもの。
—
実践!設計段階で仕込む「守りの防御ヘッダー」
設計段階で「これらの攻撃を防ぐには、どんな設定が必要か?」と考えます。例えば、Webブラウザに対して「怪しい動きはしないでね」と指示を出す「セキュリティヘッダー」は、設計時に必ず組み込んでおくべき「防犯カメラや防犯砂利」のようなものです。
以下は、Webアプリケーションの設計において、HTTPレスポンスヘッダーに含めるべき基本的な防御設定の例です。
// Node.js (Express) の例:ヘッダー設定でセキュリティを強化する
const helmet = require(‘helmet’);
const express = require(‘express’);
const app = express();
// helmetというライブラリを使うと、これだけで主要な防御設定が入ります
app.use(helmet());
// もし手動で設定するなら、こんな意味があります
app.use((req, res, next) => {
// 1. サイトのコンテンツを信頼できる場所からしか読み込まない(情報の改ざん防止)
res.setHeader(“Content-Security-Policy”, “default-src ‘self’;”);
// 2. HTTPではなくHTTPSを強制する(覗き見防止)
res.setHeader(“Strict-Transport-Security”, “max-age=63072000; includeSubDomains”);
// 3. ブラウザが中身を勝手に解釈して実行するのを防ぐ(なりすまし・攻撃コード実行防止)
res.setHeader(“X-Content-Type-Options”, “nosniff”);
next();
});
—
今日からできる一歩
脅威モデリングは、難しく考える必要はありません。設計会議の時に、「もし自分が悪意のあるハッカーだとしたら、ここをどうやって攻撃する?」という質問を一つ投げるだけでいいんです。
1. ホワイトボードに図を書く:ユーザーがどこから入って、どこにデータを保存するかを描く。
2. STRIDEを当てはめる:「ここでなりすましが起きたらどうする?」「ここでデータが盗まれるリスクはない?」と自問自答する。
3. 対策をメモする:対策が必要な場所には、設計書に「認証強化」「暗号化」と追記する。
これだけで、リリース後にバタバタと修正するリスクが劇的に減ります。「セキュリティは後付けではなく、設計の一部」。これができるエンジニアは、現場で間違いなく重宝されますよ。
「難しそう」と怖がらず、まずは身近な泥棒対策の感覚で、設計図を眺めてみてくださいね。一歩ずつ、一緒に強固なシステムを作っていきましょう!
コメント