Spring

[SpringBoot 3.0] Jasypt를 이용한 설정값 암호화

Apère 2023. 2. 22. 13:25
반응형

웹어플리케이션을 개발하다보면 DB정보와 같은 보안이 필요한 설정을 yaml 파일에 설정하게 되는데요 이부분을 암호화 하는 방법을 알아보겠습니다

 

우선 아래와 같이 의존성 추가를 해줍니다

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

 

그리고 난후에 아래처럼 Jasypt Bean을 생성해줍니다

@Configuration
public class JasyptConfig {

    @Bean("jasyptStringEncryptor")
    public StringEncryptor stringEncryptor() {
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword("testpassword");
        config.setAlgorithm("PBEWithMD5AndDES");
        config.setKeyObtentionIterations("1000");
        config.setPoolSize("1");
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator");
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        return encryptor;
    }
}

password에 들어가는 값은 암복호화키로 사용되므로 암호화를 위해서 환경변수 설정등으로 처리할수 있습니다

 

그런다음 Application 클래스에 @EnableEncryptableProperties를 추가하면됩니다

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

https://www.devglan.com/online-tools/jasypt-online-encryption-decryption 

 

Programming Blog Article Feeds as per your Interest | DevGlan

Best programming article feeds as per your Interest on different technologies. Subscribe to any technology and explore the best articles from around the web.

www.devglan.com

위 사이트에서 암복호화 값을 미리 받아볼수 있습니다. 암호화한 값을 yaml 파일에 설정할때에는 아래와 같이 ENC()로 감싸서 설정해주시면 마무리됩니다.

spring:
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: ENC(tJBwD6b1XiMlHJy0swIdcdJyfZ2YUlhWtR+44ddzAZXbMMamub/dtOjvo/D16IVERaXyG3kYHUXi4n3+GoiSf+HF+gSCDCcqHzie1ohGUgZHjAH7M+vr9Ae+HSG0KWLtlYOF8bZYILY=)
    username: ENC(XFmSic+f80Qw67Uun2L668evPJEDDlfh)
    password: ENC(xIq6j0wRyOq7B3DKo97Eji9LnYOCpIOE)
반응형