Maison  >  Article  >  développement back-end  >  Gestion des clés dans Golang : comment utiliser Vault pour gérer les mots de passe de bases de données cryptés

Gestion des clés dans Golang : comment utiliser Vault pour gérer les mots de passe de bases de données cryptés

WBOY
WBOYoriginal
2023-07-19 16:37:281628parcourir

Gestion des clés dans Golang : Comment utiliser Vault pour gérer les mots de passe de bases de données cryptés

Citation :
Pendant le processus de développement, il est crucial de protéger les données sensibles telles que les mots de passe des bases de données. Pour prévenir les risques de sécurité potentiels, les développeurs ont besoin d'un moyen sûr et fiable de gérer ces mots de passe. Cet article explique comment utiliser Vault pour gérer les mots de passe de bases de données cryptés afin de protéger la sécurité des données.

1. Introduction générale :
Vault est un outil open source utilisé pour gérer et protéger les informations sensibles. Il fournit un moyen centralisé de gérer et de distribuer en toute sécurité les mots de passe, les certificats et autres informations secrètes. Dans Golang, nous pouvons utiliser Vault pour gérer les mots de passe de bases de données cryptés.

2. Installez et configurez Vault :

  1. Tout d'abord, vous devez installer Vault. Vous pouvez télécharger la dernière version de Vault depuis le site officiel de Vault et l'installer conformément à la documentation officielle.
  2. Une fois l'installation terminée, vous devez démarrer le serveur Vault. Vous pouvez utiliser la commande suivante :

    vault server -dev

    Cette commande démarrera un serveur Vault en mode développement. Dans un environnement de production réel, vous devez utiliser différents paramètres pour démarrer le serveur Vault.

  3. Ensuite, vous devez configurer le serveur Vault. Vous pouvez utiliser la commande suivante pour configurer le serveur Vault :

    export VAULT_ADDR=http://127.0.0.1:8200

    Cette commande définira l'adresse du serveur Vault sur l'adresse IP de la machine et définira le port sur 8200.

3. Utilisez Golang pour intégrer Vault :

  1. Tout d'abord, vous devez installer le SDK de Vault dans Golang. Vous pouvez utiliser la commande suivante pour installer le SDK Vault :

    go get github.com/hashicorp/vault/api
  2. Importer le SDK Vault :

    import (
        "github.com/hashicorp/vault/api"
    )
  3. Obtenir le client Vault :

    func getVaultClient() (*api.Client, error) {
        config := &api.Config{
            Address: os.Getenv("VAULT_ADDR"),
        }
        return api.NewClient(config)
    }
  4. Utiliser le client Vault pour obtenir le mot de passe de la base de données :

    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
    }

    Ce code utilisera le client de Vault pour lire le secret nommé « secret/data/database » à partir du serveur Vault et renvoyer la valeur du secret.

  5. Dans votre application, vous pouvez utiliser le code ci-dessus pour obtenir le mot de passe de la base de données cryptée :

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

4. Résumé :
Utiliser Vault pour gérer les mots de passe de la base de données cryptée est un moyen efficace de protéger les données sensibles. En intégrant Golang à l'aide du SDK de Vault, nous pouvons obtenir en toute sécurité les mots de passe de base de données et les utiliser dans notre application. Cette approche offre une plus grande sécurité et prévient les risques de sécurité potentiels. J'espère que cet article vous aidera à comprendre comment utiliser Vault pour gérer les mots de passe de bases de données cryptés.

Exemple de code :

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
}

Remarques :

  1. L'exemple ci-dessus est exécuté en fonction du mode de développement du serveur Vault, en utilisant l'adresse IP locale et le port 8200 par défaut. Dans un environnement de production réel, vous devez utiliser l'adresse et le port corrects.
  2. Dans le serveur Vault, vous devez ajouter un mot de passe nommé "secret/data/database" afin que le code ci-dessus puisse obtenir correctement le mot de passe.

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