ホームページ  >  記事  >  バックエンド開発  >  Golang プロジェクトにおける Vault 統合ガイド

Golang プロジェクトにおける Vault 統合ガイド

WBOY
WBOYオリジナル
2023-07-17 14:16:361534ブラウズ

Golang プロジェクトにおける Vault 統合ガイド

概要:
Vault は、機密データを管理および保護するためのツールであり、パスワード、API キー、アクセス トークンなどの機密情報を安全に保存できます。 Golang プロジェクトでは、Vault を統合することで機密情報を保護し、権限のない人物による漏洩やアクセスを防ぐことができます。この記事では、Vault を Golang プロジェクトに統合する方法を紹介し、コード例を示します。

ステップ 1: Vault のインストールと構成

まず、Vault をインストールして基本設定を行う必要があります。

1.1 Vault のインストール
Vault の公式 Web サイト (https://www.vaultproject.io/) からオペレーティング システムに適した Vault バイナリをダウンロードし、システム パスの中間に追加できます。

1.2 Vault サーバーを起動します
ターミナルで次のコマンドを実行して Vault サーバーを起動します:

vault server -dev

これにより、開発モードの Vault が起動します。ローカルにサーバーを設置します。

1.3 Vault の構成
次のコマンドを実行して、Vault のアドレスを設定します:

export VAULT_ADDR='http://127.0.0.1:8200'

ステップ2: Vault API を使用した認証

次に、Vault の API を使用して認証を行い、アクセス トークンを取得します。

2.1 Vault ライブラリをインポートする
Golang プロジェクトで、Vault ライブラリをインポートします:

import (
"github.com/bashicorp/vault/api"
)

2.2 Vault クライアントの作成
次のコード スニペットを使用して Vault クライアントを作成します:

func CreateVaultClient() (*api.Client, error) {
client, err := api.NewClient(&api.Config{

Address: os.Getenv("VAULT_ADDR"),

})

if err != nil {

return nil, err

}

クライアントを返す、nil
}

2.3 ログインしてアクセス トークンを取得します。
次のコードを使用してログインし、アクセス トークンを取得します。

func GetVaultToken(client *api.Client) (string 、エラー) {
オプション := マップ[文字列]インターフェイス{}{

"role_id":   os.Getenv("VAULT_ROLE_ID"),
"secret_id": os.Getenv("VAULT_SECRET_ID"),

}

応答、エラー := client.Logical().Write("auth/approle/ login", options)
if err != nil {

return "", err

}

token, ok := response.Auth.ClientToken
if !ok {

return "", errors.New("failed to retrieve token from Vault")

}

リターン トークン、nil
}

2.4 アクセス トークンの使用
前の手順で取得したアクセス トークンを使用して、Vault 内の機密情報にアクセスします:

func GetSecretFromVault(client *api.Client, SecretPath string) (string, error) {
Secret, err := client.Logical().Read(secretPath)
if err != nil {

return "", err

}

if Secret == nil {

return "", errors.New("secret not found")

}

data, ok := Secret.Data["data"].(map[string] Interface{ })
if !ok {

return "", errors.New("invalid secret format")

}

key, ok := data["key"].(string)
if !ok {

return "", errors.New("key not found in secret")

}

return key, nil
}

ステップ 3: コードで Vault を使用する

上記のステップを通じて、次のことができるツールがすでに用意されています。 Vault Golang クライアントで認証して機密情報にアクセスするために使用されます。これでコード内で使用できるようになりました。

func main() {
// Vault client
クライアントを作成します。err := CreateVaultClient()
if err != nil {

log.Fatalf("failed to create Vault client: %v", err)

}

// アクセス トークンを取得します。
トークン、エラー := GetVaultToken(client)
if エラー != nil {

log.Fatalf("failed to get Vault token: %v", err)

}

// アクセス トークンを使用します。 Vault からの情報
SecretKey, err := GetSecretFromVault(client, "secret/my-secret-key")
if err != nil {

log.Fatalf("failed to get secret key from Vault: %v", err)

}

//取得した機密情報をビジネス ロジック処理に使用します
// ...
}

上記のコードでは、まず Vault クライアントを作成し、次に Vault API ログインを使用して、アクセストークン。次に、アクセス トークンを使用して Vault から機密情報を取得し、ビジネス ロジックの処理に使用します。

結論:
Vault を統合することで、Golang プロジェクトの機密情報の保護と管理がより簡単かつ安全になります。 Vault の API を使用すると、Vault に保存されている機密情報を簡単に認証してアクセスできます。この記事で提供されている統合ガイドとサンプル コードが、Golang プロジェクトで Vault を使用する際のガイドになれば幸いです。

以上がGolang プロジェクトにおける Vault 統合ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。