본문 바로가기
Develop/Spring

application.properties 파일에 민감한 정보 담기

by jaeyoungb 2023. 1. 10.

증권사 데이터가 필요해서 한국투자증권의 Open API를 사용해야 하는 상황이 생겼다.

이 과정에서 appkey와 appsecret라는 민감한 정보를 프로젝트 소스 코드 상에서 감추어야 했다.

 

 

우선, 민감한 정보를 담을 application-api-key.properties 라는 파일을 만들어 주었다.

파일은 src/main/resources/ 경로에 생성

파일명은 application-[name].properties로 설정한다.

 

 

생성한 파일 안에 민감한 정보를 key, value 형태로 담아준다.

예시로 *****로 넣어주었으니, 본인의 상황에 맞는 key, value 값을 추가하면 된다.

 

 

그 후에, 기존에 있던 application.properties 파일에 해당 문구를 추가한다.

민감한 정보가 담긴 파일 이름이 application-api-key.properties 이므로, properties 파일의 이름에 해당하는 'api-key'를 spring.profiles.include의 값으로 넣어주었다.

 

이렇게 되면, application-api-key-properties에 있는 변수들을 불러올 수 있게 된다.

(기존에 있는 application.properties 파일에 민감한 정보를 담는다면 위와 같은 문구는 필요 없다)

 

 

더보기

테스트를 진행해보면, application-api-key.properties에 있는 변수를 잘 불러오는 것을 확인할 수 있다.

테스트 코드

 

테스트 실행 결과

 

더보기

위 문구를 application.properties에 추가시켜주지 않으면, BeanCreationException : Injection of autowired dependencies failed; 에러가 뜨게 된다.

 

에러 메시지

 

 

다음으로, 해당 민감한 정보를 사용할 변수에 @Value 애너테이션을 사용해 다음과 같이 연결시켜준다.

형태는 @Value("${key값}") 이다.

 

 

 

관련 자료들을 찾아보면서, 민감한 정보를 새 properties 파일에 담아서 사용하는 방법만을 적었습니다.

@Value로 연결시켜주는 것이 아닌, @ConfigurationProperties를 사용하는 방식도 존재합니다.

즉, 민감한 정보를 처리하는 여러 방법이 존재하는 것 같습니다.

 

여러 방법 중에 이러한 방법이 있다라는 걸 참고하시고, 자세한 설명은 적혀있지 않기에 각각의 과정에서의 의문은 구글링해보시면서 공부하시면 좋을 것 같습니다.

 

 

추가 참고 자료

- static 필드에 @Value 사용 : https://stackoverflow.com/questions/7253694/spring-how-to-inject-a-value-to-static-field  (권장하는 방식은 아님)

'Develop > Spring' 카테고리의 다른 글

트랜잭션 적용 순서  (0) 2023.01.25
@Value 애너테이션으로 값을 불러올 때, 항상 null 값이 오는 경우  (0) 2023.01.10
ddl-auto 옵션  (2) 2022.12.23
Spring WebFlux  (0) 2022.12.01
Spring WebFlux - Reactor (Project Reactor)  (0) 2022.11.30