在現代應用程式中,敏感資料的保密性非常關鍵,例如API金鑰、資料庫密碼等等。為了確保安全性,這些敏感資料必須儲存在安全儲存中,並且只能被經過授權的使用者存取。 Vault是一款由HashiCorp開發的開源工具,具有安全儲存和動態存取控制等功能,是實現儲存敏感資訊的最佳選擇。
本文將討論如何在Go中使用Vault保密存儲,存取Vault API,並利用Vault提供安全性和便利性來管理應用程式的敏感資訊。
首先需要安裝Vault並啟動Vault伺服器。可以去Vault官網下載適合你作業系統的二進位。在安裝之前,確認已經安裝了Consul或etcd等後端儲存。接下來,啟動Vault應用程序,可以使用以下的命令:
$ vault server -dev
這將啟動Vault伺服器,並且啟用開發/測試模式。在開發/測試模式下,Vault伺服器儲存在記憶體中,且未加密,僅用於開發測試目的。在生產環境中,您需要使用安全的配置來啟動Vault伺服器和後端儲存。
一旦Vault伺服器啟動,我們需要建立一個Vault配置,用於儲存敏感資訊。首先,需要創建一個新的秘密引擎。
$ vault secrets enable -path=secret kv
這將在Vault伺服器上建立一個名為「secret」的秘密引擎,並將其類型設為「kv」。可以使用vault secrets list
查看Vault伺服器上的所有秘密引擎。
接下來,需要將敏感資料儲存到Vault金鑰儲存空間。在本例中,我們將儲存JWT(JSON Web Token)的簽章金鑰。可以使用vault kv put
指令將資料儲存到Vault金鑰儲存空間,如下所示:
$ vault kv put secret/jwt secretkey=shhhnotsosecret
以上指令將儲存一個名為「jwt」的鍵/值對,並使用“secretkey”鍵將“shhhnotsosecret”值儲存在節中。
現在已經配置了Vault,接下來我們需要在Go中使用Vault API讀取敏感資訊。
首先需要安裝Vault客戶端API。可以使用以下指令來安裝Vault客戶端API。
$ go get github.com/hashicorp/vault/api
接下來,需要建立一個新的Vault客戶端。可以使用下列指令建立Vault客戶端:
import ( "github.com/hashicorp/vault/api" ) config := api.DefaultConfig() config.Address = "http://127.0.0.1:8200" client, err := api.NewClient(config) if err != nil { // handle error }
以上程式碼將建立一個新的Vault客戶端,並將其配置為與執行在本機上的Vault伺服器通訊。
接下來,需要從Vault儲存區讀取金鑰。可使用下列程式碼從Vault儲存區取得金鑰:
secret, err := client.Logical().Read("secret/data/jwt") if err != nil { // handle error }
以上程式碼將從Vault JWT金鑰的鍵/值對讀取資料。如果讀取成功,則傳回一個包含資料的map[string]interface{}物件。
最後,我們可以使用以下程式碼從Vault的金鑰儲存區取得金鑰:
key := secret.Data["data"].(map[string]interface{})["secretkey"].(string)
以上程式碼將從Vault JWT金鑰中取得簽章密碼。
Vault是一款開源工具,具有安全儲存和動態存取控制等功能,是實現儲存敏感資訊的最佳選擇。在Go中使用Vault保密儲存非常容易。只需要安裝Vault伺服器、設定Vault伺服器和建立Vault客戶端就可以管理Vault中的敏感資料。透過這種方式,可以確保敏感資料得到保護,並且只有經過授權的使用者才能存取它。
以上是如何在Go中使用Vault保密儲存?的詳細內容。更多資訊請關注PHP中文網其他相關文章!