yml설정에서 AWS나 DB와 관련된 키값을 암호화 하려고 한다.
JASYPT 는 암호화에 관해 잘 모르는 개발자도 손쉽게 암호화를 할 수 있도록 돕는다.
1. 우선 gradle설정을 추가한다.
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.3' // yml Secret Key 암호화
2. 암호화 관련 설정 클래스파일 만들기
https://github.com/ulisesbocchio/jasypt-spring-boot#use-you-own-custom-encryptor
에서 확인할 수 있다.
GitHub - ulisesbocchio/jasypt-spring-boot: Jasypt integration for Spring boot
Jasypt integration for Spring boot. Contribute to ulisesbocchio/jasypt-spring-boot development by creating an account on GitHub.
github.com
@Configuration
public class JasyptConfig {
@Value("${jasypt.encryptor.password}")
private String password;
@Bean("jasyptStringEncryptor")
public StringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(password);
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;
}
}
- 나는 외부에서 키값을 입력받는 방식을 사용하였다.
3. 키값 암호화 하기
https://www.devglan.com/online-tools/jasypt-online-encryption-decryption

- 암호화하려는 키를 입력한다
- Two Way 방식을 선택
- 패스워드를 임의로 입력한다(패스워드 기억해야함) / 패스워드는 복호화시 필요하다.
4. 암호화된 키로 yml 설정하기
cloud:
aws:
region:
static: ap-northeast-2
s3:
credentials:
access-key: ENC(xFO5USJEzJjHL8RB+a7IREpyQOoHp4HZhL2OFzzKIBs=)
secret-key: ENC(PtaZU3cqX2thf4/AeCsoMF+XCJRo3WR8q3U1iGexhAqLXaFIQ5JKn8CKkO3uRyKipF9cb/Qy4W8=)
stack:
auto: false
#jasypt: #패스워드 암호화/복호화 키
# encryptor:
# password: 설정한 패스워드
나는 AWS의 S3키를 암호화 하였다.
암호화된 키를 넣어줄때는 ENC(암호화된 키) 형식으로 넣어줘야 한다.
맨 아랫줄 패스워드에 설정한 패스워드를 넣어줘도 동작하지만 보안에 취약함으로 따로 설정하여 관리한다.
5. 패스워드 관리하기
- 직접 실행할 때 java -jar 명령어 뒤에 붙여주는 방법
--jasypt.encryptor.password=패스워드
- intellij 환경변수를 설정하는 방법
실행버튼 옆 점세개 클릭 -> 편집 -> 옵션수정 -> 환경변수 클릭 -> 환경변수 입력 후 적용 및 확인



- Github Actions 환경변수로 관리하는 방법
https://kjsu1994.tistory.com/42
'Study > Java Spring Boot' 카테고리의 다른 글
Spring Boot - 토큰값을 통해 로그인한 사용자 정보 가져오기 (0) | 2023.03.23 |
---|---|
네이버 API연동해서 뉴스 검색하기 (0) | 2023.03.22 |
java.sql.SQLIntegrityConstraintViolationException: Column '컬럼명' cannot be null (0) | 2023.03.16 |
@ModelAttribute 사용 방법 및 원리 (0) | 2023.03.15 |
AWS S3 버킷 연동하여 파일 업로드 하기 (1) | 2023.03.15 |