Vault 란?
hashicorp vault는 ID 기반의 비밀 및 암호화 관리 시스템 Vault는 인증 및 권한 부여 방식을 통해 암호화 서비스를 제공하여 비밀에 대한 안전하고, 감사 가능하며, 제한된 엑세스를 보장한다. 토큰, api키, 비밀번호, 암호화키, 인증서와 같은 것들을 통제 관리한다.
작동 방식
Authenticate: Vault에서 인증(Authentication)은 클라이언트가 자신이 주장하는 본인임을 Vault가 확인할 수 있도록 정보를 제공하는 과정입니다. 클라이언트가 인증 방법(auth method)을 통해 인증을 받으면, 토큰이 생성되고 해당 토큰은 특정 정책(policy)과 연결됩니다.
validate: Vault는 GitHub, LDAP, AppRole 등과 같은 신뢰할 수 있는 서드파티 소스를 통해 클라이언트를 검증한다
authorize: 클라이언트는 Vault 보안 정책에 따라 매칭됩니다. 이 정책은 클라이언트가 Vault 토큰으로 접근할 수 있는 API 엔드포인트를 정의하는 규칙 집합입니다. 정책은 Vault에서 특정 경로와 작업에 대한 접근을 허용하거나 금지하는 선언적인 방법을 제공합니다.
Access: Vault는 클라이언트의 신원에 연결된 정책을 기반으로 토큰을 발급하여 비밀 정보, 키, 암호화 기능에 대한 접근 권한을 제공합니다. 클라이언트는 발급받은 Vault 토큰을 사용하여 이후의 작업을 수행할 수 있습니다.
Vault 실행
https://developer.hashicorp.com/vault/install?product_intent=vault
Install | Vault | HashiCorp Developer
Explore Vault product documentation, tutorials, and examples.
developer.hashicorp.com
에서 설치
vault -server dev
vault 실행
http://127.0.0.1:8200 으로 접속
toekn으로 로그인을 하고 secret에서 key 와 value 값 삽입
Spring boot 와 연동하기
vault 를 Springboot 에 연동하기
트러블 슛팅 :
build.gradle 에서 springcolud 을 사용하려면 querydsl 버전을 명시해줘야 에러가 안난다.
spring boot 버전이 3.2.5 라 springcolud 와 버전 호완이 안되 3.4.0 으로 변경
ext {
set('springCloudVersion', "2024.0.0")
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-vault-config'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
Application.yml 파일
spring:
application.name: board
cloud.vault:
scheme: http
authentication: TOKEN
token: 아까 발급 받은 토큰 값-> Root 토큰 값이 있다
config.import: vault://
이로써 vault 를 사용 하여 민감 정보들을 안전하게 관리하는 방법을 알게 되었다.
'페스트캠퍼스 프로젝트' 카테고리의 다른 글
[어드민] 데이터베이스 접근 로직 (0) | 2025.01.08 |
---|---|
[어드민] 도메인 설계 (0) | 2025.01.06 |
[어드민] 어드민 프로젝트 환경 셋팅 (0) | 2025.01.02 |
보안 기능 고도화 - 환경 변수의 사용 (2) | 2024.12.22 |