Skip to content

fix: span への秘匿情報漏洩を防ぎ SIGTERM で観測データを flush する - #240

Merged
outductor merged 2 commits into
mainfrom
feat/migrate-sentry-to-otel
Aug 2, 2026
Merged

fix: span への秘匿情報漏洩を防ぎ SIGTERM で観測データを flush する#240
outductor merged 2 commits into
mainfrom
feat/migrate-sentry-to-otel

Conversation

@outductor

Copy link
Copy Markdown
Contributor

背景

#239 で導入した #[tracing::instrument] は引数を skip しておらず、OTLP endpoint を設定した環境では以下が span 属性としてトレース基盤 (Tempo) へ送信される状態だった(seichi_infra 側のレビューで指摘)。

  • MYSQL_PASSWORD を含む接続情報(MySQL#[derive(Debug)] で password を露出)
  • キャッシュ済み GachadataDump(Bytes) の SQL 全文(Bytes の Debug は内容全体を出力するため、漏えいに加えリクエストごとに巨大な span を生成)

seichi_infra 側で OTLP endpoint を供給する GiganticMinecraft/seichi_infra#5669 は、本 PR のマージとイメージ更新を待ってからマージする想定。

変更内容

  • run_gachadata_dump / update_gachadataskip(self)、handler に skip(repository) を設定し、秘匿情報を含む引数を span に載せない
  • 多層防御として MySQL の Debug を手実装し password を <redacted> に、GachadataDump の Debug をバイト長のみの出力にする(誤って Debug 出力された場合の保険)
  • SIGTERM / Ctrl-C の graceful shutdown を追加し、終了前に未送信の span とプロファイルを flush する(K8s の Pod 停止で末尾の観測データが失われないように)
  • ついでに Pyroscope の application 名を PYROSCOPE_APPLICATION_NAME で上書き可能にする (game-data-publisher と同じ方式)

確認

  • cargo check パス
  • Debug 出力に password / dump 本文が含まれないことはコード上の手実装 Debug で保証

🤖 Generated with Claude Code

outductor and others added 2 commits August 2, 2026 09:29
…能にする

game-data-publisher の確立パターンと env の語彙を揃える

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codex レビュー (blocker + should-fix) 対応:

- #[tracing::instrument] 3 箇所に skip(self) / skip(repository) を追加。
  Debug 経由で MySQL パスワードとキャッシュ済み SQL dump 全体が
  span 属性としてトレース基盤へ送られていた
- 多層防御として MySQL の Debug からパスワードを redact、
  GachadataDump の Debug をバイト長のみに変更
- SIGTERM/Ctrl-C の graceful shutdown を追加し、終了前に Pyroscope の
  stop/shutdown と OTel provider の shutdown へ到達させる
  (従来は SIGTERM で flush 処理に一切到達しなかった)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@outductor
outductor merged commit 2f3cd4d into main Aug 2, 2026
3 checks passed
@outductor
outductor deleted the feat/migrate-sentry-to-otel branch August 2, 2026 06:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant