如何使用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的更多資訊,請訪問其官方網站。
相關文章
- 如何安全的儲存密碼密碼
- 如何安全地儲存密碼?密碼
- 如何安全的儲存使用者密碼?(中)程式碼篇密碼
- 如何安全的儲存使用者密碼?(中)理論篇密碼
- 2.9.3 安全的外部密碼儲存密碼
- 如何加密傳輸和儲存使用者密碼加密密碼
- 聊聊密碼儲存中的安全問題密碼
- 如何使用Web3j生成私鑰和地址,而不只是建立金鑰儲存JSON檔案?WebJSON
- SSH無需密碼金鑰登入密碼
- 【Azure Key Vault】在Azure Databricks上獲取Azure Key Vault中所儲存的機密(secret)的兩種方式
- .Net Api 之如何使用Elasticsearch儲存文件APIElasticsearch
- 清除SVN儲存的密碼密碼
- Spring Boot整合Spring Cloud Vault進行安全儲存Spring BootCloud
- win10檢視儲存的wifi密碼_如何檢視win10電腦儲存的wifi密碼Win10WiFi密碼
- Azure Kay Vault(一).NET Core Console App 獲取金鑰保管庫中的機密資訊APP
- plsql developer怎麼儲存使用者名稱和密碼SQLDeveloper密碼
- tortoiseGIT儲存使用者名稱密碼Git密碼
- 網頁密碼儲存網頁密碼
- 在Chrome瀏覽器中儲存的密碼有多安全?Chrome瀏覽器密碼
- cookie儲存使用者登入名和密碼程式碼例項Cookie密碼
- linux儲存住github的賬號和密碼LinuxGithub密碼
- 使用python解密SecureCRT上儲存的密碼 (Windows)Python解密Securecrt密碼Windows
- win10 mstsc怎麼儲存遠端密碼_win10 mstsc如何儲存遠端密碼Win10密碼
- 【ubuntu】金鑰儲存在過時的 trusted.gpg 金鑰環中UbuntuRust
- bitlocker如何恢復金鑰 bitlocker恢復金鑰的方法
- Java安全——金鑰那些事Java
- 資料庫到底應該如何儲存密碼?資料庫密碼
- cookie儲存刪除使用者名稱和密碼程式碼例項Cookie密碼
- git儲存使用者名稱與密碼Git密碼
- oracle 11g使用者密碼儲存Oracle密碼
- ASP.NET中使用Cookie儲存使用者名稱和密碼 (轉)ASP.NETCookie密碼
- 什麼是私有金鑰密碼技術——金鑰加密演算法採用同一把金鑰進行加密和解密密碼加密演算法解密
- Win10如何更改金鑰 Win10電腦金鑰過期修改金鑰的方法Win10
- Chrome如何檢視儲存的網站密碼,如此簡單!Chrome網站密碼
- 安全密碼儲存,該怎麼做,不該怎麼做?密碼
- 在 Linux 中用Seahorse管理你的密碼和加密金鑰Linux密碼加密
- 第五章 金鑰分配與金鑰管理 —— 現代密碼學(楊波)課後題答案解析密碼學
- 【Azure Developer】Python程式碼通過AAD認證訪問微軟Azure金鑰保管庫(Azure Key Vault)中機密資訊(Secret)DeveloperPython微軟