히콩쓰 개발 일지
SecretKey와 같은 보안 정보 숨기기, Intellij 환경변수 설정 본문
프로젝트를 진행하면서, 아래와 같이 보안에 민감한 정보를 application.properties(yml) 에 String 형태로 직접 작성했었다.
- DB URL, Password
- JWT Secret Key
- OAuth Client Key
하지만 이런 민감한 정보들은 모두 숨겨야 마땅하다.
튜터님께서 말씀해주신 방법은 아래와 같이 총 세 가지이다.
- 1. 환경변수를 통해, 어플리케이션 최초 시작시 동적으로 값을 넣어준다.
- 2. ApplicationRunner 같은 인터페이스를 통해, 어플리케이션 최초 시작 시 AWS SecretsManager 등 외부 스토리지에 저장된 값을 읽어와 적용한다.
- 3. Configuration Server라는 것을 별도로 두고, 해당 서비스와 통신하여 그 값을 적용하도록 한다. 이 경우에는 Configuration Server에 내용이 변동되면, push 등을 통해, 변동 유무를 해당 어플리케이션에 알리고 새롭게 세팅된 값을 적용할 수 있다.
그 중 내가 사용한 방법은 환경 변수로 빼는 것이다.
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: ${DB_URL}
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
위와 같이 작성하고, intellij의 프로젝트 환경변수 설정을 해주면 된다.
이처럼 현재 프로젝트의 이름을 확인하고, Edit Configurations에 들어간다.
Environment variables의 빨갛게 표시된 버튼을 눌러 환경 변수를 등록할 것이다.
이렇게 등록하면 런타임 시점에 알아서 들어간다! 끝!