오늘 새롭게 알게 된 기술은 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