Vault是用來安全的獲取秘密信息的工具,它可以保存密碼、API密鑰、證書等信息。Vault提供了一個統一的接口來訪問秘密信息,其具有健壯的訪問控制機制和豐富的事件日志。
對關鍵信息的授權訪問是一個困難的問題,尤其是當有許多用戶角色,並且用戶請求不同的關鍵信息時,例如用不同權限登錄數據庫的登錄配置,用於外部服 務的API密鑰,SOA通信的證書等。當保密信息由不同的平台進行管理,並使用一些自定義的配置時,情況變得更糟,因此,安全的存儲、管理審計日志幾乎是 不可能的。但Vault為這種復雜情況提供了一個解決方案。
數據加密:Vault能夠在不存儲數據的情況下對數據進行加密、解密。開發者們便可以存儲加密後的數據而無需開發自己的加密技術,Vault還允許安全團隊自定義安全參數。
安全密碼存儲:Vault在將秘密信息(API密鑰、密碼、證書)存儲到持久化存儲之前對數據進行加密。因此,如果有人偶爾拿到了存儲的數據,這也沒有任何意義,除非加密後的信息能被解密。
動態密碼:Vault可以隨時為AWS、SQL數據庫等類似的系統產生密碼。比如,如果應用需要訪問AWS S3 桶,它向Vault請求AWS密鑰對,Vault將給出帶有租期的所需秘密信息。一旦租用期過期,這個秘密信息就不再存儲。
租賃和更新:Vault給出的秘密信息帶有租期,一旦租用期過期,它便立刻收回秘密信息,如果應用仍需要該秘密信息,則可以通過API更新租用期。
撤銷:在租用期到期之前,Vault可以撤銷一個秘密信息或者一個秘密信息樹。
有兩種方式來安裝使用Vault。
1. 預編譯的Vault二進制 能用於所有的Linux發行版,下載地址如下,下載之後,解壓並將它放在系統PATH路徑下,以方便調用。
下載相應的預編譯的Vault二進制版本。
解壓下載到本地的二進制版本。
祝賀你!您現在可以使用Vault了。
2. 從源代碼編譯是另一種在系統中安裝Vault的方式。在安裝Vault之前需要安裝GO和GIT。
在 Redhat系統中安裝GO 使用下面的指令:
sudo yum install go
在 Debin系統中安裝GO 使用下面的指令:
sudo apt-get install golang
或者
sudo add-apt-repository ppa:gophers/go sudo apt-get update sudo apt-get install golang-stable
在 Redhat系統中安裝GIT 使用下面的命令:
sudo yum install git
在 Debian系統中安裝GIT 使用下面的命令:
sudo apt-get install git
一旦GO和GIT都已被安裝好,我們便可以開始從源碼編譯安裝Vault。
將下列的Vault倉庫拷貝至GOPATH
https://github.com/hashicorp/vault
測試下面的文件是否存在,如果它不存在,那麼Vault沒有被克隆到合適的路徑。
$GOPATH/src/github.com/hashicorp/vault/main.go
執行下面的指令來編譯Vault,並將二進制文件放到系統bin目錄下。
make dev
我們已經編制了一份Vault的官方交互式教程,並帶有它在SSH上的輸出信息。
概述
這份教程包括下列步驟:
首先,我們需要為您初始化一個Vault的工作實例。在初始化過程中,您可以配置Vault的密封行為。簡單起見,現在使用一個啟封密鑰來初始化Vault,命令如下:
vault init -key-shares=1 -key-threshold=1
您會注意到Vault在這裡輸出了幾個密鑰。不要清除您的終端,這些密鑰在後面的步驟中會使用到。
當一個Vault服務器啟動時,它是密封的狀態。在這種狀態下,Vault被配置為知道物理存儲在哪裡及如何存取它,但不知道如何對其進行解密。 Vault使用加密密鑰來加密數據。這個密鑰由"主密鑰"加密,主密鑰不保存。解密主密鑰需要入口密鑰。在這個例子中,我們使用了一個入口密鑰來解密這個 主密鑰。
vault unseal <key 1>
在執行任何操作之前,連接的客戶端必須是被授權的。授權的過程是檢驗一個人或者機器是否如其所申明的那樣具有正確的身份。這個身份用在向Vault 發送請求時。為簡單起見,我們將使用在步驟2中生成的root令牌,這個信息可以回滾終端屏幕看到。使用一個客戶端令牌進行授權:
vault auth <root token>
現在Vault已經被設置妥當,我們可以開始讀寫默認掛載的秘密後端裡面的秘密信息了。寫在Vault中的秘密信息首先被加密,然後被寫入後端存儲中。後端存儲機制絕不會看到未加密的信息,並且也沒有在Vault之外解密的需要。
vault write secret/hello value=world
當然,您接下來便可以讀這個保密信息了:
vault read secret/hello
還有一個用I來密封Vault的API。它將丟掉現在的加密密鑰並需要另一個啟封過程來恢復它。密封僅需要一個擁有root權限的操作者。這是一種罕見的"打破玻璃過程"的典型部分。
這種方式中,如果檢測到一個入侵,Vault數據將會立刻被鎖住,以便最小化損失。如果不能訪問到主密鑰碎片的話,就不能再次獲取數據。
vault seal
這便是入門教程的結尾。
Vault是一個非常有用的應用,它提供了一個可靠且安全的存儲關鍵信息的方式。另外,它在存儲前加密關鍵信息、審計日志維護、以租期的方式獲取秘 密信息,且一旦租用期過期它將立刻收回秘密信息。Vault是平台無關的,並且可以免費下載和安裝。要發掘Vault的更多信息,請訪問其官方網站。
譯文:http://linux.cn/article-5424-1.html