
redact v0.2.2
Elimina contenido similar a credenciales de cadenas de forma libre antes de que lleguen a registros o telemetría. Parte del kit de herramientas Go phpboyscout. · https://redact.go.phpboyscout.uk
redact
Elimina contenido similar a credenciales de cadenas de formato libre antes de que lleguen a registros, telemetría o cualquier superficie de terceros
Parte del phpboyscout Go toolkit: módulos Go pequeños y sin framework extraídos de go-tool-base. Documentación: redact.go.phpboyscout.uk
gitlab.com/phpboyscout/go/redact redacta contenido similar a credenciales de cadenas de formato libre en la frontera entre superficies de observabilidad confiables y no confiables, como proveedores de telemetría, agregadores de registros y almacenes de métricas. Los mensajes de error, los argumentos de comandos y los valores de encabezados HTTP transportan secretos de forma rutinaria por accidente (una URL con userinfo incrustado, un flag --api-key=sk-… en os.Args, un encabezado Authorization citado en un error de exportación). Hazlos pasar por redact.String a la salida y nunca abandonarán el proceso en texto claro.
Diseño
- Cero dependencias. Biblioteca estándar pura (
regexp,strings), así que nada más que el módulo entra en tu grafo. Un guardiándepfootprint_test.golo impone, y mantiene las pruebas entestifyy elgo/errorsdel ecosistema. - Redacción en la frontera. Sanitiza donde los datos salen del host, no en todas partes.
- Conservador por defecto. El fallback de tokens opacos requiere ≥41 caracteres para que nunca dé falsos positivos en UUIDs, MD5 o SHA-1.
Instalación
go get gitlab.com/phpboyscout/go/redact
Uso
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 elimina el userinfo de URL para cualquier esquema (https://, postgres://, redis://, …), asignaciones de credenciales name=value, campos de credenciales JSON como "access_token" y "client_secret", tokens de encabezado Authorization, JWTs, prefijos de proveedores conocidos (sk-, ghp_, glpat-, AIza, AKIA, Slack) y tokens opacos largos. SensitiveHeaderKeys / IsSensitiveHeaderKey identifican encabezados cuyos valores deben ser redactados.
Limitaciones
Los catálogos de patrones nunca alcanzan el 100% de recall, y este es deliberadamente conservador:
- Sin configuración. No puedes añadir, deshabilitar ni reordenar un patrón. El paquete exporta cuatro símbolos y nada que ajustar. Compón alrededor de él en su lugar.
Stringno enmascara valores de encabezado arbitrarios. ConoceAuthorization:y nada más;X-API-Key: …pasa de largo. Para eso están los símbolos de encabezado.- Secretos personalizados y cortos se escapan. El fallback general necesita 41 caracteres, y cada prefijo de proveedor tiene una longitud mínima estricta.
- Los patrones son solo ASCII, y la redacción es unidireccional: nada que revertir y ningún registro de lo que fue reemplazado.
Lo que redact no hace establece la frontera completa.
Documentación
Guías completas, referencia y modelo de amenazas: redact.go.phpboyscout.uk. Documentación de API generada y ejemplos ejecutables: pkg.go.dev.
Licencia
Ver LICENSE.