
redact v0.2.2
Rimuovi contenuti simili a credenziali da stringhe di forma libera prima che raggiungano log o telemetria. Parte del toolkit Go phpboyscout. · https://redact.go.phpboyscout.uk
redact
Rimuove contenuti simili a credenziali da stringhe libere prima che raggiungano log, telemetria o qualsiasi superficie di terze parti
Parte del phpboyscout Go toolkit: piccoli moduli Go senza framework estratti da go-tool-base. Documentazione: redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact rimuove contenuti simili a credenziali da stringhe
libere al confine tra superfici di osservabilità attendibili e non attendibili, come
fornitori di telemetria, aggregatori di log e archivi di metriche. Messaggi di errore,
argomenti di comando e valori di header HTTP trasportano abitualmente segreti per
errore (un URL con userinfo incorporato, un flag --api-key=sk-… in os.Args, un
header Authorization citato in un errore di esportazione). Instrada questi valori
attraverso redact.String in uscita e non lasceranno mai il processo in chiaro.
Design
- Zero dipendenze. Solo libreria standard (
regexp,strings), quindi nient'altro che il modulo entra nel tuo grafo. Una guardiadepfootprint_test.golo impone, e vincola i test atestifye algo/errorsdell'ecosistema. - Redazione al confine. Sanifica dove i dati lasciano l'host, non ovunque.
- Conservativo per impostazione predefinita. Il fallback per token opachi richiede ≥41 caratteri così non produce mai falsi positivi su UUID, MD5 o SHA-1.
Installazione
go get gitlab.com/phpboyscout/go/redact
Utilizzo
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 rimuove lo userinfo degli URL per qualsiasi schema (https://, postgres://,
redis://, …), le assegnazioni name=value di credenziali, i campi di credenziali JSON come
"access_token" e "client_secret", i token dell'header Authorization, i JWT,
i prefissi di provider noti (sk-, ghp_, glpat-, AIza, AKIA, Slack),
e i token opachi lunghi. SensitiveHeaderKeys / IsSensitiveHeaderKey identificano
gli header i cui valori dovrebbero essere redatti.
Limitazioni
I cataloghi di pattern non raggiungono mai il 100% di recall, e questo è deliberatamente conservativo:
- Nessuna configurazione. Non puoi aggiungere, disabilitare o riordinare un pattern. Il pacchetto esporta quattro simboli e nulla da regolare. Componi attorno ad esso invece.
Stringnon maschera valori di header arbitrari. ConosceAuthorization:e nient'altro;X-API-Key: …passa attraverso. È per questo che esistono i simboli per gli header.- Segreti personalizzati e brevi sfuggono. Il fallback catch-all richiede 41 caratteri, e ogni prefisso di provider ha una lunghezza minima rigida.
- I pattern sono solo ASCII, e la redazione è unidirezionale: nulla da invertire e nessuna traccia di ciò che è stato sostituito.
Cosa redact non fa dichiara il confine completo.
Documentazione
Guide complete, riferimento e modello di minaccia: redact.go.phpboyscout.uk. Documentazione API generata ed esempi eseguibili: pkg.go.dev.
Licenza
Vedi LICENSE.