
자유 형식 문자열에서 로그나 원격 측정에 도달하기 전에 자격 증명과 유사한 콘텐츠를 제거합니다. phpboyscout Go 툴킷의 일부입니다. · https://redact.go.phpboyscout.uk
자유 형식 문자열에서 자격 증명과 유사한 내용을 로그, 텔레메트리 또는 기타 제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 가드가 이를 강제하며, 테스트는 testify와 에스테이트의 go/errors로 제한됩니다.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% 재현율에 도달하지 못하며, 이 카탈로그는 의도적으로 보수적입니다:
String은 임의의 헤더 값을 마스킹하지 않습니다. Authorization:만 알고 그 외에는 아무것도 모르므로 X-API-Key: …는 그대로 통과합니다. 이를 위해 헤더 심볼이 존재합니다.redact가 하지 않는 일에서 전체 경계를 설명합니다.
전체 가이드, 레퍼런스 및 위협 모델: redact.go.phpboyscout.uk. 생성된 API 문서 및 실행 가능한 예제: pkg.go.dev.
LICENSE를 참조하세요.