分散トレーシングのBaggage:リクエスト文脈と信頼境界
W3C Baggage形式がアプリケーション定義のキー・値を運ぶ仕組み、トレース識別子との違い、信頼境界を越える前の確認事項を解説します。
発行・訂正窓口:infostoa · 編集基準
この記事の個別の執筆者・専門査読者の情報は提供されていません。
分散トレーシングにおけるBaggageは、リクエストに結び付けてサービス間で伝播できる、アプリケーション定義のキー・値情報です。トレースIDやスパンIDのように処理を識別する値とは役割が異なります。実験グループや内部処理の分類を運ぶことはできますが、値の意味と安全性を決めるのは設定したアプリケーションです。「トレーシングのメタデータ」と呼ぶだけで、機微情報でなくなるわけではありません。
Baggageはトレース識別子ではなくリクエスト文脈
分散トレーシングでは、traceやspanを使って複数サービスの処理を結び、流れや遅延を調べます。Baggageはその流れに付随して送れる別個のキー・値集合です。OpenTelemetryはリクエストやワークフローに関連するアプリケーション定義のプロパティとして説明し、W3CのHTTPヘッダー形式はbaggageヘッダーのメンバーとして表します。キーと値に、トレースを識別する機能や共通の意味が割り当てられているわけではありません。
たとえばexperiment=blueは、内部の分岐や観測に役立つ場合があります。しかし後続サービスがそのキーを理解する保証はなく、名前だけでは個人情報を含まないとも判断できません。trace contextとBaggageを別のデータとして扱えば、相関情報とアプリケーション文脈で伝播範囲や保持期間を分けて設計できます。
HTTPヘッダーの形式と伝播上限
W3Cの形式文書は、メンバーをカンマで区切るヘッダーとして説明します。キーはtoken構文に従い、許可範囲外の値はパーセントエンコードします。重複キーが現れることがあり、任意の属性の意味はアプリケーションに依存します。どの受信側も任意の値を同じように解釈するという保証ではありません。文字エンコード、重複の扱い、パーサーの挙動を実装間で確認してください。
同文書は、メンバーが64個以下かつヘッダーが8192バイト以下の場合、すべてのメンバーを伝播することを保証します。上限を超えると実装は一部を破棄できますが、途中で切れたメンバーを伝播してはいけません。これは機微情報の保存枠でも無制限転送の約束でもありません。実際のプロキシやライブラリが課すヘッダー制限も確認します。
信頼境界で許可・削除ルールを定める
Baggageはユーザー入力や上流サービスから来ることがあるため、信頼できない入力として扱います。W3Cのセキュリティ文書は検証・サニタイズと信頼境界を越える伝播への注意を示します。プライバシー文書は識別情報が含まれ得ること、キーと値に定められた意味がないことを指摘します。外部パートナー、ブラウザー、ログ収集先など信頼度が変わる場所では、許可キー、長さと形式、削除ルールを定め、すべてを転送するより必要最小限にします。
各キーを設定できるコンポーネントと、各ホップで値が追加・上書きされるかを追跡します。外部境界では必要な項目だけを明示的にコピーし、それ以外を削除する方法を検討してください。漏えい時の影響が大きいトークン、メールアドレス、アカウント識別子、生の検索語は避けます。ヘッダー全体がログやエラー報告に複製される経路も調べましょう。OpenTelemetry APIは、信頼できないプロセスへ送る前にBaggageを消去する方法も説明しています。
配備前の確認項目
- すべてのキーについて管理者と目的を記録し、個人情報や認証情報を含み得るか確認します。
- 各サービス境界に許可リストと削除ルールを定め、予期しないキーが次のホップに残らないか試験します。
- メンバー数・バイト数、パーセントエンコード、重複キー、不完全・不正な入力をパーサーとプロキシで検証します。
- ログ、メトリクス、エラー報告への複製経路と保存期間を確認します。
専門家の視点:便利なメタデータもデータフローとして管理
観測性の設計で重要なのは、Baggageをtrace相関情報のように自動転送するのか、各境界で審査するアプリケーションデータとして扱うのかという判断です。tenant、user、regionというキー名でも組織によって意味は異なります。内部では無害に見える値が、外部分析サービスに送られると個人を推定する手掛かりになることがあります。スキーマの管理者、利用目的、許可する受信先、保持・削除方針を記録し、変更時にプライバシー審査を行ってください。
ここで参照するW3Cの形式・セキュリティ・プライバシー資料はEditor’s Draftのソースファイルです。確定したW3C Recommendationの要件として扱っていません。実装方針を決める際は、採用文書の状態とOpenTelemetry SDK・プロキシのバージョンを確認してください。
出典・参考資料
- W3C Baggage HTTP Header Format — Editor’s Draft source:メンバー形式、エンコード、伝播上限。
- W3C Baggage Privacy Considerations — Editor’s Draft source:識別情報と境界を越えるプライバシー管理。
- W3C Baggage Security Considerations — Editor’s Draft source:入力検証と信頼境界に関する考慮点。
- OpenTelemetry Baggage API:APIの意味、任意の伝播、信頼できない宛先の前での消去。