| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- boot
- 이펙티브
- 리뷰
- error
- JPA
- RCP
- 엘라스틱서치
- node
- 알고리즘
- 스프링
- Git
- Spring
- nodejs
- javascript
- effective
- 독후감
- Spring Boot
- 인터페이스
- kibana
- 백준
- 맛집
- java8
- Web
- 자바
- elasticsearch
- 후기
- 자바스크립트
- java
- jface
- MySQL
Archives
- Today
- Total
wedul
Spring Boot application.properties 암호화 내역 복호화 방법 본문
반응형
Spring Boot에서는 여러 설정값을 application.properties에 입력하여 사용할 수 있다.
Spring보다 편리하고 효율적이다.
하지만 DBMS 사용을 위해서 연결정보를 properties에 입력할 때 평문으로 그냥 삽입하면 정보 유출에 문제가 발생 할 수 있다.
이를 해결하기 위해서 application.properties에서 어떻게 사용하는지 확인해보자.
1. application.properties 내용 암호화하여 입력하기
우선 application.properties에 있는 내용을 암호화 해서 삽입한다. 나는 AES256으로 암호화 하여 삽입하였다.
1 2 | spring.datasource.username=K2amNtg+kL5xK23g7H3Znw== spring.datasource.password=ivWXmtXGN289BY6q9AwRnw== | cs |
2. EnvironmentPostProcessor 구현하기
EnvironmentPostProcessor 인터페이스는 application context가 올라가기전에 application을 커스터마이징 할 수 있게 지원해주는 기능을 제공한다.
postProcessEnvironment 메소드를 구현하여 원하고자 하는 속성값을 변경하여 처리할 수 있다. 이 부분에서 DBMS 연결정보를 다시 복호화 처리하도록 설정하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | /** * JDBC 접속 ID 와 Password 암복호화에 사용하기 위해 사용하는 Processor * * @author cjung * @date 2018. 08. 12 * */ public class EncryptionEnvironmentPostProcessor implements EnvironmentPostProcessor { private final Logger logger = LoggerFactory.getLogger(EnvironmentPostProcessor.class); @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { Properties props = new Properties(); try { props.put("spring.datasource.password", AES256Cipher.getInstance().AES_Decode(environment.getProperty("spring.datasource.password"))); props.put("spring.datasource.username", AES256Cipher.getInstance().AES_Decode(environment.getProperty("spring.datasource.username"))); } catch (Exception e) { logger.error("Fail decrypt datasource info", e); } environment.getPropertySources().addFirst(new PropertiesPropertySource("myProps", props)); } } | cs |
3. META-INF/spring.factories 에 클래스 full 경로 기입
EnvironmentPostProcessor를 구현한 클래스가 정상적으로 동작하기 위해서는 classpath에 META-INF/spring.factories 파일을 만들고 해당 클래스의 풀 경로를 기입해주어야한다.
1 2 | # post processor 적용 org.springframework.boot.env.EnvironmentPostProcessor=com.wedul.common.config.EncryptionEnvironmentPostProcessor | cs |
반응형
'web > Spring' 카테고리의 다른 글
| Spring Boot Cross Domain 처리 (0) | 2018.10.04 |
|---|---|
| Facebook Javascript plugin과 spring security를 이용한 페이스북 로그인 (0) | 2018.10.04 |
| Spring boot hibernate jpa에서 Auditing 사용 - update, create 시간 자동 변경 (3) | 2018.10.03 |
| Spring Validation을 이용해서 요청 검증처리 (1) | 2018.08.09 |
| Spring Application Test 정리 (0) | 2018.08.07 |