Skip to content

structured logging / sensitive data redaction を静的検査する #49

Description

@koh110

背景

template の logger は structured log を提供しているが、metadata / error に任意の値を渡せるため、将来 authentication provider や external SDK を追加した際に credential / PII が accidental に log へ混入する余地がある。

目的

ログを observability の共通基盤にしつつ、secret / credential / request payload の不用意な流出を防ぐ。

設計案

Logger entrypoint

  • runtime code の console.log/error/debug を logger implementation 以外では原則禁止
  • structured logger を単一入口にする
  • requestId / level / label 等の共通 field を統一する

Sensitive fields

最低限以下を redaction 対象候補とする。

  • authorization
  • cookie
  • set-cookie
  • password
  • secret
  • token
  • idToken
  • accessToken
  • refreshToken
  • session cookie value

key 名だけに依存せず、request / headers / provider response を丸ごと logger へ渡す pattern も避ける。

Error serialization

Error / external SDK error をそのまま JSON spread せず、安全な serializer を用意する。

環境に応じて stack trace の出力 policy も定義する。

静的検査候補

  • logger 以外での console.*
  • logger.*({ meta: { authorization: ... } })
  • request headers / cookies / body の直接 logging
  • known secret variable の logging
  • unsafe error serialization

Acceptance Criteria

  • application code の console 利用を制限する
  • sensitive field の redaction helper を提供する
  • Authorization / Cookie / token の代表的な leakage を test する
  • request body / headers の丸ごと logging を禁止する
  • external Error を安全な shape へ serialize する
  • access log と application log で共通 requestId を追跡できる

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions