본문 바로가기
Spring

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

by Apère 2023. 2. 22.
반응형

웹어플리케이션을 개발하다보면 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)
반응형

댓글