"로그, 남기는 건 필수지만 기다리는 건 싫으니까요."
보안이 강력한 로그 시스템은 느려지기 쉽습니다. 암호화와 무결성 검증 비용이 곧 레이턴시가 되기 때문입니다. 우리는 Java 21의 Virtual Thread와 표준 동시성 라이브러리(ReentrantLock, ConcurrentHashMap)를 활용해 이 문제를 해결했습니다.
물론, 속도만 챙긴 것은 아닙니다. 제가 개발을 하며 겪은 보안 고민들도 함께 담았습니다.
- 💡 어? 방금 로그에 주민번호 찍힌 거 아냐?
- 💡 이 로그, 진짜 원본 맞아요?
- 💡 퇴사한 직원 데이터, 언제 다 지우지?
KBS SDK를 사용하면 시스템 부하가 높아져도 로그는 메인 로직을 방해하지 않고, 안전하게 포장되어 배달됩니다.
비즈니스 로직에만 집중하세요. 전화번호, 이메일, 주민등록번호 같은 민감 정보(PII)가 감지되면 SDK가 자동으로
******마스킹 처리하여 저장합니다.
📌 이미지 업데이트 예정
DTO 필드에 어노테이션만 붙이면 리플렉션 프로세서가 자동으로 마스킹을 수행합니다. 9가지 MaskType(RRN, PHONE, EMAIL, CREDIT_CARD, PASSWORD, SSN, NAME, ADDRESS, ACCOUNT_NUMBER)을 지원합니다.
public class EmployeeDto {
@Mask(MaskType.RRN)
private String residentNumber; // 123456-1234567 → 123456-*******
@Mask(MaskType.PHONE)
private String phoneNumber; // 010-1234-5678 → 010-****-5678
@Mask(MaskType.EMAIL)
private String email; // user@example.com → u***@example.com
}"마스킹된 데이터, 사고 분석 시 원본이 필요하면?" 이런 고민을 해결합니다.
@Mask(emergency = true)설정 시 마스킹 대신 RSA-OAEP로 암호화된 원본을 저장합니다. 평문 노출 없이 추후 인가된 관리자만 복호화할 수 있습니다.
@Mask(value = MaskType.RRN, emergency = true)
private String residentNumber; // 결과: {"display":"123456-*******", "encrypted":"Base64..."}누가(Who), 누구의(Whom) 정보를 왜(Why) 봤는지 자동으로 기록합니다. 비즈니스 로직에 침투하지 않고도 감사 정보를 추출합니다.
@AuditContext(
why = "급여 정보 조회",
whomParam = "employeeId",
action = AuditAction.READ
)
public EmployeeSalaryDto getSalary(String employeeId) {
// who: Spring Security에서 자동 추출
// whom: employeeId 파라미터 값
// why: "급여 정보 조회"
return repository.findSalary(employeeId);
}로그의 신뢰성을 위해 블록체인의 Hash Chain 기술을 적용했습니다. 이전 로그와 현재 로그가 체인처럼 연결되어 있어, 중간에 데이터가 1바이트라도 변조되면 즉시 탐지 가능합니다.
📌 이미지 업데이트 예정
저장되는 순간 AES-256-GCM 암호화 방식이 적용됩니다. 암호화 키 없이는 그 누구도 내용을 확인할 수 없습니다.
📌 이미지 업데이트 예정
수많은 로그 속에서 특정 개인정보를 찾아 지우는 것은 비효율적입니다. 우리는 해당 데이터의 '암호화 키'를 파기하는 방식으로, 데이터를 영구적으로 복구 불가능하게 만듭니다.
📌 이미지 업데이트 예정
| 기능 | ⭐️ KBS SDK ⭐ | Logback+SLF4J | Sentry | Datadog |
|---|---|---|---|---|
| PII 자동 마스킹 | ✅ 내장 | ❌ | ❌ | 추가 설정 |
| @Mask 어노테이션 | ✅ | ❌ | ❌ | ❌ |
| 비상용 복호화 (Break-glass) | ✅ | ❌ | ❌ | ❌ |
| 감사 문맥 (@AuditContext) | ✅ | ❌ | ❌ | ❌ |
| 위변조 방지 (Hash Chain) | ✅ | ❌ | ❌ | ❌ |
| 암호화 (AES-256-GCM) | ✅ | ❌ | ❌ | ❌ |
| Crypto-Shredding (GDPR) | ✅ | ❌ | ❌ | ❌ |
| 데이터 위치 | 자체 인프라 | 자체 | Sentry 서버 | Datadog 서버 |
| 분류 | 기술 스택 |
|---|---|
|
BackEnd |
|
|
Infra |
|
