Spring Cloud Config 서비스와 Vault 연동을 통한 보안 설정 관리 및 UI 활용
2025. 3. 9. 11:25ㆍSpring Microservice
🔐 Spring Cloud Config와 HashiCorp Vault 연동하기
🌟 개요
Spring Cloud Config Server는 다양한 백엔드 저장소를 사용할 수 있습니다. 그중에서도 민감한 정보를 안전하게 관리할 수 있는 HashiCorp Vault와의 연동 방법을 알아봅니다.
📌 HashiCorp Vault란?
Vault는 암호, 인증서, API 키 등 접근을 제한해야 하는 민감한 정보(secrets)를 안전하게 저장하고 관리하는 도구입니다.
🐳 Docker를 사용한 Vault 설치
로컬 환경에서 Vault를 빠르게 테스트하기 위해 Docker를 사용합니다.
docker run -d -p 8200:8200 --name vault \
-e 'VAULT_DEV_ROOT_TOKEN_ID=myroot' \
-e 'VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200' \
vault
🔍 Docker 파라미터 설명
VAULT_DEV_ROOT_TOKEN_ID
: Vault 초기 루트 토큰 설정VAULT_DEV_LISTEN_ADDRESS
: Vault 서버의 IP와 포트 설정 (기본 0.0.0.0:8200)
🖥️ Vault UI를 통한 Secret 관리
Vault는 편리한 웹 UI를 제공합니다.
🔐 Vault UI 로그인
브라우저에서 다음 주소로 접속합니다.
http://0.0.0.0:8200/ui/vault/auth
- 로그인 토큰: Docker 실행 시 설정한
myroot
를 입력합니다.
✨ Secret Engine 생성
- Secrets 탭 → Enable new engine 클릭
- Engine 유형으로 KV (Key-Value) 선택
- Path에 애플리케이션 이름을 입력 (예:
licensing-service
)
🔖 Secret 추가
- 생성된 Secret Engine에서 Create secret 클릭
- Secret의 경로(path)는 스프링 프로파일명(default 등)을 입력합니다.
- 원하는 키-값 쌍을 입력하고 저장합니다. (예:
license.vault.property
=Welcome to Vault
)
⚙️ Spring Cloud Config Server 설정
bootstrap.yml
에 Vault 프로파일 설정을 추가합니다.
spring:
application:
name: config-server
profiles:
active: vault
cloud:
config:
server:
vault:
host: 127.0.0.1
port: 8200
kvVersion: 2
server:
port: 8071
📌 주요 설정 설명
- spring.profiles.active: 활성화할 프로파일을 설정합니다. 여기서는 vault 프로파일을 활성화했습니다.
- spring.cloud.config.server.vault.host: Vault 서버의 호스트 주소를 설정합니다 (디폴트값: localhost 또는 127.0.0.1).
- spring.cloud.config.server.vault.port: Vault 서버가 사용하는 포트를 설정합니다 (디폴트값: 8200).
- spring.cloud.config.server.vault.kvVersion: 사용하는 KV Secrets Engine의 버전을 설정합니다. Vault 0.10.0 이상에서는 성능 및 보안 측면에서 버전 2를 사용하는 것이 권장됩니다.
- server.port: Spring Cloud Config 서버가 사용하는 HTTP 포트를 설정합니다. 여기서는 8071로 설정했습니다.
🚩 Vault 연동 테스트
다음 명령으로 Config Server의 연동 여부를 테스트합니다.
curl -X GET "http://localhost:8071/licensing-service/default" -H "X-Config-Token: myroot"
✅ 정상 응답 예시:
{
"name": "licensing-service",
"profiles": ["default"],
"label": null,
"version": null,
"state": null,
"propertySources": [
{
"name": "vault:licensing-service",
"source": {
"license.vault.property": "Welcome to Vault"
}
}
]
}
이제 Spring Cloud Config와 Vault를 통해 민감한 설정을 안전하게 관리할 수 있습니다! 🚀🔑
'Spring Microservice' 카테고리의 다른 글
@ConfigurationProperties를 통한 속성 직접 읽기, Spring Cloud Config 서버를 이용한 속성 새로 고침 및 Git 연동 활용 (0) | 2025.03.09 |
---|---|
Spring Cloud Config 서버를 이용한 Data Source 설정 (1) | 2025.03.07 |
Spring Cloud Config 서비스와 라이선싱 서비스 연동 설정 (0) | 2025.03.07 |
Setting up the configuration files for a service (0) | 2025.03.04 |
Spring Cloud Config Server bootstrap 클래스 설정 및 파일 시스템 저장소 구성 (1) | 2025.03.04 |