2021-05-12 14:32:11
如何使用Vault安全的儲存密碼和API金鑰
Vault是用來安全的獲取秘密資訊的工具,它可以儲存密碼、API金鑰、證書等資訊。Vault提供了一個統一的介面來存取秘密資訊,其具有健壯的存取控制機制和豐富的事件紀錄檔。
對關鍵資訊的授權存取是一個困難的問題,尤其是當有許多使用者角色,並且使用者請求不同的關鍵資訊時,例如用不同許可權登入資料庫的登入設定,用於外部服務的API金鑰,SOA通訊的證書等。當保密資訊由不同的平台進行管理,並使用一些自定義的設定時,情況變得更糟,因此,安全的儲存、管理審計紀錄檔幾乎是不可能的。但Vault為這種複雜情況提供了一個解決方案。
突出特點
資料加密:Vault能夠在不儲存資料的情況下對資料進行加密、解密。開發者們便可以儲存加密後的資料而無需開發自己的加密技術,Vault還允許安全團隊自定義安全引數。
安全密碼儲存:Vault在將秘密資訊(API金鑰、密碼、證書)儲存到持久化儲存之前對資料進行加密。因此,如果有人偶爾拿到了儲存的資料,這也沒有任何意義,除非加密後的資訊能被解密。
動態密碼:Vault可以隨時為AWS、SQL資料庫等類似的系統產生密碼。比如,如果應用需要存取AWS S3 桶,它向Vault請求AWS金鑰對,Vault將給出帶有租期的所需秘密資訊。一旦租用期過期,這個秘密資訊就不再儲存。
租賃和更新:Vault給出的秘密資訊帶有租期,一旦租用期過期,它便立刻收回秘密資訊,如果應用仍需要該秘密資訊,則可以通過API更新租用期。
復原:在租用期到期之前,Vault可以復原一個秘密資訊或者一個秘密資訊樹。
安裝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入門教學
我們已經編製了一份Vault的官方互動式教學,並帶有它在SSH上的輸出資訊。
概述
這份教學包括下列步驟:
- 初始化並啟封您的Vault
- 在Vault中對您的請求授權
- 讀寫秘密資訊
- 密封您的Vault
初始化您的Vault
首先,我們需要為您初始化一個Vault的工作範例。在初始化過程中,您可以設定Vault的密封行為。簡單起見,現在使用一個啟封金鑰來初始化Vault,命令如下:
vault init -key-shares=1-key-threshold=1
您會注意到Vault在這裡輸出了幾個金鑰。不要清除您的終端,這些金鑰在後面的步驟中會使用到。
啟封您的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
密封您的Vault
還有一個用I來密封Vault的API。它將丟掉現在的加密金鑰並需要另一個啟封過程來恢復它。密封僅需要一個擁有root許可權的操作者。這是一種罕見的"打破玻璃過程"的典型部分。
這種方式中,如果檢測到一個入侵,Vault資料將會立刻被鎖住,以便最小化損失。如果不能存取到主金鑰碎片的話,就不能再次獲取資料。
vault seal
這便是入門教學的結尾。
總結
Vault是一個非常有用的應用,它提供了一個可靠且安全的儲存關鍵資訊的方式。另外,它在儲存前加密關鍵資訊、審計紀錄檔維護、以租期的方式獲取秘密資訊,且一旦租用期過期它將立刻收回秘密資訊。Vault是平台無關的,並且可以免費下載和安裝。要發掘Vault的更多資訊,請存取其官方網站。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-05/117317.htm
相關文章