
Strip credential-like content from free-form strings before they reach logs or telemetry. Part of the phpboyscout Go toolkit. · https://redact.go.phpboyscout.uk
ログ、テレメトリ、その他いかなる第三者向け出力先に到達する前に、自由形式の文字列から認証情報らしき内容を除去します
phpboyscout Go toolkit の一部 — go-tool-base から抽出された、小さなフレームワーク非依存のGoモジュール集です。ドキュメント: redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact は、信頼済みと非信頼の可観測性サーフェス — テレメトリベンダー、ログ集約サービス、メトリクスストア — の境界で、自由形式文字列から認証情報らしき内容を除去します。エラーメッセージ、コマンド引数、HTTPヘッダー値には、偶然にもシークレットが含まれることがよくあります(ユーザー情報が埋め込まれたURL、os.Args 内の --api-key=sk-… フラグ、エクスポートエラーに引用された Authorization ヘッダーなど)。これらを出力時に redact.String に通せば、平文のままプロセス外に出ることは決してありません。
regexp、strings)のみ — モジュール以外は依存グラフに入りません。depfootprint_test.go によるガードがそれを強制します。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ユーザー情報、認証情報の name=value 代入、"access_token" や "client_secret" などのJSON認証情報フィールド、Authorization ヘッダーのトークン、JWT、既知のプロバイダプレフィックス(sk-、ghp_、glpat-、AIza、AKIA、Slack)、そして長い不透明トークンを除去します。SensitiveHeaderKeys / IsSensitiveHeaderKey は、値を秘匿化すべきヘッダーを識別します。
パターンカタログは100%の再現率には決して到達せず、このパッケージは意図的に保守的です:
String は任意のヘッダー値をマスクしません。 Authorization: のみを認識し、それ以外は認識しません。X-API-Key: … は素通しです。そのためのヘッダー用シンボルが用意されています。完全な境界は、redact が行わないこと に説明されています。
完全なガイド、リファレンス、脅威モデル: redact.go.phpboyscout.uk。 生成されたAPIドキュメントと実行可能な例: pkg.go.dev。
LICENSE を参照してください。