Starting Vault Server
安裝完畢後,可以啟動 Vault server 來玩了!
使用以下指令,即可啟動 Vault server:
$ vault server -dev
==> Vault server configuration:
Api Address: http://127.0.0.1:8200
Cgo: disabled
Cluster Address: https://127.0.0.1:8201
Listener 1: tcp (addr: "127.0.0.1:8200", cluster address: "127.0.0.1:8201", max_request_duration: "1m30s", max_request_size: "33554432", tls: "disabled")
Log Level: info
Mlock: supported: true, enabled: false
Recovery Mode: false
Storage: inmem
Version: Vault v1.3.2
WARNING! dev mode is enabled! In this mode, Vault runs entirely in-memory
and starts unsealed with a single unseal key. The root token is already
authenticated to the CLI, so you can immediately begin using Vault.
You may need to set the following environment variable:
$ export VAULT_ADDR='http://127.0.0.1:8200'
The unseal key and root token are displayed below in case you want to
seal/unseal the Vault or re-authenticate.
Unseal Key: LLuGlaFVgmqnt40ubuseHYvNvJFalLnbO12q4gBkeAA=
Root Token: s.lazjRdaqKjDNUMUTgmwponKe
Development mode should NOT be used in production installations!
==> Vault server started! Log data will stream in below:
Warning! 以上為 dev server ,不適合用在生產環境上!
dev mode server 有以下幾個特性:
- 資料存在
記憶體
,只要每次重開,資料就會不見。 - 服務會在開在
localhost:8200
上並且沒有進行 https 加密(without TLS)
。 自動 unseal
,且只有一把unseal key
。- vault 有兩種狀態:
seal
: seal 狀態的 vault,沒辦法進行大部份的操作,就連讀取資料也不行。unseal
:解封狀態的 vault,才可以進行各項操作唷!
- vault 有兩種狀態:
- 自動建立路徑為
secret/
的 KV secrets engine。 - 自動身份驗證。
為了方便,我們就先啟用 dev mode server 吧!
在啟動完畢後,還要先做幾件事才能連讓 vault client(CLI) 連上 vault server !
- 打開 terminal,輸入以下指令:
$ export VAULT_ADDR='http://127.0.0.1:8200' # 如果沒有 VAULT_ADDR 這個環境變數的話,預設為 https://127.0.0.1:8200
- 把 Unseal Key 記錄下來。
- 把 Root Token 記錄下來,並設為環境變數
VAULT_DEV_ROOT_TOKEN_ID
。$ export VAULT_DEV_ROOT_TOKEN_ID="s.lazjRdaqKjDNUMUTgmwponKe"
第二第三點,是避免沒存到,之後要使用的時候忘了,造成不能使用,但其實如果只是做LAB,再重開一次就好了XD。
驗證 vault server 有正常啟動!
執行 vault status
這個指令,如果成功的話,應該會有下面的畫面:
$ vault status
Key Value
--- -----
Seal Type shamir
Initialized true
Sealed false
Total Shares 1
Threshold 1
Version 1.3.2
Cluster Name vault-cluster-d871077f
Cluster ID fb0e5b60-bef0-bff9-295d-146f19af2dc7
HA Enabled false
接下來就可以跟 vault server 進行互動啦!
Seal and Unseal
在介紹操作之前我們先來了解一下,先前提到的 Seal
以及 Unseal
。
當 Vault server 開機的時候,一開始會是 sealed
(封鎖) 狀態。
server 知道資料存放的地方,也知道怎麼存取,但不知道怎麼解密,所以在 sealed
狀態下的 vault server ,沒辦法進行進一步的操作。
WHY?
Vault 存放資料時會使用 encryption key 針對資料進行加密,而讀取資料的時候,也需要這一把鑰匙,才能進行解密。
而 encryption key 會跟著要存放的資料一起儲存,但在存放 encryption key 的時候,會使用另一把稱為 master key 的鑰匙去進行加解密。
vault server 啟動時, vault server 是sealed
(封鎖)狀態的,為了要讓 vault server 能夠針對資料加解密。
我們需要先提供 master key 給 vault server,讓 vault server 給能針對 encryption key 加解密,才能再針對資料做處理。
那要怎麼提供 master key 呢? vault server 預設使用了 Shamir 演算法 把 master key 拆解成數個 Unseal Key
,如下圖。
圖片來源:https://www.vaultproject.io/docs/internals/architecture/
將Unseal Key
提供給 vault server 後,即可重組成 master key,同時 vault server 也進入 Unseal
狀態,此時就讀取設定檔以及存放的資料。
進入 Unseal
狀態的 vault server,要進一步的進行操作的話,就要提供身份驗證
啦!
以上的 Unseal
以及 身份驗證
在 dev mode server 都會自動完成,我們只要專注在操作即可!
下一篇我們就會開始把玩啦!