ホームページ >バックエンド開発 >Golang >Golang と Vault を使用して高セキュリティの分散アプリケーションを構築する

Golang と Vault を使用して高セキュリティの分散アプリケーションを構築する

WBOY
WBOYオリジナル
2023-07-17 17:45:201107ブラウズ

Golang と Vault を使用した高セキュリティ分散アプリケーションの構築

[はじめに]
クラウド コンピューティングと分散アーキテクチャの普及により、高セキュリティ分散アプリケーションの構築が特に重要になってきています。この記事では、Golang と Vault という 2 つの強力なツールを使用して、高セキュリティの分散アプリケーションを構築する方法を紹介し、コード例を示します。

[背景]
Golang は、効率的なパフォーマンスと簡潔な構文で知られる、厳密に型指定されたプログラミング言語です。 Vault は、アプリケーションの機密データの保護に重点を置いたオープンソースのキー管理および安全なウェアハウス ツールです。

[ステップ 1: Vault のインストールと構成]
まず、Vault をインストールして構成する必要があります。 Vault の公式 Web サイトから実行可能ファイルをダウンロードし、サーバー モードに設定できます。構成ファイルでは、Vault のリスニング アドレスとポート、およびその他のセキュリティ オプションを指定できます。

[ステップ 2: Vault トークンの作成]
Vault は認証と認可にトークンを使用します。 Vault でトークンを作成し、それをアプリケーションで使用して Vault の API にアクセスする必要があります。以下は、Vault API を介してトークンを作成する方法を示すサンプル コードです:

package main

import (
    "fmt"
    "log"
    "os"

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

func main() {
    vaultAddr := os.Getenv("VAULT_ADDR")
    if vaultAddr == "" {
        log.Fatal("Vault address not set")
    }

    config := &api.Config{
        Address: vaultAddr,
    }

    client, err := api.NewClient(config)
    if err != nil {
        log.Fatal(err)
    }

    authPath := "auth/approle/login"
    secretPath := "secret/data/myapp/credentials"

    roleID := os.Getenv("VAULT_ROLE_ID")
    secretID := os.Getenv("VAULT_SECRET_ID")

    payload := map[string]interface{}{
        "role_id":   roleID,
        "secret_id": secretID,
    }

    resp, err := client.Logical().Write(authPath, payload)
    if err != nil {
        log.Fatal(err)
    }

    token := resp.Auth.ClientToken
    fmt.Println("Token:", token)

    client.SetToken(token)

    // Store the token securely for later use
}

[ステップ 3: Vault API を介して機密データを取得する]
これで、有効な Vault トークンを取得できました。これは、アプリケーションに必要な機密データを取得するために使用できます。以下は、Vault API を介して機密データを取得する方法を示すサンプル コードです。

package main

import (
    "fmt"
    "log"
    "os"

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

func main() {
    vaultAddr := os.Getenv("VAULT_ADDR")
    if vaultAddr == "" {
        log.Fatal("Vault address not set")
    }

    config := &api.Config{
        Address: vaultAddr,
    }

    client, err := api.NewClient(config)
    if err != nil {
        log.Fatal(err)
    }

    token := getTokenFromSecureStorage() // 从安全存储中获取之前存储的令牌

    client.SetToken(token)

    secretPath := "secret/data/myapp/credentials"

    secret, err := client.Logical().Read(secretPath)
    if err != nil {
        log.Fatal(err)
    }

    credentials := secret.Data["data"].(map[string]interface{})
    username := credentials["username"].(string)
    password := credentials["password"].(string)

    fmt.Println("Username:", username)
    fmt.Println("Password:", password)
}

[概要]
この記事では、Golang と Vault を使用して高セキュリティの分散アプリケーションを構築する方法のプロセスを紹介します。 。 Vault を作成および構成し、Vault の API を使用してデータを取得することで、アプリケーションの機密データを保護します。この 2 つのツールを適切に使用することで、安全性の高い分散アプリケーションを構築できます。この記事が読者にインスピレーションを与え、実際の開発に何らかの役割を果たすことができれば幸いです。

[参考]

  1. Golang 公式サイト: https://golang.org/
  2. Vault 公式サイト: https://www.vaultproject.io /

以上がGolang と Vault を使用して高セキュリティの分散アプリケーションを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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