앞으로 구현할 대칭키 암호화의 개요입니다.
user-service의 application.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 |