🐈

【Go】zapで機密情報をマスキングするサンプルコード

に公開

概要

  • uber-go/zapを使用してパスワードの文字列をマスキングする処理のサンプルコード

サンプルコード

  • マスキングなし
func execNoMasking() {
	logger, _ := zap.NewProduction()
	defer logger.Sync()

	password := "secret123"

	logger.Info("user login",
		zap.String("username", "alice"),
		zap.String("password", password), // これだと機密情報が丸見えに
	)
}
// 出力されるログ
{"level":"info","ts":1748063559.381116,"caller":"zap/masking.go:13","msg":"user login","username":"alice","password":"secret123"}
  • マスキングあり
func maskSecret(_ string) string {
	return "****"
}


func execMasking() {
	logger, _ := zap.NewProduction()
	defer logger.Sync()

	username := "alice"
	password := "secret123"

	logger.Info("user login",
		zap.String("username", username),
		zap.String("password", maskSecret(password)), // ここでマスク
	)
}
// 出力
{"level":"info","ts":1748063559.381233,"caller":"zap/masking.go:31","msg":"user login","username":"alice","password":"****"}
GitHubで編集を提案

Discussion