티스토리 뷰
반응형
설정파일에 DB 정보와 Mail 발신인 정보가 그대로 노출될 경우
보안에 취약해질 수 있어
해당 정보를 암호화해서 넣어주거나 설정파일을 외부에 빼서 따로 관리해줘야 한다.
Spring에는 Jasypt 라는 라이브러리로 암호화 시켜서 설정파일을 관리할 수 있다.
Jasypt 라이브러리 등록
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5'
암호화 방식 및 키값을 설정하는 빈을 생성.
@Configuration
public class ApplicationConfig {
@Bean(name="jasyptStringEncryptor")
public StringEncryptor stringEncryptor() {
String key = "key";
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(key);
config.setAlgorithm("PBEWithMD5AndDES");
config.setKeyObtentionIterations(1000);
config.setPoolSize(1);
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
return encryptor;
}
}
이제 암호화 할 값들을 테스트 돌려서 값을 추출해온다.
@SpringBootTest
public class JaysptconfigTest {
@Test
void jasypt() {
String url = "jdbc:oracle:thin:@127.0.0.1:1521/db";
String username = "tiger";
String password = "tiger";
String mailid = "sample@sample.co.kr";
String mailpwd = "sample";
System.out.println(jasyptEnc(url));
System.out.println(jasyptEnc(username));
System.out.println(jasyptEnc(password));
System.out.println(jasyptEnc(mailid));
System.out.println(jasyptEnc(mailpwd));
}
public String jasyptEnc(String VALUE) {
String key = "key";
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(key);
config.setAlgorithm("PBEWithMD5AndDES");
config.setKeyObtentionIterations(1000);
config.setPoolSize(1);
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
return encryptor.encrypt(VALUE);
}
}
나온값들을 설정값에 넣어준다.
datasource:
driver-class-name: oracle.jdbc.OracleDriver
jdbc-url : ENC(....)
username: ENC(....)
password: ENC(....)
mail:
host: mail.google.com
port: 25
username: ENC(....)
password: ENC(....)
설정환경이 정상작동하는지 확인하면 된다.
반응형
'Java > SpringBoot&Spring' 카테고리의 다른 글
댓글