본문 바로가기
Develop/Spring

JWT - Secret Key를 시스템 환경 변수로 등록할 때 주의점

by jaeyoungb 2022. 11. 25.

상황  : JWT 서명에 사용되는 Secret Key 정보는 민감한 정보이기 때문에 시스템 환경 변수의 변수로 등록

 

- 시스템 환경 변수에 등록한 변수는 application.yml 파일의 Property 명과 동일한 문자열을 사용하지 않도록 주의한다.

 

예시 이미지

 

 

만약, 동일한 문자열을 포함하고 있을 때, 정해진 우선 순위에 따라 override되기 때문에, 고려해서 명명을 잘 해주어야할 것 같다.

 

먼저, Spring Environment에 대해 알아보자.

Spring Environment는 애플리케이션에서 사용되는 모든 Property Source를 관리하는 컴포넌트이다.

Property Source는 애플리케이션에서 사용되는 key/value 쌍의 property를 포함한다.

 

Spring에서는 OS 환경 변수, Java의 System Property, application.yml 등 다양한 경로를 통해 Property Source를 얻을 수 있고, 정해진 우선 순위가 존재한다.

 

thanks to Kevin Hwang

 

** 시스템 환경 변수에 등록한 변수는 application.yml 파일의 프로퍼티명과 동일한 문자열을 사용하지 않도록 주의

** 동일한 문자열을 어쩔 수 없이 사용하는 경우라면, Spring Environment의 Property override 우선 순위를 고려해 결과를 예상하고, 적절히 활용하자.

 

 

- Ref)

- https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config