
redact v0.2.2
# Redact Supprime le contenu de type identifiant des chaînes de caractères libres avant qu’il n’atteigne les journaux ou la télémétrie. Fait partie de la boîte à outils Go phpboyscout. · https://redact.go.phpboyscout.uk
redact
Supprime le contenu de type identifiant d'chaînes de caractères libres avant qu'elles n'atteignent les journaux, la télémétrie ou toute surface tierce
Partie de la phpboyscout Go toolkit : petits modules Go sans framework extraits de go-tool-base. Docs : redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact supprime le contenu de type identifiant d'chaînes de caractères libres à la frontière entre les surfaces d'observabilité de confiance et non fiables, telles que les fournisseurs de télémétrie, les agrégateurs de journaux et les stockages de métriques. Les messages d'erreur, les arguments de commande et les valeurs d'en-tête HTTP transportent régulièrement des secrets par accident (une URL avec des informations d'utilisateur intégrées, un indicateur --api-key=sk-… dans os.Args, un en-tête Authorization cité dans une erreur d'export). Faites-les passer par redact.String au moment de la sortie et ils ne quittent jamais le processus en clair.
Conception
- Zéro dépendance. Bibliothèque standard pure (
regexp,strings), donc rien d'autre que le module n'entre dans votre graphe. Un gardedepfootprint_test.gol'impose, et limite les tests àtestifyet augo/errorsdu domaine. - Rédaction à la frontière. Assainissez là où les données quittent l'hôte, pas partout.
- Conservateur par défaut. Le repli sur les jetons opaques nécessite ≥41 caractères afin de ne jamais produire de faux positifs sur les UUID, MD5 ou SHA-1.
Installation
go get gitlab.com/phpboyscout/go/redact
Utilisation
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 supprime les informations d'utilisateur d'URL pour tout schéma (https://, postgres://, redis://, …), les affectations name=value d'identifiants, les champs d'identifiants JSON tels que "access_token" et "client_secret", les jetons d'en-tête Authorization, les JWT, les préfixes de fournisseurs bien connus (sk-, ghp_, glpat-, AIza, AKIA, Slack) et les jetons opaques longs. SensitiveHeaderKeys / IsSensitiveHeaderKey identifient les en-têtes dont les valeurs doivent être rédigées.
Limitations
Les catalogues de motifs n'atteignent jamais 100 % de rappel, et celui-ci est délibérément conservateur :
- Aucune configuration. Vous ne pouvez pas ajouter, désactiver ou réordonner un motif. Le paquet exporte quatre symboles et rien à ajuster. Composez autour à la place.
Stringne masque pas les valeurs d'en-tête arbitraires. Il connaîtAuthorization:et rien d'autre ;X-API-Key: …passe à travers. C'est à cela que servent les symboles d'en-tête.- Les secrets sur mesure et courts passent à travers. Le repli attrape-tout nécessite 41 caractères, et chaque préfixe de fournisseur a une longueur minimale stricte.
- Les motifs sont uniquement ASCII, et la rédaction est irréversible : rien à inverser et aucune trace de ce qui a été remplacé.
Ce que redact ne fait pas énonce la frontière complète.
Documentation
Guides complets, référence et modèle de menace : redact.go.phpboyscout.uk. Docs API générées et exemples exécutables : pkg.go.dev.
Licence
Voir LICENSE.