首頁 > 後端開發 > Golang > 如何在Go中使用Vault保密儲存?

如何在Go中使用Vault保密儲存?

PHPz
發布: 2023-05-11 15:16:36
原創
1441 人瀏覽過

在現代應用程式中,敏感資料的保密性非常關鍵,例如API金鑰、資料庫密碼等等。為了確保安全性,這些敏感資料必須儲存在安全儲存中,並且只能被經過授權的使用者存取。 Vault是一款由HashiCorp開發的開源工具,具有安全儲存和動態存取控制等功能,是實現儲存敏感資訊的最佳選擇。

本文將討論如何在Go中使用Vault保密存儲,存取Vault API,並利用Vault提供安全性和便利性來管理應用程式的敏感資訊。

  1. 安裝Vault

首先需要安裝Vault並啟動Vault伺服器。可以去Vault官網下載適合你作業系統的二進位。在安裝之前,確認已經安裝了Consul或etcd等後端儲存。接下來,啟動Vault應用程序,可以使用以下的命令:

$ vault server -dev
登入後複製

這將啟動Vault伺服器,並且啟用開發/測試模式。在開發/測試模式下,Vault伺服器儲存在記憶體中,且未加密,僅用於開發測試目的。在生產環境中,您需要使用安全的配置來啟動Vault伺服器和後端儲存。

  1. 配置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”值儲存在節中。

  1. 在Go中使用Vault

現在已經配置了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金鑰中取得簽章密碼。

  1. 總結

Vault是一款開源工具,具有安全儲存和動態存取控制等功能,是實現儲存敏感資訊的最佳選擇。在Go中使用Vault保密儲存非常容易。只需要安裝Vault伺服器、設定Vault伺服器和建立Vault客戶端就可以管理Vault中的敏感資料。透過這種方式,可以確保敏感資料得到保護,並且只有經過授權的使用者才能存取它。

以上是如何在Go中使用Vault保密儲存?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板