application의 db 정보들이나 token의 secret key 같은 민감한 정보들은 직접적으로 코드에 적어놓으면
외부 유출의 우려가 있음
그렇기 때문에 Jasypt 을 이용해서 암호화 한 뒤, ENC(암호화 된 값) 처리를 해서 코드에 적어놓고
이를 복호화 하기 위한 값은 외부 환경 변수를 추가하여 사용하면 보안 수준을 높일 수 있음
아래 사이트에서 암호화를 하려는 db 정보 (1) url, username, password를 입력
입력한 secret key로 암호화도하고 복호화도 할 수 있는 2way로 선택해야함
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
#application-dev.yml 파일
spring:
config:
activate:
on-profile: dev
datasource:
url: ENC(Le32ORBbdCTjptHxWjmSU9JQET+bpQRT28wJDXAiQ/vWQA/I9M2CUgrmwUFTVIZadQ7TLjl8OqaSuVvDMuA5CQSMI9bGjEfECBUC846qH8hwPGT9puJ5pwS8xXxRiHe1ATGoBP/LhBt1zD6v5xATdWLw5p0oQWiFgENKuzerO+nJX9sgkWAnUw==)
username: ENC(IuMoK7PxMYN67m1/pyLlyQ==)
password: ENC(/gI8xPZrcpPpaVyjdPv3SyxN+zhXO7UA)
driver-class-name: com.mysql.cj.jdbc.Driver
//JasyptConfig 클래스 파일
package com.turkey.walkingwith7puppy.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 lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@Configuration
public class JasyptConfig {
@Value("${jasypt.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.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
return encryptor;
}
}
참고
https://toma0912.tistory.com/82
Jasypt를 이용한 properties 암호화
안녕하세요. 오늘은 Spring에서 지원해주는 Jasypt(Java Simplified Encryption)를 이용해서 데이터베이스 접속 정보나, 다양한 설정 정보들을 담아두고 있는 properties 또는, yaml 파일의 정보를 암호화하는
toma0912.tistory.com
.
'배포' 카테고리의 다른 글
Swagger을 통한 문서자동화 기능 사용 (0) | 2023.05.11 |
---|---|
AWS EC2 (Elastic Compute Cloud) 배포하기 (0) | 2023.05.10 |
[Spring Data JPA] 사용법 (0) | 2023.05.09 |
application.yml 관리 전략 (0) | 2023.05.08 |
AWS RDS (Relational Database Service) (0) | 2023.05.07 |