rainsister
  • 신비한 비 Blog
  • Design Pattern
    • Adapter Pattern
    • Proxy Pattern
    • Mediator Pattern
    • Visitor Pattern
    • State Pattern
    • Memento Pattern
    • Factory Pattern
    • Template Pattern
    • Strategy Pattern
    • Bridge Pattern
  • springboot 2.x
    • 메시징 - 큐
      • RabbitMQ 기본설정
      • RabbitMQ 지연 큐(delayed queue)
    • Log
      • 기본 Log 설정 및 Logback 설정
      • Log4j2 사용해보기
      • tinylog 모듈 사용해보기
    • 기타 Database 에 대한 기본가이드
      • PostgreSQL
      • InfluxDB
      • MongoDB
    • 수행속도 UP! 각종 cache 어노테이션 사용법
      • Redis를 사용하여 Cache 관리하기
      • EhCache 사용해보기
      • Thread내캐쉬사용 및 Cache 어노테이션 사용법
    • Database Connection
      • Springboot 2.5 이후 data init script 초기화에 대한 변경
      • JTA 로 JPA 다중 DataSource 트랜잭션 처리 하기
      • Flyway 로 DataBase 형상 관리해보자
      • 트랜잭션 기초읽기
      • MyBatis 의 다중 DataSource
      • Spring Data JPA 다중 DataSource
      • JdbcTemplate 다중 DataSource
      • XML 로 Mybatis 설정하기
      • Mybatis 로 Mysql 연결하기
      • ORM(Spring data jpa)
      • Druid datasource 연결
      • Hikari 설정
      • JdbcTemplate 로 db 접근
    • rest api
      • XML에 대한 요청 및 응답 처리
      • SpringFox 3 및 Swagger 설정
      • 프로젝트 구동 시 RequestMappingHandler 로그 설정
      • Swagger 의 api들을 분류하는 법
      • 간단한 Restful API 만들고 테스트 코드 작성
      • Swagger2 구성하여 API 문서 자동화하기
      • JSR-303 그리고 validation
    • 설정
      • 시작
      • 멀티환경구성에 대한 새로운 방법
      • 멀티환경구성에 대한 새로운 include
      • 프로젝트 설정파일
      • 민감한 정보에 대한 암호화
  • java버전별차이
    • JAVA18
    • JAVA9
    • JAVA10
    • JAVA11
    • JAVA14
    • JAVA15
    • JAVA17
    • JAVA16
  • spring노하우
    • BeanUtils 권장하지 않는이유
    • 개인정보 암호화
    • Springboot 3가지 CROS 설정
    • Springboot 내장된 유용한 Utils
    • Spring Security WebSecurityConfigurerAdapter 가 deprecated 된 이슈해결하기
    • 아직도 HttpUtil ? SpringBoot 3.0의 HTTP Client Util 을 사용해보라
    • JDBC 소스를 뽀개기
    • spring-boot-configuration-processor 는 뭐하는놈임?
    • Apache BeanUtils vs Spring BeanUtils 성능비교
  • Effetive Java 3th
    • Finalizer & Cleaner
Powered by GitBook
On this page
  1. springboot 2.x
  2. 설정

민감한 정보에 대한 암호화

spring 암호화

Previous프로젝트 설정파일Nextjava버전별차이

Last updated 8 months ago

왜 암호화를 해야 하는지는 따론 찾아보시길 바란다.

그럼 바로 코드로 시작하자.

라는 오픈소스를 이용하여 설정값들을 암호화 하도록 하자. 요즘 클라우드서버를 많이 사용하지 예를 들으 아마존 클라우드에서 공짜로 제공하는 kms라는 서비스가 있거든 그걸 사용해도 되지만 일단 오늘은 jasypt를 사용해 보도록 하자.

설정

datasource.password=blake.com

테스트 코드 작성

@Slf4j
@SpringBootTest
public class PropertiesTest {

    @Value("${datasource.password:}")
    private String password;

    @Test
    public void test() {
        log.info("datasource.password : {}", password);
    }

}

결과!

2022-12-21 14:28:45.506  INFO 70405 --- [           main] com.blake.encypt.PropertiesTest   : datasource.password : blake.com

띠롱 ~ 아직은 암호화가 안됐음!

일단 library 추가해야지.

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

pom.xml 하단에 plugin 탭에 추가

<plugin>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-maven-plugin</artifactId>
    <version>3.0.3</version>
</plugin>

properties 속성 추가

jasypt.encryptor.password=blakespace

DEC() 로 암화할 대상을 감싼다.

datasource.password=DEC(blakespace.com)

jasypt-maven-plugin 이 DEC()의 내용을 일괄처리한다.

mvn jasypt:encrypt -Djasypt.encryptor.password=blakespace

주의 : -Djasypt.encryptor.password 명령시 properties 내의 설정된 값이랑 일치하게 해야 암호화 실패한다.

실행후 로그는 아래와 같다!

datasource.password=ENC(/AL9nJENCYCh9Pfzdf2xLPsqOZ6HwNgQ3AnMybFAMeOM5GphZlOK6PxzozwtCm+Q)

jasypt.encryptor.password=blakespace

암화화 되었으니 이제 복호화를 해볼차례다.

mvn jasypt:decrypt -Djasypt.encryptor.password=blakespace

해당명령은 단순 화면에 출력하는 용도일뿐 실제 파일은 수정하지 않는다.

datasource.password=DEC(blakespace.com)

jasypt.encryptor.password=blakespace
https://github.com/ulisesbocchio/jasypt-spring-boot