민감한 정보는 저 깊은 곳으로 Vault by HashiCorp

2022년 11월 17일

#infra

오늘 새롭게 알게 된 기술은 Vault by HashiCorp 인데요.

요즘 ‘좀 더 안전한 개발 방식’을 고민하고 있는 저에게 매우 흥미롭게 다가온 기술입니다.

공식 문서는 https://www.vaultproject.io/ 요기!

사전적 의미로 살펴보는 Vault

Vault 의 사전적 의미를 우선 살펴보면 금고보다 훨씬 큰 지하실 금고방! (영화 속에 볼 수 있는 대형 금고 방) 을 의미한다고 해요. 단어의 뜻만 살펴 봐도 뭔가 아무도 닿을 수 없는 깊숙한 곳에 우리의 소중한 정보를 저장해둘 수 있을 것 같다는 직감이 드는데요.

Vault by HashiCorp 또한 민감한 데이터를 보호하기 위해 토큰, 암호, 인증서, 암호화 키에 대한 액세스를 보호, 저장 및 엄격하게 제어하는 기술이에요!

언제 적용할 수 있을까요?

결론적으로 Vault는 비밀 정보 즉, 공개되면 안 되는 비밀번호, API 키, 토큰 등을 저장하고 관리하는 도구입니다. 개발을 하다보면 노출되어서는 안되는 데이터값들이 있어요. 예를 들면 DB의 계정명, 비밀번호, 비밀키 등… 이 있습니다.

사실 개인 프로젝트때는 이것들을 하드코딩해서 집어넣거나, 조금 신경쓰더라도 개인적인 config 파일로 관리하거나, 서버 환경에서 환경 변수를 활용하는 등 가볍게 관리를 하였어요. 하지만 이는 프로젝트의 규모가 커진다면? 관리 하기 어려워질 것이에요.

(예를 들어, 환경 변수가 각자의 local 에 저장되어 있는데 수정 사항이 생긴다면? 모든 프로젝트 참여자가 개인적으로 수정해야하는 상황…)

더불어 현업에서는 정보가 곧 자산이고, 최대한 사용자가 믿을 수 있는 안전한 서비스를 만드는 것이 개발자의 목표가 될 것이에요.

핵심 개념

  • TIP : Vault를 사용시, 기능을 확장할 수 있는데 이를 백엔드(Backend)라고 통칭해서 부른다고 합니다.

Storage Backend

Storage Backend는 Secret이 실제로 저장될 저장소입니다.

Vault의 정보(secret 등)를 저장하면 Vault가 이를 실제 저장소에 저장해야하는데요. Storage Backend는 Secret이 실제로 저장될 저장소입니다.

저장소는 Consul, DynamoDB, S3, Google Cloud Storage, Azure, MySQL, PostgreSQL 다양한 백엔드를 지원하고 있습니다.

Secret Backend

Secret Backend는 Secret 이 저장될 저장방식을 의미합니다.

다양한 저장방식을 지원하고 있는데, KV(key-value) 방식이 가장 간편하고 단순합니다.

Vault가 제공하는 KV 방식은 Object의 Key-Value의 개념과 같습니다.

Transit 은 암호화/복호화 기능을 제공하는 저장방식입니다.

Auth Backend

Auth Backend는 Vault에 저장된 Secret을 받아오기 위한 인증방식입니다.

대표적으로 Id/Password 를 통해 인증하는 방식이 존재합니다. LDAP이나 GitHub 등을 연결할 수 있습니다.

AppToken, AppRole 이라는 인증 방식이 있으며 해당 기능을 통해, client token 을 발급받고 vault 서버와 통신합니다. 이 토큰 인증 방식은 필요에 따라 사람이나 애플리케이션 등에서 사용하도록 만들 수 있습니다.

AppRole은 RoldeId/SecretId 를 통해 임시 Token 을 요청하고 임시 Token 으로 Secret 을 받아옵니다.


이번 기회에 민감한 데이터를 좀 더 안전하게 관리할 수 있는 방식에 대해 고민해볼 수 있었어요. 이번 기회에 Vault의 개념과 사용법에 대해 좀 더 공부해볼 것입니다 :D


Profile picture

주희(Joy)
가치를 고민하는 과정을 함께해요