
redact v0.2.2
# ログやテレメトリに到達する前に、自由形式の文字列から資格情報のようなコンテンツを除去します。phpboyscout Goツールキットの一部。 · https://redact.go.phpboyscout.uk
redact
ログ、テレメトリ、その他サードパーティの領域に到達する前に、自由形式の文字列から認証情報らしき内容を除去する
phpboyscout Go toolkit の一部: go-tool-base から抽出された、フレームワークに依存しない小さな Go モジュール群。ドキュメント: redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact は、信頼された領域と信頼されていない可観測性の領域(テレメトリベンダー、ログアグリゲータ、メトリクスストアなど)の境界において、自由形式の文字列から認証情報らしき内容を除去します。エラーメッセージ、コマンド引数、HTTP ヘッダー値は、しばしば意図せずシークレットを含んでしまいます(userinfo が埋め込まれた URL、os.Args 内の --api-key=sk-… フラグ、エクスポートエラーに引用された Authorization ヘッダーなど)。これらを出力時に redact.String 経由で通せば、平文のままプロセスから外へ出ることはありません。
設計
- 依存関係ゼロ。 純粋な標準ライブラリ(
regexp、strings)のみを使用するため、モジュール以外は依存グラフに入りません。depfootprint_test.goガードがこれを強制し、テストはtestifyとエステートのgo/errorsに限定しています。 - 境界でのリダクション。 データがホストから出る場所でサニタイズし、あらゆる場所では行いません。
- デフォルトで保守的。 不透明トークンのフォールバックは 41 文字以上を要求するため、UUID、MD5、SHA-1 に対して誤検知しません。
インストール
go get gitlab.com/phpboyscout/go/redact
使用方法
import "gitlab.com/phpboyscout/go/redact"
safe := redact.String("failed calling https://user:[email protected]?api_key=sk-abc123…")
// → credentials in the URL userinfo, the api_key query param, and the sk- token are masked
msg := redact.Error(err) // redact.String applied to err.Error() (nil-safe)
if redact.IsSensitiveHeaderKey("Authorization") { /* … redact this header's value … */ }
redact.String は、あらゆるスキーム(https://、postgres://、redis:// など)の URL userinfo、認証情報の name=value 代入、"access_token" や "client_secret" などの JSON 認証情報フィールド、Authorization ヘッダートークン、JWT、よく知られたプロバイダープレフィックス(sk-、ghp_、glpat-、AIza、AKIA、Slack)、および長い不透明トークンを除去します。SensitiveHeaderKeys / IsSensitiveHeaderKey は、値がリダクションされるべきヘッダーを識別します。
制限事項
パターンカタログが 100% の再現率に達することは決してなく、これは意図的に保守的です:
- 設定不可。 パターンの追加、無効化、並べ替えはできません。このパッケージは 4 つのシンボルをエクスポートするだけで、調整できるものは何もありません。代わりに周囲で組み合わせてください。
Stringは任意のヘッダー値をマスクしません。Authorization:のみを認識し、X-API-Key: …はそのまま通過します。そのためにヘッダーシンボルが存在します。- 独自形式や短いシークレットはすり抜けます。 キャッチオールのフォールバックには 41 文字が必要で、各プロバイダープレフィックスには厳格な最小長があります。
- パターンは ASCII のみで、リダクションは一方通行です: 復元するものはなく、何が置換されたかの記録もありません。
redact が行わないこと に完全な境界が記載されています。
ドキュメント
完全なガイド、リファレンス、脅威モデル: redact.go.phpboyscout.uk。 生成された API ドキュメントと実行可能な例: pkg.go.dev。
ライセンス
LICENSE を参照してください。