Maison  >  Article  >  développement back-end  >  Gestion des clés dans Golang : utilisation de Vault pour stocker et accéder aux mots de passe

Gestion des clés dans Golang : utilisation de Vault pour stocker et accéder aux mots de passe

王林
王林original
2023-07-17 12:09:151438parcourir

Gestion des clés dans Golang : utilisez Vault pour stocker et accéder aux mots de passe

Introduction :
Dans le développement quotidien, nous avons souvent besoin d'utiliser des mots de passe et des informations sensibles pour nous connecter à des bases de données, accéder aux API, etc. Cependant, coder en dur ces mots de passe et informations sensibles directement dans le code n’est pas une pratique sécurisée. Pour mieux protéger ces informations sensibles, nous pouvons utiliser Vault comme outil de gestion de clés. Cet article explique comment utiliser Vault dans Golang pour stocker et accéder en toute sécurité aux mots de passe.

Qu'est-ce que Vault ?
Vault est un outil puissant développé par HashiCorp. Il fournit un moyen sécurisé de gérer les informations sensibles telles que les mots de passe, les clés API, etc. Vault utilise des politiques de stockage et d'accès cryptées pour protéger ces informations sensibles, garantissant que seuls les utilisateurs autorisés peuvent y accéder.

Utiliser Vault dans Golang :
Tout d'abord, nous devons installer Vault localement et démarrer le serveur Vault. La documentation d'installation et de démarrage de Vault peut être obtenue sur le site officiel https://www.vaultproject.io/.

Une fois le serveur Vault démarré, nous pouvons utiliser VaultClient dans l'application Golang pour obtenir et stocker les mots de passe.

Tout d'abord, nous devons ajouter les dépendances suivantes à notre projet Golang :

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

Ensuite, nous devons configurer l'adresse et les informations d'authentification du serveur Vault :

client, err := api.NewClient(&api.Config{
    Address: "http://localhost:8200", // 设置Vault服务器的地址
})

if err != nil {
    log.Fatal(err)
}

client.SetToken("YOUR_VAULT_TOKEN") // 设置Vault服务器的访问令牌

Maintenant, nous pouvons utiliser VaultClient pour obtenir et stocker des mots de passe. Voici un exemple de code :

Obtenez le mot de passe de Vault :

func getPassword(path string) (string, error) {
    secret, err := client.Logical().Read("secret/data/" + path) // 从Vault中读取密码
    if err != nil {
        return "", err
    }

    password, ok := secret.Data["password"].(string)
    if !ok {
        return "", fmt.Errorf("Invalid password")
    }

    return password, nil
}

Stockez le mot de passe dans Vault :

func storePassword(path, password string) error {
    data := map[string]interface{}{
        "password": password,
    }

    _, err := client.Logical().Write("secret/data/" + path, data) // 将密码存储到Vault中
    if err != nil {
        return err
    }

    return nil
}

Comme vous pouvez le voir, lors de l'obtention du mot de passe, nous devons spécifier le chemin où le mot de passe est stocké dans Vault. Lors du stockage du mot de passe, nous devons fournir le mot de passe et le chemin de stockage.

En plus des mots de passe, nous pouvons également stocker et obtenir d'autres informations sensibles, telles que des clés API, des chaînes de connexion à une base de données, etc.

Résumé :
Dans cet article, nous avons appris à utiliser Vault dans les applications Golang pour stocker et accéder aux mots de passe. En utilisant Vault, nous pouvons gérer les informations sensibles de manière plus sécurisée et garantir que seuls les utilisateurs autorisés y ont accès. Grâce aux exemples de code ci-dessus, nous pouvons facilement intégrer Vault dans le projet Golang et protéger nos informations sensibles. J'espère que cet article vous aidera à mieux gérer vos mots de passe et vos informations sensibles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn