データフロー図と信頼境界
データの流れと、信頼境界を越える場所をマッピングします。
「データフロー図と信頼境界」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
最初に図を描く理由
理解していないシステムから脅威を見つけることはできません。データフロー図(DFD)は脅威モデリングの基盤であり、データがシステム内をどのように移動するかを視覚的に示します。
図を使うと、暗黙の前提を明示できます。データの行き先と、データに触れるものを確認できれば、脅威をはるかに見つけやすくなります。
DFDの4つの要素
DFDは、わずか4つの構成要素で作成できます。シンプルに保ちましょう。
- 外部エンティティ — 自分たちの管理外にある人やシステム(ユーザー、サードパーティAPI)
- プロセス — データを変換するもの(サービス、関数)
- データストア — データを保持する場所(データベース、ファイル、キャッシュ)
- データフロー — 要素間をデータが移動すること(矢印)
ほとんどすべてのシステムを、この4つの図形で表現できます。
標準的なDFD記法
DFDでは、誰でも読めるように慣例的な図形を使います。
External entity -> rectangle / square
Process -> circle (or rounded rectangle)
Data store -> two parallel lines (open rectangle)
Data flow -> labeled arrow
Trust boundary -> dashed line crossing flowsシンプルなWebアプリのDFD
基本的なWebアプリケーションを考えてみましょう。そのDFDは、テキスト形式では次のように表せます。
User (external) --HTTPS request--> Web App (process)
Web App --SQL query--> Database (data store)
Web App --API call--> Payment Provider (external)
Database --results--> Web App
Web App --HTTPS response--> User信頼境界とは
信頼境界とは、図の中で信頼レベルが変わるあらゆる境界線のことです。一方ではデータや呼び出し元を信頼し、もう一方では信頼しません。
信頼境界はDFDの中で最もセキュリティに関係する要素です。信頼境界は、次の場所を示すからです。
- データを検証すべき場所
- 呼び出し元を認証および認可すべき場所
- 権限レベルが変わる場所
脆弱性の多くは、まさにデータが信頼境界を越える場所に存在します。
よくある信頼境界
意識して見るようになると、信頼境界はいたるところにあることが分かります。よくある例は次のとおりです。
- インターネットとアプリケーションの間(信頼できないユーザー入力が到着します)
- アプリケーションとデータベースの間
- 低権限プロセスと高権限プロセスの間
- 自分たちのシステムとサードパーティAPIの間
- コンテナとホストの間
- ネットワークセグメント間(DMZと内部ネットワークの間)
それぞれの境界を明示的に詳しく調査する必要があります。
DFD上で境界を描く
影響を受けるデータフローを横切るように、破線で信頼境界を追加します。Webアプリの場合は次のようになります。
User (external)
| HTTPS
- - - - - - - - - - - - <- Trust boundary: internet / app
v
Web App (process)
| SQL
- - - - - - - - - - - - <- Trust boundary: app / database
v
Database (data store)STRIDEを適用する場所を境界から見つける
信頼境界は、このレッスンとSTRIDEを結び付けます。境界を越えるデータフローに注目してSTRIDE分析を行います。
インターネットとアプリケーションの境界では、次のことを問いかけます。
- なりすまし — 呼び出し元は認証されていますか
- 改ざん — 入力値は検証されていますか
- 情報漏えい — 通信チャネルは暗号化されていますか
- サービス拒否 — レート制限はありますか
境界を意識すると、抽象的なフレームワークを具体的な問いに変えられます。
適切な粒度の選び方
DFDは抽象的すぎても、詳細すぎてもいけません。どちらの場合も役に立ちません。
- 抽象度が高すぎる — 「システム」と書かれた1つの箱では、重要な境界がすべて隠れてしまいます
- 詳細すぎる — すべての関数や変数を含めると、情報量が多すぎて本質を見失います
主要なコンポーネントと信頼境界がそれぞれ見える粒度を目指してください。階層化されたDFDを使い、システム全体を示すコンテキスト図を作成してから、複雑なプロセスを個別に掘り下げます。
チームで図を検証する
1人で描いたDFDには、通常、誤った前提が含まれています。システムを構築した人たちと一緒に、図を確認してください。
次のような質問を投げかけます。
- データがデータベースに到達する方法は、本当にこれだけですか
- ここに示されていない管理者用やバッチ処理用の経路はありませんか
- この認証手順を迂回するものはありませんか
- このデータのキャッシュされたコピーが別の場所にありませんか
隠れたデータフローは、脆弱性の見落としを引き起こす典型的な原因です。
図を常に最新に保つ
システムは変化するため、古くなったDFDは誤解を招きます。古い図は、誤った安心感を生み出すため、図がないよりも悪い場合があります。
次の場合はDFDを更新してください。
- 新しい統合や外部依存関係が追加された場合
- 新しいデータストアが登場した場合
- 信頼モデルが変わった場合(サービスが新しいネットワークゾーンに移動した場合など)
DFDは一度作成して終わる成果物ではなく、システムとともに維持されるドキュメントとして扱ってください。
クイックチェック
DFDと信頼境界についての理解度を確認しましょう。
まとめ
脅威モデリングのためにシステムをマッピングする方法を学びました。
- DFDは、外部エンティティ、プロセス、データストア、データフローという4つの要素を使用します
- 信頼境界は、信頼が変化する場所を示し、多くの脆弱性が存在する場所でもあります
- 境界を越えるデータフローに焦点を当ててSTRIDE分析を行います
- 適切な粒度を選び、階層化した図を使用します
- チームでDFDを検証し、常に最新の状態に保ちます
次は、攻撃ツリーを使って脅威を順位付けし、緩和策の優先順位を決めます。
AI チューターと学ぶ Cyber Security Academy — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 76
- レッスン
- 303
よくある質問
「データフロー図と信頼境界」レッスンは無料ですか?
はい。「データフロー図と信頼境界」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「データフロー図と信頼境界」で何を学びますか?
データの流れと、信頼境界を越える場所をマッピングします。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「データフロー図と信頼境界」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 脅威モデリングが重要な理由
- STRIDEフレームワーク
- データフロー図と信頼境界
- 攻撃ツリーとリスクの優先順位付け