Networking, Security, Protocols

Vault란?

Somaz 2022. 10. 11. 13:41
728x90
반응형

Overview

 

오늘은 Hashicorp Vault에 대해서 공부해보려고 한다.

 


Vault란?

HashiCorp Vault는 ID 기반 비밀 및 암호화 관리 시스템이다.  Secret은 API 암호화 키, 암호 및 인증서와 같이 액세스를 엄격하게 제어하려는 모든 것이다.

또한, Vault는 인증 및 권한 부여 방법으로 통제되는 암호화 서비스를 재공한다. 그리고 UI, CLI 또는 HTTP API를 사용하여 Secret 및 기타 민감한 데이터에 대한 액세스를 안전하게 저장 및 관리하고 엄격하게 제어하고 감사할 수 있다.

 

출처 : https://www.vaultproject.io/

 


 

Vault 작동원리

Vault는 주로 토큰과 함께 작동하며 토큰은 클라이언트의 정책과 연결된다.

각 정책은 경로 기반이며 정책 규칙은 각 클라이언트의 경로에 대한 작업과 액세스를 제한한다. 

Vault를 사용하면 토큰을 수동으로 생성하여 클라이언트에 할당하거나 클라이언트가 로그인하여 토큰을 얻을 수 있다.

아래 그림은 Vault의 핵심 워크플로를 보여준다.

핵심 Vault 워크플로는 다음 4단계로 구성된다.

  • 인증: Vault에서의 인증은 클라이언트가 Vault에서 자신이 누구인지 확인하는 데 사용하는 정보를 제공하는 프로세스이다. 클라이언트가 인증 방법에 대해 인증되면 토큰이 생성되어 정책에 연결된다.
  • 검증: Vault는 Github, LDAP, AppRole 등과 같은 신뢰할 수 있는 타사 소스에 대해 클라이언트를 검증한다.
  • Authorize : 클라이언트가 Vault 보안 정책과 일치하는지 확인한다. 이 정책은 클라이언트가 볼트 토큰으로 액세스할 수 있는 API 끝점을 정의하는 규칙 집합이다. 정책은 Vault의 특정 경로 및 작업에 대한 액세스 권한을 부여하거나 금지하는 선언적 방법을 제공한다.
  • 액세스 : Vault는 클라이언트의 ID와 관련된 정책을 기반으로 토큰을 발행하여 비밀, 키 및 암호화 기능에 대한 액세스 권한을 부여합니다. 그런 다음 클라이언트는 향후 작업을 위해 Vault 토큰을 사용할 수 있다.

Vault 주요기능

최근 대부분 기업에서는 조직 전체에 자격증명이 분산되어 있다.

Vault는 모든 자격 증명을 가져와 한 위치에 정의하도록 중앙 집중화하여 자격 증명에 대한 원치 않는 노출을 줄인다.

Vault의 주요 기능은 다음과 같다.

  • Secure Secret Storage : Vault에 임의의 키/값 비밀을 저장할 수 있다. Vault는 이러한 비밀을 영구 저장소에 쓰기 전에 암호화하므로 원시 저장소에 대한 액세스 권한을 얻는 것만으로는 비밀에 액세스할 수 없다. Vault는 디스크, 영사 등에 쓸 수 있다.
  • 동적 비밀 : Vault는 AWS 또는 SQL 데이터베이스와 같은 일부 시스템에 대해 온디맨드로 비밀을 생성할 수 있다. 예를 들어 애플리케이션이 S3 버킷에 액세스해야 하는 경우 Vault에 자격 증명을 요청하고 Vault는 요청 시 유효한 권한이 있는 AWS 키 쌍을 생성한다. 이러한 동적 비밀을 생성한 후 Vault는 임대 기간이 만료된 후에도 자동으로 해당 비밀을 취소한다.
  • 데이터 암호화 : Vault는 데이터를 저장하지 않고 암호화 및 복호화할 수 있다. 이를 통해 보안 팀은 암호화 매개변수를 정의하고 개발자는 자체 암호화 방법을 설계하지 않고도 SQL 데이터베이스와 같은 위치에 암호화된 데이터를 저장할 수 있다.
  • 임대 및 갱신 : Vault의 모든 비밀에는 관련 임대 가 있다. 임대 기간이 끝나면 Vault는 해당 비밀을 자동으로 취소한다. 클라이언트는 내장된 갱신 API를 통해 임대를 갱신할 수 있다.
  • 해지 : Vault에는 비밀 해지 지원 기능이 내장되어 있다. Vault는 단일 비밀뿐만 아니라 특정 사용자가 읽은 모든 비밀 또는 특정 유형의 모든 비밀과 같은 비밀 트리를 취소할 수 있다. 해지 기능은 키 롤링과 침입 시 시스템 잠금을 지원한다.

