kok202
Vault

2020. 2. 24. 14:00[정리] 기능별 개념 정리

Vault

HashCorp 에서 만든 오픈소스 프로젝트다.

깃허브 상에 존재하는 ID / Password 를 저장하는 방식은 보안적으로 취약하다.

따라서 이 정보를 vault 서버에 저장해놓는다.

어플리케이션 시작시 vault 서버에서 가져와 ID / Password를 사용한다.

높은 확장성, 더불어 Spring Vault 라고 오픈소스 프로젝트로 Vault 를 간단히 사용할 수 있는 모듈이 존재한다.

 

 

 

Secret

가장 간단하게 사용자가 요청한 값을 key-value 로 저장할 수 있는 데이터

secret/mydbs/mysql
username hello
password world
...
vault:
  uri: vault 도메인
  token: vault 토큰
  path:
    mysql: secret/mydbs/mysql
...
@Configuration
@Import(EnvironmentVaultConfiguration.class)
@VaultPropertySource(value = "${vault.path.mysql}", propertyNamePrefix = "spring.datasource.")
@Order(Ordered.HIGHEST_PRECEDENCE)
public class VaultConfig {
}

 

vault.path.mysql 이 가리키는 시크릿에 접근해서 key-value들을 가져온다.

해당 key 들 앞에 spring.datasource. 를 붙여서 설정 변수로 사용한다.

즉 해당 작업은 아래와 같은 설정변수를 application.yml 에 등록한 것과 같다.

spring.datasource.username = hello 

spring.datasource.password = world 

 

 

 

Transit

사용자가 개인정보를 올리는데 이런 정보를 MySQL 에 저장해야할 때가 있다.

그렇다면 당연히 개인정보를 암호화 해서 저장해야한다.

이 암호화에 사용되는 키는 어디다 저장할 것인가?

이럴 때 쓰는 게 Transit 이다.

 

Vault 에는 마스터키만 저장한다.

마스터키는 실제 데이터를 암호화, 복호화 하는 키는 데이터 키다.

실제 Transit 을 발급 받으면 데이터키를 암호화해서 제공한다.

 

어플리케이션에서의 동작

  1. 부트스트랩 단계에 암호화된 데이터 키를 복호화를 요청한다.
  2. Vault 는 마스터키로 복호화해서 데이터 키를 제공한다.

 

 

'[정리] 기능별 개념 정리' 카테고리의 다른 글

[2019.03.04] 오픈소스 서버 기술셋  (0) 2019.03.04