天天看點

如何使用Vault安全的存儲密碼和API密鑰如何使用Vault安全的存儲密碼和API密鑰

vault是用來安全的擷取秘密資訊的工具,它可以儲存密碼、api密鑰、證書等資訊。vault提供了一個統一的接口來通路秘密資訊,其具有健壯的通路控制機制和豐富的事件日志。

對關鍵資訊的授權通路是一個困難的問題,尤其是當有許多使用者角色,并且使用者請求不同的關鍵資訊時,例如用不同權限登入資料庫的登入配置,用于外部服務的api密鑰,soa通信的證書等。當保密資訊由不同的平台進行管理,并使用一些自定義的配置時,情況變得更糟,是以,安全的存儲、管理審計日志幾乎是不可能的。但vault為這種複雜情況提供了一個解決方案。

如何使用Vault安全的存儲密碼和API密鑰如何使用Vault安全的存儲密碼和API密鑰

<a target="_blank"></a>

資料加密:vault能夠在不存儲資料的情況下對資料進行加密、解密。開發者們便可以存儲加密後的資料而無需開發自己的加密技術,vault還允許安全團隊自定義安全參數。

安全密碼存儲:vault在将秘密資訊(api密鑰、密碼、證書)存儲到持久化存儲之前對資料進行加密。是以,如果有人偶爾拿到了存儲的資料,這也沒有任何意義,除非加密後的資訊能被解密。

動态密碼:vault可以随時為aws、sql資料庫等類似的系統産生密碼。比如,如果應用需要通路aws s3 桶,它向vault請求aws密鑰對,vault将給出帶有租期的所需秘密資訊。一旦租用期過期,這個秘密資訊就不再存儲。

租賃和更新:vault給出的秘密資訊帶有租期,一旦租用期過期,它便立刻收回秘密資訊,如果應用仍需要該秘密資訊,則可以通過api更新租用期。

撤銷:在租用期到期之前,vault可以撤銷一個秘密資訊或者一個秘密資訊樹。

有兩種方式來安裝使用vault。

1. 預編譯的vault二進制 能用于所有的linux發行版,下載下傳位址如下,下載下傳之後,解壓并将它放在系統path路徑下,以友善調用。

<a href="https://dl.bintray.com/mitchellh/vault/vault_0.1.0_linux_386.zip" target="_blank">下載下傳預編譯的二進制 vault (32-bit)</a>

<a href="https://dl.bintray.com/mitchellh/vault/vault_0.1.0_linux_amd64.zip" target="_blank">下載下傳預編譯的二進制 vault (64-bit)</a>

<a href="https://dl.bintray.com/mitchellh/vault/vault_0.1.0_linux_arm.zip" target="_blank">下載下傳預編譯的二進制 vault (arm)</a>

如何使用Vault安全的存儲密碼和API密鑰如何使用Vault安全的存儲密碼和API密鑰

下載下傳相應的預編譯的vault二進制版本。

如何使用Vault安全的存儲密碼和API密鑰如何使用Vault安全的存儲密碼和API密鑰

解壓下載下傳到本地的二進制版本。

祝賀你!您現在可以使用vault了。

如何使用Vault安全的存儲密碼和API密鑰如何使用Vault安全的存儲密碼和API密鑰

2. 從源代碼編譯是另一種在系統中安裝vault的方式。在安裝vault之前需要安裝go和git。

在 redhat系統中安裝go 使用下面的指令:

<code>sudo yum install go</code>

在 debin系統中安裝go 使用下面的指令:

<code>sudo apt-get install golang</code>

或者

<code>sudo add-apt-repository ppa:gophers/go</code>

<code></code>

<code>sudo apt-get update</code>

<code>sudo apt-get install golang-stable</code>

在 redhat系統中安裝git 使用下面的指令:

<code>sudo yum install git</code>

在 debian系統中安裝git 使用下面的指令:

<code>sudo apt-get install git</code>

一旦go和git都已被安裝好,我們便可以開始從源碼編譯安裝vault。

将下列的vault倉庫拷貝至gopath

<code>https://github.com/hashicorp/vault</code>

測試下面的檔案是否存在,如果它不存在,那麼vault沒有被克隆到合适的路徑。

<code>$gopath/src/github.com/hashicorp/vault/main.go</code>

執行下面的指令來編譯vault,并将二進制檔案放到系統bin目錄下。

<code>make dev</code>

如何使用Vault安全的存儲密碼和API密鑰如何使用Vault安全的存儲密碼和API密鑰

path

我們已經編制了一份vault的官方互動式教程,并帶有它在ssh上的輸出資訊。

概述

這份教程包括下列步驟:

初始化并啟封您的vault

在vault中對您的請求授權

讀寫秘密資訊

密封您的vault

首先,我們需要為您初始化一個vault的工作執行個體。在初始化過程中,您可以配置vault的密封行為。簡單起見,現在使用一個啟封密鑰來初始化vault,指令如下:

<code>vault init -key-shares=1 -key-threshold=1</code>

您會注意到vault在這裡輸出了幾個密鑰。不要清除您的終端,這些密鑰在後面的步驟中會使用到。

如何使用Vault安全的存儲密碼和API密鑰如何使用Vault安全的存儲密碼和API密鑰

initializing ssh

當一個vault伺服器啟動時,它是密封的狀态。在這種狀态下,vault被配置為知道實體存儲在哪裡及如何存取它,但不知道如何對其進行解密。vault使用加密密鑰來加密資料。這個密鑰由"主密鑰"加密,主密鑰不儲存。解密主密鑰需要入口密鑰。在這個例子中,我們使用了一個入口密鑰來解密這個主密鑰。

<code>vault unseal &lt;key 1&gt;</code>

如何使用Vault安全的存儲密碼和API密鑰如何使用Vault安全的存儲密碼和API密鑰

unsealing ssh

在執行任何操作之前,連接配接的用戶端必須是被授權的。授權的過程是檢驗一個人或者機器是否如其所申明的那樣具有正确的身份。這個身份用在向vault發送請求時。為簡單起見,我們将使用在步驟2中生成的root令牌,這個資訊可以復原終端螢幕看到。使用一個用戶端令牌進行授權:

<code>vault auth &lt;root token&gt;</code>

如何使用Vault安全的存儲密碼和API密鑰如何使用Vault安全的存儲密碼和API密鑰

authorize ssh

現在vault已經被設定妥當,我們可以開始讀寫預設挂載的秘密後端裡面的秘密資訊了。寫在vault中的秘密資訊首先被加密,然後被寫入後端存儲中。後端存儲機制絕不會看到未加密的資訊,并且也沒有在vault之外解密的需要。

<code>vault write secret/hello value=world</code>

當然,您接下來便可以讀這個保密資訊了:

<code>vault read secret/hello</code>

如何使用Vault安全的存儲密碼和API密鑰如何使用Vault安全的存儲密碼和API密鑰

rw_ssh

還有一個用i來密封vault的api。它将丢掉現在的加密密鑰并需要另一個啟封過程來恢複它。密封僅需要一個擁有root權限的操作者。這是一種罕見的"打破玻璃過程"的典型部分。

這種方式中,如果檢測到一個入侵,vault資料将會立刻被鎖住,以便最小化損失。如果不能通路到主密鑰碎片的話,就不能再次擷取資料。

<code>vault seal</code>

如何使用Vault安全的存儲密碼和API密鑰如何使用Vault安全的存儲密碼和API密鑰

seal vault ssh

這便是入門教程的結尾。

原文釋出時間:2015-05-11

本文來自雲栖合作夥伴“linux中國”

繼續閱讀