2017년 5월 16일 화요일

spring property file encryption 하기

jasypt 라이브러리를 통해 spring 내 프로퍼티 파일을 암호화할 수 있다.
jasypt를 사용하는 여러가지 방법이 있지만, 여기에서는 간단히 spring boot와 함께 사용할 수 있는
jasypt-spring-boot를 이용해 진행해보도록 하겠다.

사용방법은 간단하다.
아래와 같이 먼저 jasypt 라이브러리를 프로젝트 내에 추가해준다.

compile group: 'com.github.ulisesbocchio', name: 'jasypt-spring-boot', version: '1.12'

그리고 나서, 아래와 같이 Configuration파일에서 @EnableEncryptableProperties를 추가해주면 끝~!!
은 아니고, 아직 하나 할 일이 남았다.

@SpringBootApplication
@EnableEncryptableProperties
@Slf4j
public class JasyptApplication implements CommandLineRunner {
    public static void main(String[] args) {
        SpringApplication.run(JasyptApplication.class, args);
    }

    @Value("${test.password}")
    private String encryptedPassword;

    @Override
    public void run(String... args) throws Exception {
        log.info("encryptedPassword : {}", encryptedPassword);
    }
}

/src/main/resources 아래에
application.yml 파일 또는 application.properties 파일을 생성한후, 아래 password를 설정해주어야 한다.
암호화 password는 필수값이기 때문에 꼭 입력해주어야 하고, 나머지 properties들은 설정해주지 않으면
기본 값으로 설정된다.
자세한 설정값 관련 부분은 아래 URL을 참고하기 바란다.
[https://github.com/ulisesbocchio/jasypt-spring-boot]

jasypt:
  encryptor:
    password: jasypt

위와 같이 설정하고, 아래와 같이 encrption된 값으로 설정된 property를 가져오게 되면,

test:
  password: ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm)


아래와 같이 server 내에서는 암호화가 풀린 값을 가지고 올 수 있다.

encryptedPassword : reports_passwd

위와 관련된 전체 예제는 아래에서 다운로드 받을 수 있다.

https://gitlab.com/shashaka/jasypt-spring-project

댓글 없음 :

댓글 쓰기