Vault 아키텍처

vault 아키텍처

 

초기화 단계(Initialization Phase)

클라이언트는 Vault 초기화 요청을 보낸다. 이는 Vault 서버의 /v1/sys/init 엔드포인트에 대한 POST 요청을 통해 수행된다
Vault 서버는 초기화 시 마스터 키와 초기 토큰을 스토리지 백엔드에 저장한다. 이는 잠금 해제 프로세스와 Vault에 대한 초기 액세스에 중요하다.
스토리지 백엔드는 이러한 키와 토큰의 저장을 승인한다.
Vault 서버는 잠금 해제 키와 초기 루트 토큰을 클라이언트에 반환한다. 이 잠금 해제 키는 다음 단계에서 Vault를 잠금 해제하는 데 사용된다.

 

봉인 해제 단계(Unseal Phase)

Vault는 처음에는 잠긴 상태이므로 잠금 해제 키를 사용해 잠금을 해제해야 한다.
클라이언트는 Vault 서버에 잠금 해제 요청(/v1/sys/unseal에 대한 POST 요청)을 반복적으로 보낸다.
Vault 서버는 각 개봉 키를 확인한다.
충분한 양의 올바른 잠금 해제 키가 제공되면 Vault가 잠금 해제되어 작동하게 된다.

 

작동 단계(Operational Phase)

 

Vault의 잠금이 해제되면 클라이언트는 로그인할 수 있다. 이는 적절한 자격 증명(토큰, 사용자 이름 및 비밀번호 등)이 포함된 로그인 요청을 Vault 서버로 전송하여 수행된다. 정확한 로그인 엔드포인트는 사용된 인증 방법(/v1/auth/{method}/login)에 따라 다릅니다.
Vault 서버는 스토리지 백엔드를 통해 이러한 자격 증명의 유효성을 검사한다.
검증에 성공하면 Vault 서버는 세션 토큰을 생성하여 클라이언트에 반환한다.
그런 다음 클라이언트는 이 토큰을 사용하여 Vault에서 비밀을 요청할 수 있습니다. 예를 들어 /v1/secret/data/{name}에 대한 GET 요청은 저장된 비밀을 검색한다.
Vault 서버는 저장소 백엔드에서 요청된 비밀을 검색하여 클라이언트에 반환한다.

 


 

마무리

다음시간에는 vault 설치와 사용법에 대해서 공부해보겠다.

2024.01.24 - [Networking, Security, Protocols] - Vault 설치와 사용법

 

Vault 설치와 사용법

Overview 지난시간에 이어서 Vault 설치와 사용법에 대해서 알아보려고 한다. kind를 사용해서 K8S Cluster 구성후 배포해볼 예정이다. 2022.10.11 - [Networking, Security, Protocols] - Vault란? Vault란? Overview 오늘은

somaz.tistory.com


Reference

https://www.vaultproject.io/

 

728x90
반응형

'Networking, Security, Protocols' 카테고리의 다른 글

SSID(Service Set Identifier)란?  (0) 2023.04.05
CDN이란?  (2) 2022.11.11
AS, BGP(Border Gateway Protocol)란?  (0) 2022.09.19
Mail Server  (0) 2022.02.17
HTTPS  (0) 2022.02.11