프로젝트 소개
Redacted는 `case classes` 내부에 정의된 민감한 필드(자격 증명, 개인 데이터 및 기타 기밀 정보 등)의 부주의한 유출을 방지하기 위해 설계된 Scala 라이브러리이자 컴파일러 플러그인입니다. 컴파일 시점에 기본 `toString` 메서드를 재작성하여 어노테이션이 지정된 필드를 자리 표시자(예: `***`)로 대체하며, 필드에 대한 직접 접근에는 영향을 주지 않습니다.
**주요 기능:**
- **어노테이션 기반**: 민감한 필드에 `@redacted`를 어노테이션하기만 하면 `toString` 출력에서 제외됩니다.
- **컴파일 시점 변환**: 컴파일러 플러그인이 컴파일 중에 `toString`을 재작성하므로 런타임 오버헤드가 없고 최종 바이너리에 플러그인 의존성이 남지 않습니다.
- **크로스 플랫폼**: JVM, Scala.js, Scala Native를 지원합니다.
- **간편한 통합**: 원활한 설정을 위한 sbt 플러그인(`sbt-redacted`)을 제공합니다.
**사용 예시:**
```scala
import io.github.polentino.redacted.redacted
case class HttpHeaders(userId: UUID, @redacted apiKey: String, languages: Seq[Locale], correlationId: String)
case class User(id: UUID, nickname: String, @redacted email: String)
```
설정 후 객체를 덤프하거나 `toString`을 호출하면 어노테이션이 지정된 필드에 대해 `***`가 출력되며, 직접 접근(예: `headers.apiKey`)은 여전히 실제 값을 반환합니다.
**지원되는 Scala 버전:**
- Scala 3 (3.1.3 ~ 3.9.0, LTS 버전 포함)
- Scala 2.13 및 2.12
**플랫폼:**
- JVM
- Scala.js (1.x)
- Scala Native (0.5)
**작동 방식:**
컴파일러 플러그인은 각 타입 정의를 검사하여 `@redacted` 어노테이션이 지정된 필드가 하나 이상 있는 `case class`인지 확인한 다음, 기본 `toString` 구현을 재작성하여 해당 필드에 대해 선택적으로 `***`를 출력합니다.
**요구 사항:**
- Java 17+ (모든 구성 요소는 Java 17에서 컴파일됨)
**추가 자료:**
- 프로젝트 웹사이트: https://polentino.github.io/redacted/
- sbt 플러그인 저장소: https://github.com/polentino/sbt-redacted
**도입 사례:**
- InvestSuite (B2B, 확장 가능하고 AI 기반의 WealthTech)
Redacted는 로그나 콘솔 출력에서 민감한 데이터가 실수로 노출되지 않도록 해야 하는 Scala 개발자, 특히 사용자 자격 증명, API 키 또는 PII/GDPR 관련 데이터를 다루는 애플리케이션에 이상적입니다.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.