Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 애자일프로그래밍
- JPA
- 코딩
- 코딩테스트
- Baekjoon
- 그리디
- Java
- 애자일
- 클린코드
- 엘라스틱서치
- 개발
- database
- framework
- 개발자
- ES
- 데이터베이스
- Elasticsearch
- cleancode
- 애자일기법
- 백준
- 프레임워크
- 읽기쉬운코드
- spring boot
- 그리디알고리즘
- 자바
- Spring
- 스프링
- 코드
- API
- 알고리즘
Archives
- Today
- Total
튼튼발자 개발 성장기🏋️
#2. 코인 자동 매매 프로그램 만들기 본문
반응형
※ 본 '코인 자동 매매 프로그램 만들기' 시리즈 포스팅은 개인적인 학습용으로 개발하게 되는 프로그램입니다.
투자의 책임은 투자자 본인에게 있음을 알려드립니다.
이번 포스팅은 프로그램에 사용될 resource에 대해 이야기한다.
encrypted.a.key={업비트에서_발급받은_암호화된_access_key}
encrypted.s.key={업비트에서_발급받은_암호화된_secret_key}
나는 업비트에서 API를 사용하기 위해 발급되는 access key와 secret key를 한 번 암호화 해서 사용한다. 실제 배치에서는 해당 키를 사용해서 로그인을 시도할 때, 복호화가 진행되게 해서 보안에 신경썼다. 암호화의 종류는 선호하는 방식을 진행하면 된다.
key={암호화_key_32byte}
iv={암호화_iv_16byte}
charset={사용할_charset}
contents={사용할_암호화방식_및_패딩}
암호화는 언제 어떤 취약점이 발견될지 알 수 없기 때문에, 언제든지 빠르게 대응이 가능해야한다고 생각한다. 최근 log4j 보안 이슈를 보면 알 수 있다. 따라서 암호화에 사용되는 모든 데이터 또한 리소스로 관리될 수 있도록한다. 물론 코드 상으로 어느정도 제한이 될 수 있고 더 광범위하게 생각할 수 있지만, 암호화에 대한 내용으로 시간을 할애하는 것 보다, 프로젝트의 core에 할애하고 싶다.
logging.logback.rollingpolicy.max-file-size=100MB
logging.file.name=logs/autobot.log
logging.logback.rollingpolicy.file-name-pattern=logs/autobot_backup.%d{yyyy-MM-dd}-%i.log
logging.pattern.console=%-5level [%X{loggingID:-none}] %d{yyyy-MM-dd HH:mm:ss}[%thread] [%F - %M:%line] - %msg%n
logging.pattern.file= %-5level [%X{loggingID:-none}] %d{yyyy-MM-dd HH:mm:ss}[%thread] [%F - %M:%line] - %msg%n
logging.charset.console=UTF-8
logging.charset.file=UTF-8
logging.level.dotori=debug
logging.level.org.apache.http=debug
logging.level.root=info
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url={datasource_url}
spring.datasource.username=ENC({username})
spring.datasource.password=ENC({password})
spring.jpa.hibernate.ddl-auto=none
spring.jpa.generate-ddl=true
spring.jpa.show-sql=true
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
마지막으로, logging 설정과 jpa 및 datasource 설정이다.
properties로 관리하다보니, username과 password에 대해서는 "jasypt"를 사용해서 암호화를 진행했다.
사용된 jasypt에 대해 간략하게 설명한다면, 아래와 같다.
@Configuration
public class JasyptConfig {
@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"); // 인스턴스 pool
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); // salt 생성 클래스
config.setStringOutputType("base64"); //인코딩 방식
encryptor.setConfig(config);
return encryptor;
}
}
배치에서 해당 bean을 사용하기 위해서는 "@EnableEncryptableProperties" 어노테이션이 필요하다.
반응형
'프로젝트 > 토이프로젝트' 카테고리의 다른 글
푸르지오 스마트홈 가전제어를 언어로 손쉽게 (ios) (0) | 2025.01.07 |
---|---|
#4. 코인 자동 매매 프로그램 만들기 (1) | 2022.02.28 |
#3. 코인 자동 매매 프로그램 만들기 (0) | 2022.02.07 |
#1. 코인 자동 매매 프로그램 만들기 (0) | 2022.01.28 |