Please enable JavaScript.
Coggle requires JavaScript to display documents.
Jasypt를 활용한 설정 정보 암호화 - Coggle Diagram
Jasypt를 활용한 설정 정보 암호화
Jasypt
Java Simplified Encryption
자바 애플리케이션에 암호화 기능을 쉽게 더할 수 있도록 돕는 라이브러리
암호화
내부적으로
PBE(Password-Based Encryption) 기반 알고리즘
사용
비밀키(password) + salt/iv
등을 활용해 평문 ↔ 암호문 변환
등장 이유
설정 파일이나 application.yaml 등에 DB 계정 정보, API 키, SMTP 계정 등 민감한 정보를 평문으로 두는 것은 보안상 치명적.
설정에 있는 민감한 정보를 암호화/복호화 하는 기능을 제공하면서, 코드나 애플리케이션 구조 변경을 최소화하는 방식
에 대한 필요로 사용됨
코드 저장소에 민감 정보가 들어가면 유출 리스크 증가
환경 변수 관리로 보완 가능하지만, 여전히 로컬/테스트 환경에서는 평문 노출 가능성 있음
전용 Secret Manager 도입은 초기 비용 및 운영 부담 증가
특징
장점
개발 효율/편의성
낮은 도입 장벽
jasypt-spring-boot 라이브러리 추가 후, 설정파일에 ENC(...) 암호문을 넣고 런타임 복호화만 하면 사용 가능.
코드 구조 대부분을 수정 없이 사용 가능.
런타임 투명성
애플리케이션 실행 시 자동으로 복호화되어 코드 쪽에서는 평문처럼 사용 가능 ➡️ 개발자가 복호화 로직을 직접 많이 수정할 필요 없음.
Spring 통합 지원
Spring Boot용 starter가 있어서 설정 최소화 및 자동 적용 편의성 제공됨
보안성
설정 보안 강화
저장소에는 ENC(...) 형태의 암호문만 남아, 민감 정보의 평문 유출로 인한 위험도 감소
운영 유연성
환경별 유연성
같은 암호문이라도 운영, 스테이징, 로컬 환경에서 다른 master password를 쓸 수 있어 환경별 유연성 확보 가능
한계 및 주의 사항
마스터 비밀번호 관리
복호화 시 사용하는 master password(키)가 유출되면, 암호화해 둔 모든 값이 쉽게 복호화될 수 있어, 해당 키를 안전하게 관리하는 것이 핵심
환경변수 / 시크릿 매커니즘으로 안전하게 주입
비밀 관리 기능 아님
단순히 암호화/복호화 기능만 제공하며, 회전(rotation), 버전 관리, 접근 제어 등 운영 기능은 필요할 경우 직접 설계 필요
보호 범위 한계
애플리케이션 설정 계층 보호일 뿐, DB 컬럼 암호화 혹은 저장 매체 암호화의 대체제가 아님
성능 비용
복호화 연산 자체는 경량이지만, 복호화 작업이 빈번하게 일어나는 구조에서는 성능 오버헤드 고려 필요
적용 한계
중접된 YAML 구조, 리스트 타입 등 복잡한 구조는 암호화 적용이 번거롭거나 제한될 수 있음
유지 관리 리스크
Jasypt 본체는 업데이트가 활발하지 않다는 지적이 있음. 다만, jasypt-spring-boot 프로젝트는 현재까지 유지되고 있음 -> 버전 호환성 체크 필수