Spring Cloud Config - 정보 암호화

2025. 1. 15. 17:12· 백엔드 Backend/서버 Server
목차
  1. ✅ 대칭키 방식 (Symmetric Key)
  2. 3. 암호화된 값 적용
  3. ✅ 비대칭키 방식 (Asymmetric Key)
  4. ✅ Spring Cloud Config를 사용하는 경우
  5. 🔥 정리

application.yml 등의 설정 파일에는 DB의 아이디나 비밀번호 등 민감한 정보가 포함된다.

  spring:
      rabbitmq:
        host: 127.0.0.1
        port: 5672 #web접속은 15672
        username: guest
        password: guest

이 때, 위와 같이 password와 같은 정보를 평문 그대로 설정파일에 노출하게 되면 해킹이나 도난 발생 시 심각한 보안 문제가 될 수 있다.

 

이를 방지하기 위해 설정 정보를 암호화하여 서버에 저장하는 것이 중요하다.

일반적으로는 대칭키 방식과 비대칭키 방식 두 가지 방법을 사용하여 설정 정보를 암호화할 수 있다.
관리가 까다롭긴 하지만, 보안성을 고려하면 비대칭키 방식이 더 안전하다.

 

Spring Cloud Config서버를 사용하는 경우, 해당 서버에서 설정 파일 암호화 과정을 진행할 수 있다.

 


 

✅ 대칭키 방식 (Symmetric Key)

하나의 같은 키로 암호화 및 복호화를 수행하는 방식이다.

 

1️⃣ 대칭키 설정

encrypt:
  key: abcdefghijklmnopqrstuvwxyz123456789

bootstrap.yml 파일에 대칭키를 설정한다.

  • bootstrap.yml을 사용하려면 Spring Cloud Bootstrap 의존성이 필요하다.
  • bootstrap.yml은 application.yml보다 먼저 로드되기 때문에 편의를 위해 사용한다.

 

2️⃣ API를 이용한 암호화 및 복호화

암호화:

curl -X POST http://localhost:8888/encrypt -d 'mySecretPassword'

복호화:

curl -X POST http://localhost:8888/decrypt -d '{cipher}07ca0a7d65...'

3. 암호화된 값 적용

spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:mem:testdb
    username: sa
    password: '{cipher}07ca0a7d65ffb0f7cdb2327e929248f88ea3a86c056928a63af7ef7eee347007'
  • password 값은 {cipher}로 시작하며, Spring Cloud Config가 자동으로 복호화한다.
  • 복호화가 불가능한 경우 n/a로 표시된다.

 

✅ 비대칭키 방식 (Asymmetric Key)

🔐 Private Key로 암호화하고, 🔑 Public Key로 복호화하는 방식이다.

(혹은 반대로도 가능하지만 일반적으로 위 방식이 사용된다.)

 

1️⃣  키 생성

JDK의 keytool을 이용해 RSA 키를 생성한다.

keytool -genkeypair
-alias mykey
-keyalg RSA 
-keysize 2048
-validity 3650 
-keystore mykeystore.jks
-storepass mypassword
  • alias를 통해 특정 키를 호출할 수 있다.
  • validity 3650은 10년(3650일) 동안 유효한 키를 생성한다는 의미이다.

 

2️⃣ 비대칭키 설정

encrypt:
  key-store:
    location: classpath:/mykeystore.jks
    password: mypassword
    alias: mykey
bootstrap.yml에 비대칭키 설정을 추가한다.
 
 

3️⃣ 암호화 및 복호화 API 사용

암호화:

curl -X POST http://localhost:8888/encrypt -d 'mySecretPassword'

복호화:

curl -X POST http://localhost:8888/decrypt -d '{cipher}encryptedValue'

 


✅ Spring Cloud Config를 사용하는 경우

Spring Cloud Config를 이용하면 설정 파일을 서버에서 관리하며, 암호화된 값을 자동으로 복호화하여 반환할 수 있다.

 

HTTP GET 요청을 통한 설정 값 확인

curl -X GET http://localhost:8888/application/default

해당 http 요청의 return 값 확인

 
  • {cipher}가 붙어있으면 복호화된 값이 반환된다.
  • {cipher} 없이 요청하면 암호화된 상태 그대로 반환된다.

🔥 정리

  • 설정 파일에 비밀번호를 평문으로 저장하는 것은 위험하다.
  • 대칭키 방식은 설정이 간단하지만 키 관리가 중요하다.
  • 비대칭키 방식은 보안성이 높지만 설정이 복잡할 수 있다.
  • Spring Cloud Config를 사용하면 자동 복호화 기능을 활용할 수 있다.

'백엔드 Backend > 서버 Server' 카테고리의 다른 글

Spring Cloud Bus  (0) 2025.01.15
Spring Cloud Config 자동으로 반영하기 (feat. Acturator)  (0) 2025.01.14
Spring Cloud Config - 분산 시스템 설정 관리  (3) 2025.01.14
Eureka + Spring Cloud Gateway 구현하기  (0) 2025.01.07
API 게이트웨이 서비스 - (2) Spring Cloud Gateway  (0) 2025.01.06
  1. ✅ 대칭키 방식 (Symmetric Key)
  2. 3. 암호화된 값 적용
  3. ✅ 비대칭키 방식 (Asymmetric Key)
  4. ✅ Spring Cloud Config를 사용하는 경우
  5. 🔥 정리
'백엔드 Backend/서버 Server' 카테고리의 다른 글
  • Spring Cloud Bus
  • Spring Cloud Config 자동으로 반영하기 (feat. Acturator)
  • Spring Cloud Config - 분산 시스템 설정 관리
  • Eureka + Spring Cloud Gateway 구현하기
달래dallae
달래dallae
백엔드를 열심히 갈고 닦아서 광내봅시다 ~_~
달래dallae
머루랑달래랑
달래dallae
전체
오늘
어제
  • 분류 전체보기 (54)
    • 프로젝트 Project (14)
    • 백엔드 Backend (27)
      • 기본 개념 (13)
      • 서버 Server (9)
      • 스프링 Spring (1)
      • JPA (3)
    • 데이터베이스 Database (6)
      • MySQL (1)
      • Oracle (5)
    • 언어 Language (0)
      • 자바 Java (0)
      • 파이썬 Python (0)
    • 알고리즘 Algorithm (1)

블로그 메뉴

  • 홈
  • 글쓰기
hELLO · Designed By 정상우.v4.2.2
달래dallae
Spring Cloud Config - 정보 암호화
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.