많은 분들이 다양한 이유들로 AWS 환경에서 SSM Parameter Store와 Secret Manager를 사용해서 다양한 환경변수를 관리하고 있습니다. 하지만 AWS 외에 GCP, Azure, NCP, OnPremise까지 다양한 환경에서는 어떻게 환경 변수를 관리할 수 있을까요?
그리고 각종 환경 변수들의 다양한 암호화를 어떻게 보장할 수 있을까요?
HashiCorp 사의 Key Management Solution인 Vault라는 도구를 자세하게 공부하며, 동시에 Vault Certificate를 취득하기 위해서 작성된 시리즈 문서입니디.
간단한 소개
HashiCorp 사에서는 8개의 도구를 제공하고 있습니다.
Name | Keyword | Description |
---|---|---|
Terraform | 인프라 코드, 프로비저닝 | 클라우드 서비스와 서버 자원을 선언적으로 정의하고 프로비저닝하는 도구 |
Vault | 비밀 관리, 암호화 | 비밀을 안전하게 저장하고 접근 제어를 통해 인증과 권한을 관리하는 도구 |
Consul | 서비스 디스커버리, 설정 관리 | 분산 시스템에서 서비스 간의 통신을 쉽게 관리하고 모니터링하는 도구 |
Nomad | 컨테이너 오케스트레이션, 작업 관리 | 다양한 작업을 클러스터 환경에서 배포하고 관리하는 도구 |
Boundary | 보안 경계 관리, 원격 접근 | 안전한 원격 접근을 제공하고 권한을 세분화하여 자원 접근을 제어하는 도구 |
Packer | 이미지 생성 플랫폼 | 동일한 환경을 다양한 플랫폼에 맞게 이미지를 생성하고 배포하는 도구 |
Vagrant | 가상 환경 설정 | 개발 환경을 쉽게 설정하고 관리하는 도구 |
Waypoint | 어플리케이션 배포 | 코드에서 프로덕션까지의 워크플로우를 간소화하는 도구 |
Vault란?
Vault는 Business Source License 1.1로 배포된 오픈 소스 환경변수 솔루션입니다. Vault로는 다음의 기능들을 수행할 수 있습니다.
비밀과 민감성 정보들을 관리하고 보호한다.
사람과 기계 모두를 위한 단일 비밀 소스 제공한다.
비밀에 대한 완벽한 수명 주기 관리 제공
비밀 확산 제거
모든 비밀을 안전하게 저장
비밀 엑세스에 대한 거버넌스 제공
Manage Secrets and Protect Sensitive Data
Provides a Single Source of Secrets for both Humans and Machines
Provides Complete Lifecycle Management for Secrets
Eliminates secret sprawl
Securely store any secrets
Provide governance for access to secrets
Secrets란?
Secrets는 조직에서 민감하다고 생각하는 모든 항목을 포함합니다.
예를 들어, 다음과 같은 항목들이 대표적인 비밀에 포함됩니다.
유저네임 비밀번호
인증서
API 키
암호화 키
Anything your organization deems sensitive:
Usernames and passowrds
Certificates
API Keys
Encryption Keys
Vault 작동 방식
Vault는 다양한 대상을 위해서 여러 인터페이스를 제공합니다.
Type | Purpose for |
---|---|
CLI | Human, Machine |
API | Machine |
UI | Human |
Vault Authentication
일반적으로 호텔 프론트를 통해서 방에 들어가는 과정을 생각하면 쉽습니다.
사람들은 호텔 프론트에서 신분증(ID)을 제출하고 이를 이용해서 접근 권한을 가진 키카드(Cards)를 받을 겁니다.
키카드에는 유효기간이 존재합니다.
키카드로는 다양한 호텔 시설을 이용할 수 있습니다.
Token Generation
Interfaces → Authentication → Generate Token (with TTL)
다양한 인터페이스(e.g. CLI, API, UI)를 이용해서 Authentication을 시도할 것입니다.
Username, Password
RoleID & Secret ID
TLS Certificates
Integrated Cloud Creds
Authentication이 성공하면 Generate Token을 통해서 Vault Path(s)를 제공받을 것입니다. 이 Paths는 Read/Write/Delete/List 작업이 가능하며, 동시에 N 기간 만큼의 TTL을 가질 것입니다.
Token Usage
Interfaces → Retrieve Data from a Path(kv/apps/secret) → Vault
Vault → Return Requested Data → Interfaces
다양한 인터페이스를 이용해서 Token Usage를 시도하게 됩니다.
이 과정에서 다음과 같이 Token Validation이 진행될 것입니다.
Token is Valid
Token is not Expired
Token has Permission
이후 최종적으로 Vault는 인터페이스에 다음과 같은 응답을 보내게 될 것입니다.
username: v_data_3j38d3
password: 409fls2094()kj20d
Vault 선택의 이유
위에서는 SSM Parameter Store, Secrets Manager와 Vault를 비교했습니다.
하지만 엄연히 따지면 Active Directory, AWS IAM, Azure AD, GCP IAM이 더 적합한 비교입니다.
비즈니스 목적에 따라서 멀티 클라우드 & 하이브리드 클라우드 환경으로 가게 되면, 다양한 Identity Provider들을 혼합해서 사용해야 합니다. 이는 다양한 관리 포인트의 증가로 이어지게 됩니다.
하지만 Vault를 사용하면 이런 환경에서도 단일 비밀 소스(Single Secret Source)로서 작동할 수 있습니다.
구체적인 Vault 이점
Vault를 사용하게 되면 다음과 같은 장점이 존재합니다.
수명이 긴 비밀 저장
요청 시, 동적으로 비밀 생성
모든 기능을 갖추고 있는 Vault API 지원
Identity-based Accsss Control 사용 가능
서비스로서의 암호화 제공
루트 또는 중간 인증서 기관으로 활동
Store Long-Lived, static secrets
Dynamically generate secrets, upon request
Fully-featured api
Identity-based access control difference clouds and systems
Provide encryption as a Service
Act as a Root or Intermediate Certificate Authority
Vault 사용 사례
Vault는 다음과 같은 순간에서 사용할 수 있습니다.
비밀 저장소 중앙 집중화
동적으로 생성된 비밀로 마이그레이션하기
암호화 작업을 위한 중앙 집중식 워크플로우로 데이터 보호
X.509 인승서 생성 자동화
ID 기반 엑세스로 마이그레이션
Centralize the storage of secrets
Migrate to dynamically generated secrets
Secure data with a centralized workflow for encryption operations
Automate the generation of X.509 Certificates
Migrate to Identity-Based Access
물론 각종 대체재들이 존재하고 있습니다.
종목 | 장점 | 대체재 |
---|---|---|
비밀 저장소 중앙 집중화 | 각종 플랫폼으로 확장성 있는 비밀 관리 가능 | Chef databags, |
동적 비밀 | 더 짧은 수명 주기 | None |
암호화 | 각종 환경에서 높은 수준의 암호화 제공
| |
자동 X.509 인증서 | [AS-IS]
[TO-BE]
|
Vault Version 비교하기
각 릴리즈 별로 미포함 항목은 다음과 같습니다.
OpenSource 버전
MFA, HSM, 자동 백업
제한된 확장성
복제 없음
Enterprise 버전
HahisCorp 공용 관리 없음
대부분의 기능(MFA, HSM, 자동 백업, 복제) 제공
Vault on HCP
Peering Connection을 이용해서 다양한 Vault Client에서 사용 가능
OpenSource | Enterprise | Vault on HCP |
---|---|---|
Self Hosted and Managed | Self Hosted and Managed | HashiCorp Hosted & Managed |
Dynamic Secerets | Disaster Recovery | Hosted by HashiCorp |
ACL Templates | Namespaces | Fully Managed Solution |
Init & Unseal Workflows | Replication | Reduce Admin Burden |
Vault Agent | Read Replications | Scalable |
Key Rolling | HSM Auto-Unseal | Push Button Deployment |
Access Control Policies | MFA | Pay by the Hour |
Encryption as a Service | Sentinel | All Enterprise Features |
AWS, Azure & GCP Auto Unseal | FIPS 140-2 & | Dev or Prod Options |