MSA

[MSA] Spring Cloud Config와 Vault로 설정 통합 관리

인생아 2025. 7. 23. 22:46
반응형

마이크로서비스 아키텍처(MSA)는 서비스가 많아질수록 설정(Configuration)의 복잡도와 보안 위험이 급격히 증가한다.
각 서비스의 application.yml 파일이 중복되고, 데이터베이스 정보나 API 키 같은 민감한 정보가 소스코드에 포함되는 상황도 발생한다.
이 문제를 해결하기 위해 등장한 도구가 바로 Spring Cloud ConfigVault이다.
이 두 가지를 결합하면 설정은 중앙에서 관리하고, 민감 정보는 안전하게 분리하여 운영할 수 있다.

✅ 왜 설정 중앙화가 필요한가?

MSA 환경에서는 서비스가 수십 개 이상으로 분리된다.
각 서비스의 설정 파일이 개별적으로 존재할 경우 다음과 같은 문제가 발생한다.

  • 설정 값 변경 시 모든 서비스 재배포 필요
  • 환경별(dev, staging, prod) 설정 파일 유지가 어려움
  • 운영 중 민감 정보 노출 위험 증가
  • 설정 누락 또는 오타로 인한 장애 발생

이를 방지하려면 설정을 Git 또는 Vault에 중앙 집중화하고, 각 서비스는 부팅 시점에 해당 설정을 동적으로 가져오는 구조로 구성해야 한다.

반응형

🌐 Spring Cloud Config란?

Spring Cloud Config는 Git 또는 파일 시스템에 저장된 설정 값을 외부 Config Server를 통해 서비스에 실시간으로 배포하는 구조이다.
기존 application.yml 대신 Config Server에서 중앙 관리되며, 각 서비스는 application-name.yml, application-dev.yml 등으로 설정을 로드한다.

🔧 아키텍처 구성

🛠️ Config Server 설정 예시 (.yml)

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/my-org/config-repo
          clone-on-start: true

🧩 클라이언트 서비스 설정 예시 (.yml)

spring:
  application:
    name: order-service
  cloud:
    config:
      uri: http://localhost:8888

해당 서비스는 order-service.yml 또는 application.yml을 중앙 저장소에서 자동으로 로드한다.

🔐 Vault란 무엇인가?

Vault는 HashiCorp에서 제공하는 비밀번호, API 키, DB 인증정보 등 민감 데이터를 안전하게 저장·관리하는 오픈소스 도구이다.
일반 설정과는 달리 시크릿(Secret) 관리는 별도로 해야 하며, Vault는 다음과 같은 장점을 제공한다.

  • 비밀 값 암호화 저장
  • 접근 권한 제어(Policy)
  • 토큰 기반 접근 인증
  • DB 동적 자격 증명 발급
  • 감사 로그 기록

Vault는 기본적으로 REST API를 통해 작동하며, Spring Boot와 연동 시 자동 설정이 가능하다.

반응형

🔗 Spring Cloud Config + Vault 통합 전략

보통은 Config Server로 일반 설정을, Vault로 민감한 시크릿을 분리 관리한다.
Spring Cloud Vault를 통해 Vault에 저장된 값을 Spring 환경변수로 주입할 수 있다.

🔧 예제 설정 (.yml)

spring:
  cloud:
    vault:
      uri: http://localhost:8200
      token: s.BjvxaD123abc456xyz
      kv:
        enabled: true
        backend: secret
        default-context: application

Vault 내의 /secret/application/db.password 값을 ${db.password} 형태로 사용할 수 있다.

🧠 실무 적용 시 고려사항

  • Config Server에 장애가 생기면 전체 서비스 설정 로딩 실패 가능성이 있음
    → 캐시 설정 또는 Fallback 전략 필요
  • Vault는 권한 제어 정책(Policy)을 꼼꼼히 설계해야 함
  • Config Server와 Vault 간 통신도 암호화 및 인증 처리 필요
  • 운영 환경에서는 Config Server와 Vault를 별도 서버로 격리하는 것이 안전

📈 장점 요약

항목 Spring Cloud Config Vault
주요 목적 일반 설정 중앙화 민감 정보 보호
데이터 저장소 Git, Local File Key-Value (암호화)
자동 갱신 가능 (@RefreshScope) Spring Vault 지원
인증 방식 없음 또는 Git 인증 Token, AppRole 등
Spring 통합 매우 뛰어남 전용 Starter 존재

✅ 결론

MSA 환경에서 설정을 관리하지 않으면 장애는 필연적이다.
Spring Cloud Config는 설정의 일관성과 운영 편의성을 제공하고,
Vault는 민감 정보의 보안성을 보장한다.
두 도구를 적절히 조합하면 확장성과 보안성을 모두 갖춘 MSA 인프라 구성이 가능하다.

📌 참고한 공식 문서

 

반응형