본문 바로가기

dev/스프링

Spring Boot Jasypt

스프링 부트 프로젝트에서 DB 접속 정보 같은 민감한 정보를

 

암호화하지 않는다면 보안에 위험할 수 있습니다.

 

암호화 라이브러리로 Jasypt를 많이 사용하는데 스프링 부트에 적용하겠습니다.

 

Jasypt 라이브러리 추가

 

pom.xml에 Jasypt 라이브러리를 추가합니다.

 

Jasypt 설정 클래스

 

Jasypt 라이브러리 암복호화 설정을 담당하는 클래스를 생성하고 bean으로 등록합니다.

 

이 코드에서 주의 깊게 봐야 되는 부분은 19라인입니다.

 

암복호화에 사용되는 비밀키를 OS 환경변수에서 가져옴으로써 보안성을 강화했습니다.

 

윈도우 OS 환경변수 확인

 

혹시 환경변수에 있는 값을 못 읽으면 재부팅 한번 하시기 바랍니다.

 

나머지 코드에 대한 설명은 아래에서 확인하시면 됩니다.

 

11라인: 스프링 부트 프로젝트에서 설정을 역할을 하는 클래스를 나타내는 어노테이션

12라인: Jasypt 라이브러리를 사용하여 암복호화 하는 것을 나타내는 어노테이션

15라인: 설정 클래스에서 생성한 객체를 "jasyptEncryptorDES" 이름으로 빈 등록

17라인: Jasypt 라이브러리의 암호화 클래스 객체 "encryptor" 생성

18라인: PooledPBEStringEncryptor 클래스의 설정 담당 클래스 객체 "config" 생성

19라인: 암복호화에 사용되는 비밀키 환경 변수 "JASYPT_KEY"에서 읽어서 설정

20라인: 사용할 암호화 알고리즘 설정

21라인: 키 획득 반복 횟수 설정

22라인: 풀 크기 설정

23라인: Salt 클래스 설정

24라인: 문자열 출력 형식 설정

25라인: "encryptor" 객체에 "config" 객체 설정 등록

 

Test 코드 실행

 

테스트 코드에서 DB 접속 정보를 암호화하고 확인합니다.

(DB url, username, password)

 

application.yml 파일

 

테스트 코드에서 암호화 한 값들을 "ENC()" 안에 작성해서 application.yml에 저장합니다.

 

그리고 앞에서 생성한 빈 "jasyptEncryptorDES"을 Jasypt 암호화를 담당하는 빈으로 설정합니다.

 

Spring Boot 실행 로그

 

여기까지 설정이 끝났으면 프로젝트를 실행했을 때 DB 접속이 잘 되는 것을 확인할 수 있습니다.

 

Jasypt 설정에 대한 정보는 아래 블로그들을 참고했습니다.

https://goddaehee.tistory.com/321

 

[스프링부트] Spring Boot 설정파일(yaml, properties) 암호화 (with Jasypt)

[스프링부트] Spring Boot 설정파일 암호화 (with Jasypt) 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ Spring Boot 설정파일 암호화 하기 ] 입니다. : ) ※ application.yml 이나 application.properties 파일에 DB의 비

goddaehee.tistory.com

https://jiurinie.tistory.com/112

 

[Spring Boot] Jasypt를 이용한 암호화

[Spring Boot] Jasypt를 이용한 암호화 개발환경 Eclipse IDE 2022-06 Spring Boot 3.0.0 Gradle 7.0 Lombok PostgreSQL jasypt-spring-boot:3.0.4 Jasypt는 개발자가 암호화 작동 방식에 대한 깊은 지식이 없어도 최소한의 노력으

jiurinie.tistory.com

https://kitty-geno.tistory.com/160

 

Spring Boot | jasypt를 사용하여 프로퍼티 암호화 하기

jasypt란 개발자가 암호화 작동 방식에 대한 깊은 지식 없이도 최소한의 노력으로 프로젝트에 기본 암호화 기능을 추가할 수 있도록 하는 Java 라이브러리이다. 주로 프로젝트가 공개되어도 프로

kitty-geno.tistory.com

 

'dev > 스프링' 카테고리의 다른 글

Spring Boot OAuth2 로그인  (0) 2023.11.14
Spring WebSocketSession  (0) 2023.08.22
Spring Naver Editor 이미지 업로드  (0) 2023.06.28
Spring Boot Logback  (0) 2023.06.21
Spring Enum 활용  (0) 2023.06.05