728x90
반응형
스프링 세팅 시 민감한 정보들이 많다. (rds db 주소 등)
jasypt로 간편하게 암호화 할 수 있다!!
1. build.gradle 설정
아래 부분을 추가해준다.
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation group: 'com.github.ulisesbocchio', name: 'jasypt-spring-boot-starter', version: '3.0.4'
2. Jasypt config 설정
필자는 JasyptConfig로 네이밍해 설정하였다. 여기서 중요한 부분은 encryptKey 은 노출하면 안된다!
package com.mews.mews_backend.global.config;
import org.jasypt.encryption.StringEncryptor;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
@Configuration
public class JasyptConfig {
@Value("${jasypt.encryptor.password}")
private String encryptKey;
@Bean("jasyptStringEncryptor")
public StringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(encryptKey);
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. 암호화, 복호화 및 encryptKey 생성
위와 같이 기본 세팅을 한 후
https://www.devglan.com/online-tools/jasypt-online-encryption-decryption
에 접속해 암호화/복호화를 진행하자!
test_lock : 암호화할 부분
serect_key : encryptKey에 해당하는 부분이다. 필자는 랜덤으로 문자를 생성해 encryptKey로 설정하였다.
4. 암호화 적용 및 encryptKey 환경 변수 설정
이제 가릴 부분을 ENC(암호화된 String)으로 교체해주자!
암호화 키 환경 변수 설정하는 방법은 여러가지가 있는데,
우선 로컬에서 테스트할때는 어플리케이션 구성설정 - vm옵션에 아래와 같이 입력해주는 방법이 있다.
5. docker-compose에서 encryptKey 설정
docker에서는 환경변수를 어떻게 넣어줄까?
아래 environment에서 변수 설정을 해주면 된다!
version: "3"
services:
spring:
container_name: spring
image: test_image
expose:
- "8080"
ports:
- "8080:8080"
environment:
JASYPT_ENCRYPTOR_PASSWORD: test_key
728x90
반응형
'Tech > Spring' 카테고리의 다른 글
[Spring Data JPA] 스프링 테이블, 컬럼명 생성 전략 (0) | 2023.03.22 |
---|---|
[Spring Data JPA] 스프링 Entity 설계 시 주의사항 (0) | 2023.03.21 |
[Spring] java: cannot find symbol class Badge 에러 해결 방법, QueryDSL 해결 방법 (0) | 2023.01.07 |
[스프링 핵심 원리] 웹 스코프 (0) | 2022.02.06 |
[스프링 핵심 원리] 프로토타입 스코프 (0) | 2022.02.02 |