ホームページ  >  記事  >  バックエンド開発  >  Golang でのキー管理: Vault を使用して暗号化されたデータベースのパスワードを管理する方法

Golang でのキー管理: Vault を使用して暗号化されたデータベースのパスワードを管理する方法

WBOY
WBOYオリジナル
2023-07-19 16:37:281620ブラウズ

Golang でのキー管理: Vault を使用して暗号化されたデータベース パスワードを管理する方法

はじめに:
開発プロセス中、データベース パスワードなどの機密データを保護することは非常に重要です。潜在的なセキュリティ リスクを防ぐために、開発者はこれらのパスワードを管理するための安全で信頼性の高い方法を必要としています。この記事では、Vault を使用して暗号化されたデータベースのパスワードを管理し、データのセキュリティを保護する方法を紹介します。

1. 背景の紹介:
Vault は、機密情報の管理と保護に使用されるオープン ソース ツールです。パスワード、証明書、その他の機密情報を安全に管理および配布するための一元的な方法を提供します。 Golang では、Vault を使用して暗号化されたデータベースのパスワードを管理できます。

2. Vault のインストールと構成:

  1. まず、Vault をインストールする必要があります。 Vault の最新バージョンを Vault の公式 Web サイトからダウンロードし、公式ドキュメントに従ってインストールできます。
  2. インストールが完了したら、Vault サーバーを起動する必要があります。次のコマンドを使用できます:

    vault server -dev

    このコマンドは、開発モードの Vault サーバーを起動します。実際の運用環境では、Vault サーバーを起動するにはさまざまなパラメータを使用する必要があります。

  3. 次に、Vault サーバーを構成する必要があります。次のコマンドを使用して Vault サーバーを構成できます:

    export VAULT_ADDR=http://127.0.0.1:8200

    このコマンドは、Vault サーバーのアドレスをローカル マシンの IP アドレスに設定し、ポートを 8200 に設定します。

3. Golang を使用して Vault と統合する:

  1. まず、Golang に Vault SDK をインストールする必要があります。次のコマンドを使用して Vault SDK をインストールできます:

    go get github.com/hashicorp/vault/api
  2. Vault SDK をインポートします:

    import (
        "github.com/hashicorp/vault/api"
    )
  3. Vault クライアントを取得します:

    func getVaultClient() (*api.Client, error) {
        config := &api.Config{
            Address: os.Getenv("VAULT_ADDR"),
        }
        return api.NewClient(config)
    }
  4. Vault クライアントを使用してデータベース パスワードを取得します:

    func getDatabasePassword() (string, error) {
        client, err := getVaultClient()
        if err != nil {
            return "", err
        }
    
        secret, err := client.Logical().Read("secret/data/database")
        if err != nil {
            return "", err
        }
    
        password := secret.Data["password"].(string)
        return password, nil
    }

    このコードは、Vault クライアントを使用して、Vault サーバー データベースから名前「secret/data/」を読み取ります。 " とパスワードの値を返します。

  5. アプリケーションでは、上記のコードを使用して、暗号化されたデータベース パスワードを取得できます:

    password, err := getDatabasePassword()
    if err != nil {
        log.Fatal(err)
    }
    
    // 使用password连接到数据库

4. 概要:
Using暗号化されたデータベースのパスワードを管理する Vault は、機密データを保護する効果的な方法です。 Vault の SDK を使用して Golang と統合することで、データベースのパスワードを安全に取得し、アプリケーションで使用することができます。このアプローチにより、セキュリティが強化され、潜在的なセキュリティ リスクが防止されます。この記事が、Vault を使用して暗号化されたデータベース パスワードを管理する方法を理解するのに役立つことを願っています。

コード例:

package main

import (
    "fmt"
    "log"
    "os"

    "github.com/hashicorp/vault/api"
)

func getVaultClient() (*api.Client, error) {
    config := &api.Config{
        Address: os.Getenv("VAULT_ADDR"),
    }
    return api.NewClient(config)
}

func getDatabasePassword() (string, error) {
    client, err := getVaultClient()
    if err != nil {
        return "", err
    }

    secret, err := client.Logical().Read("secret/data/database")
    if err != nil {
        return "", err
    }

    password := secret.Data["password"].(string)
    return password, nil
}

func main() {
    password, err := getDatabasePassword()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Database password: ", password)

    // Connect to the database using the password
}

注:

  1. 上記の例は、デフォルトでローカル IP アドレスとポート 8200 を使用して、Vault サーバー開発モードに基づいて実行されます。 。実際の運用環境では、正しいアドレスとポートを使用する必要があります。
  2. 上記のコードがパスワードを正しく取得できるように、Vault サーバーに「secret/data/database」という名前のパスワードを追加する必要があります。

以上がGolang でのキー管理: Vault を使用して暗号化されたデータベースのパスワードを管理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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