IT/Spring Cloud

대칭키 암호화

김 정 환 2022. 1. 5. 16:22
반응형

앞으로 구현할 대칭키 암호화의 개요입니다.

 

user-serviceapplication.yml에 있는 정보를 config server에 저장하여 암호화하고 사용하겠습니다.

Spring Cloud Config 서버에서 암복화화를 합니다.

 

요약

Config Server에 bootstrap.yml을 만들고 (대칭)암호화키 설정
Config Server에서 관리하고 싶은 정보를 repository의 yml에 옮기기 ( user-service의 DB 접속 정보를 옮김 )
Postman으로 비밀번호를 암호화하고, 암호화된 해당 비밀번호를 Config Server의 user-service.yml에 입력

 

 

 

소스코드

 

Config service에 Dependency를 추가하겠습니다.

        <!-- bootstrap -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

 

bootstrap.yml도 만들어 줍니다.

encrypt:
  key: abcdefghijklmnopqrstuvwxyz0123456789 # 대칭키

 

 

암호화와 복호화가 되는지 Postman을 통해 간단하게 테스트 해보겠습니다. POST 방식으로 요청하니 'kim'이 암호화되었고, 다시 복호화된 것을 확인할 수 있습니다.

 

 

 

user-service의 DB 접근 정보를 config server로 옮기겠습니다.

 

user-service의 application.yml에서 아래 DB 접근 정보를 주석처리 합니다.

spring:
  application:
    name: user-service
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest
  h2:
    console:
      enabled: true
      settings:
        web-allow-others: true
      path: /h2-console
#  datasource: # config server의 user-service.yml에 넣어서 관리
#    driver-class-name: org.h2.Driver
#    url: jdbc:h2:mem:testdb

 

user-service의 bootstrap.yml에 config 이름을 user-service로 변경합니다.

spring:
  cloud:
    config:
      uri: http://127.0.0.1:8888
      name: user-service

 

Config server의 user-service.yml에 DB 접근 정보를 추가합니다. 비밀번호는 Postman에서 1234를 암호화하여 받은 결과를 입력합니다.

spring:
  datasource: # user-serivce의 DB 접근 정보 
    driver-class-name: org.h2.Driver
    url: jdbc:h2:mem:testdb
    username: sa
    password: '{cipher}5de4576120f5dcefadfb4da3355367cb0f61837ec944451ff68a565e55506011' # 1234 암호화

token:
  expiration_time: 8600000 # 1분 유효
  secret: user_token_native_user_service # 토큰화할 때 사용할 키

gateway:
  ip: 192.168.0.8

 

Config server를 재기동합니다. 이제 Postman으로 확인해 보겠습니다. user-service.yml을 불러오니, 위에서는 길고 규칙없어 보이던 숫자였던 비밀번호가 1234로 복호화되어 보여집니다. 

 

user-service.yml에서 비밀번호를 살짝 바꿔 저장한 후에, 다시 postman으로 확인해보니 아래와 같이 비밀번호를 복호화 할 수 없다고 나타납니다.

 

만약에 암호화된 비밀번호의 앞에 붙은 {cipher}를 빼면, 아래와 같이 복호화시키지 않고 그냥 보여줍니다.

 

 

이제 DB에 접근해 보겠습니다. user-service.yml에서 비밀번호를 원래대로 돌려놓습니다. 그리고 user-service를 재기동합니다. /h2-console에 가서 비밀번호 1234을 넣고 테스트해보면 성공이라고 뜹니다.

 

 

끝.

반응형

'IT > Spring Cloud' 카테고리의 다른 글

Microservice간 통신 - RestTemplate 방식  (0) 2022.01.06
비대칭키 암호화  (0) 2022.01.05
Spring Cloud Bus  (0) 2022.01.05
Configuration Service  (0) 2021.12.30
User Microservice - 회원 로그인  (0) 2021.12.17