你知道Vault 嗎?

身為DevOps工程師
4 min readJun 4, 2023

--

Photo by Michael Dziedzic on Unsplash

前陣子研究了一下Vault,研究期間也寫了些筆記。部落格也好久沒更新了,今天把Vault的筆記稍微整理下,過陣子看有沒有機會再去寫一篇跟Vault跟Kubernetes的integration tutorial。

Vault能夠提供集中化的Secret管理,可以預防今天某部門的Secret洩露後,就全部都被洩漏的情況。

目前提供以下使用方式

  • CLI
  • API
  • UI

為什麼要用Vault

  • Dynamic Credential
  • 存活時間短
  • 如果四小時內,沒有任何App去取得。這個Credential就會失效
  • 自動更新Credential
  • 使用程式取得(減少Hardcode)

如果使用傳統的方式來管理,在以下情況時會不方便

  • 員工離職
  • 安全性較高的公司,需要頻繁的更換密碼

Installing Vault

可以在多種平台上安裝看看 Vault

  • Kubernetes
  • VM(Cloud and on-premise)
  • Physical Machines
  • Laptop

支援的作業系統

  • Linux
  • Windows
  • macOS
  • FreeBSD
  • NetBSD
  • OpenBSD
  • Solaris

可以直接從官網取得最新資訊 https://developer.hashicorp/vault/downloads

Vault Components

Vault中存在了多種的Components,每一種Components都負責不同的工作。

Storage Backends

每一種Storage吃不同的Parameters,所有被存取下來的資料一定都經過加,如果要使用HA,就必須要Storage Backend也支援HA。

支援清單

  • Raft
  • Filesystem
  • In-Memory
  • Consul

Secrets Engines

  • Store data
  • Generate data
  • Encrypt data

Authentication Methods

支援多種方式。有些較適合機器對機器

  • Token
  • Kubernetes
  • TLS
  • AppRole

有些不好記憶,比較適合給人使用。

  • OIDC
  • Username
  • GitHub
  • Okta

負責分配identity與policies給使用者

  • Identity: 回傳Token給使用者
  • Policies: 決定使用者擁有哪些權限,可以選擇的權限有
  1. create
  2. read
  3. update
  4. patch
  5. delete
  6. list

Audit Devices

  • 紀錄所有的requests與responses
  • 使用json格式
  • 無法從Audit log中看到敏感資訊(會被hash過)

動手裝看看

Vault有支援Helm的方式來安裝,以下範例直接使用Helm來快速安裝。

新增vault repo

$ helm repo add hashicorp <https://helm.releases.hashicorp.com>
$ helm update

新增vaules.yaml

其他有支援的相關參數可以參考官網的資訊https://developer.hashicorp.com/vault/docs/platform/k8s/helm/configuration

server:
dev:
enabled: true

安裝vault

$ helm install vault hashicorp/vault -f values.yaml

確認安裝完成

$ kubectl get po
NAME READY STATUS RESTARTS AGE
vault-0 1/1 Running 0 13m
vault-agent-injector-67b7867999-vj8xm 1/1 Running 0 13m

Service Port-forward

使用kubectl開啟Web UI來試試

# 讓本機的 8787 port可以連到 service/vault 的 8200 port
$ kubectl port-forward svc/vault 8787:8200

安裝成功應該可以看到以下畫面

此時選擇token登入,登入成功後就可以開始操作Vault囉!

  • 登入token: root

--

--

身為DevOps工程師

目前在蓋亞資訊擔任DevOps Consultant。最近才從後端的世界轉成投向DevOps的懷抱,目前專注在Kubernetes, GitLab, DevSecOps的學習中。