[Jasypt] 설정 파일 암호화

y__hi_2X·2022년 3월 3일
1

일반적으로 프로젝트 초기 DB 설정 시 프로퍼티 파일이나 yml 파일에 DB 접속정보를 입력하게 됩니다.

이러한 정보가 포함된 소스를 Github와 같이 공개된 장소에 올리게 된다면 보안적으로 문제가 발생할 수 있습니다.

이번 글에서는 이러한 개발 정보를 암호화해주는 Jasypt 라이브러리에 대해 정리해보겠습니다~


💡Jasypt란?

개발자가 간단히 프로젝트에 기본 암호화 기능을 사용할 수 있도록 지원해주는 Java 라이브러리입니다.

Jasypt 적용

실제로 Jasypt를 이용해 설정 파일 내 민감 정보를 암호화해보겠습니다.

의존성 추가

먼저 암호화 기능을 사용하기 위해 dependencies에 해당 라이브러리를 추가해줍니다.

dependencies {
	implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4'
}

Encrypt Key 생성

Jasypt 암복호화 사이트
jasypt 관련 설정 시 password를 설정하는 부분이 있는데 이 설정이 노출되는 경우 프로젝트 내에 암호화된 값을 복호화할 수 있기에, 위 사이트를 통해 jasypt password를 암호화합니다.

Config 생성

@Configuration
@EnableEncryptableProperties
public class JasyptConfig {
    @Bean(name = "encryptorBean")
    public StringEncryptor stringEncryptor(SimpleStringPBEConfig simpleStringPBEConfig) {
        PooledPBEStringEncryptor stringEncryptor = new PooledPBEStringEncryptor();
        stringEncryptor.setConfig(simpleStringPBEConfig);
        return stringEncryptor;
    }

    @Bean
    @ConfigurationProperties("config.encrypt")
    public SimpleStringPBEConfig simpleStringPBEConfig() {
        return new SimpleStringPBEConfig();
    }
}

설정 추가

jasypt.ecryptor.bean에 위 Config에서 명시한 Bean 입력
config.ecrypt.password는 위에서 사이트를 통해 암호화 한 password 입력

jasypt:
  encryptor:
    bean: encryptorBean
config:
  encrypt:
    password: ie2Fa4lO1v1ODSx738OIUEiv/9rAFOqk
    algorithm: PBEWithMD5AndDES
    provider-name: SunJCE
    pool-size: 1
    key-obtention-iterations: 1000
    string-output-type: base64

테스트 함수를 이용해 암호화 password 구하기

@SpringBootTest
class JasyptConfigTest {
    @Autowired
    @Qualifier("encryptorBean")
    private StringEncryptor stringEncryptor;

    @Test
    public void generatePassword() {
        String encrypt = stringEncryptor.encrypt("password");
        System.out.println(encrypt);
        String decrypt = stringEncryptor.decrypt(encrypt);
        System.out.println(decrypt);
    }
}

암호화 password 적용

ENC("암호화 password") 형식으로 암호화된 값 적용

spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://localhost:3306
    username: dbuser
    password: ENC(WHXxOvGjJa7qXjALhA7ghdoYksJjabL/)

🔗 참고 URL

0개의 댓글