[스프링부트] Spring Boot 설정파일(yaml, properties) 암호화 (with Jasypt)
-
728x90
[스프링부트] Spring Boot 설정파일 암호화 (with Jasypt)
안녕하세요. 갓대희 입니다. 이번 포스팅은 [ Spring Boot 설정파일 암호화 하기 ] 입니다. : )
※ application.yml 이나 application.properties 파일에 DB의 비밀번호 또는 키 값을 명시해두는 경우 중요한 값들이 외부로 노출되어 보안에 심각한 문제를 초래할 수 있다.
예를 들어 로컬 DB만으로 작업한다면 서버주소가 lcoalhost이기 때문에, github과 같은 저장소에 id와 pw가 유출되어도 치명적으로 작용하지 않는다. 하지만, 실배포의 경우 대부분 외부 DB에 접근하기 때문에 id, pw, 서버주소까지 노출되면 위험하다. AWS로 운영하려고 해도 자체에서도 보안 정책상 막는것으로 알고 있다.
- jasyptEncryptorDES로 Bean을 등록하여 application.yml의 jasypt bean으로 등록할 때 사용한다.
@Configuration
@EnableEncryptableProperties
public class JasyptConfigDES {
@Bean("jasyptEncryptorDES")
public StringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword("gdh-password"); // 암호화키
config.setAlgorithm("PBEWithMD5AndDES"); // 알고리즘
config.setKeyObtentionIterations("1000"); // 반복할 해싱 회수
config.setPoolSize("1"); // 인스턴스 pool
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); // salt 생성 클래스
config.setStringOutputType("base64"); //인코딩 방식
encryptor.setConfig(config);
return encryptor;
}
}