
제로 의존성 Go 라이브러리로, 자격 증명과 유사한 패턴(API 키, JWT, Authorization 헤더, URL userinfo)을 로그/텔레메트리에 도달하기 전에 제거합니다.
자유 형식 문자열에서 자격 증명과 유사한 내용을 제거하여 로그, 텔레메트리, 또는 기타 제3자 표면에 도달하기 전에 차단합니다
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% 재현율(recall)에 도달할 수 없으며, 이 패키지는 의도적으로 보수적입니다:
String은 임의의 헤더 값을 마스킹하지 않습니다. Authorization:만 인식하며 그 외에는 알지 못합니다. X-API-Key: …는 그대로 통과합니다. 헤더 심볼이 바로 그 용도입니다.redact가 하지 않는 일에서 전체 경계를 명시합니다.
전체 가이드, 레퍼런스 및 위협 모델: redact.go.phpboyscout.uk. 생성된 API 문서와 실행 가능한 예제: pkg.go.dev.
LICENSE를 참조하세요.