Vault 소개

Vault Certificate | Vault 소개
이민석's avatar
Jun 30, 2024
Vault 소개

많은 분들이 다양한 이유들로 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로는 다음의 기능들을 수행할 수 있습니다.

  1. 비밀과 민감성 정보들을 관리하고 보호한다.

  2. 사람과 기계 모두를 위한 단일 비밀 소스 제공한다.

  3. 비밀에 대한 완벽한 수명 주기 관리 제공

    1. 비밀 확산 제거

    2. 모든 비밀을 안전하게 저장

    3. 비밀 엑세스에 대한 거버넌스 제공

  • 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는 조직에서 민감하다고 생각하는 모든 항목을 포함합니다.
예를 들어, 다음과 같은 항목들이 대표적인 비밀에 포함됩니다.

  1. 유저네임 비밀번호

  2. 인증서

  3. API 키

  4. 암호화 키

  • 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)를 받을 겁니다.

  1. 키카드에는 유효기간이 존재합니다.

  2. 키카드로는 다양한 호텔 시설을 이용할 수 있습니다.

Token Generation

Interfaces → Authentication → Generate Token (with TTL)

다양한 인터페이스(e.g. CLI, API, UI)를 이용해서 Authentication을 시도할 것입니다.

  1. Username, Password

  2. RoleID & Secret ID

  3. TLS Certificates

  4. 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이 진행될 것입니다.

  1. Token is Valid

  2. Token is not Expired

  3. Token has Permission

이후 최종적으로 Vault는 인터페이스에 다음과 같은 응답을 보내게 될 것입니다.

  1. username: v_data_3j38d3

  2. 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를 사용하게 되면 다음과 같은 장점이 존재합니다.

  1. 수명이 긴 비밀 저장

  2. 요청 시, 동적으로 비밀 생성

  3. 모든 기능을 갖추고 있는 Vault API 지원

  4. Identity-based Accsss Control 사용 가능

  5. 서비스로서의 암호화 제공

  6. 루트 또는 중간 인증서 기관으로 활동

  1. Store Long-Lived, static secrets

  2. Dynamically generate secrets, upon request

  3. Fully-featured api

  4. Identity-based access control difference clouds and systems

  5. Provide encryption as a Service

  6. Act as a Root or Intermediate Certificate Authority

Vault 사용 사례

Vault는 다음과 같은 순간에서 사용할 수 있습니다.

  1. 비밀 저장소 중앙 집중화

  2. 동적으로 생성된 비밀로 마이그레이션하기

  3. 암호화 작업을 위한 중앙 집중식 워크플로우로 데이터 보호

  4. X.509 인승서 생성 자동화

  5. ID 기반 엑세스로 마이그레이션

  1. Centralize the storage of secrets

  2. Migrate to dynamically generated secrets

  3. Secure data with a centralized workflow for encryption operations

  4. Automate the generation of X.509 Certificates

  5. Migrate to Identity-Based Access

물론 각종 대체재들이 존재하고 있습니다.

종목

장점

대체재

비밀 저장소 중앙 집중화
Centrialize the storage of secrets

각종 플랫폼으로 확장성 있는 비밀 관리 가능

Chef databags,
Jenkins Credentials,
AWS Secrets Manager,
Azure Key Vault

동적 비밀
Dynamic Secrets

더 짧은 수명 주기
최소 권한 원칙을 팔로우
대여(lease) 구조에 의한 자동 제거
각 시스템 별 고유한 비밀 사용
프로그래밍 기법으로 사용 가능
휴먼 인터렉션 없음

None

암호화
Ecnrpytion

각종 환경에서 높은 수준의 암호화 제공

  • 환경
    (e.g. Database, Key Management, Cloud Service, File System)

  • 엔진
    (e.g. Trsnsit, KMIP, Key Mgmt, Trnasform)

자동 X.509 인증서
Auto X.509 Ceritifcate

[AS-IS]

  1. Generate a CSR

  2. Enter ticket for cert creation

  3. Submit CSR to signing CA

  4. Retrieve the certificate & key

  5. Certificate is returned (ticket closed)

  6. Engineer uploads certificate and private key

  7. Renewal follows the same process

[TO-BE]

  1. Certificate Request

  2. Certificate & Key Returned

Vault Version 비교하기

각 릴리즈 별로 미포함 항목은 다음과 같습니다.

  1. OpenSource 버전

    1. MFA, HSM, 자동 백업

    2. 제한된 확장성

    3. 복제 없음

  2. Enterprise 버전

    1. HahisCorp 공용 관리 없음

    2. 대부분의 기능(MFA, HSM, 자동 백업, 복제) 제공

  3. Vault on HCP

    1. 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 &
Seal Wrap

Dev or Prod Options

Share article

Unchaptered