Maison > développement back-end > Golang > Guide d'intégration de Vault dans les projets Golang

Guide d'intégration de Vault dans les projets Golang

WBOY
Libérer: 2023-07-17 14:16:36
original
1603 Les gens l'ont consulté

Guide d'intégration de Vault dans les projets Golang

Présentation :
Vault est un outil de gestion et de protection des données sensibles. Il peut stocker en toute sécurité des informations sensibles telles que des mots de passe, des clés API, des jetons d'accès, etc. Dans les projets Golang, nous pouvons protéger nos informations sensibles en intégrant Vault pour empêcher les fuites ou l'accès par des personnes non autorisées. Cet article explique comment intégrer Vault dans un projet Golang et fournit des exemples de code.

Étape 1 : Installer et configurer Vault

Tout d'abord, nous devons installer Vault et effectuer la configuration de base.

1.1 Installation de Vault
Vous pouvez télécharger le binaire Vault pour votre système d'exploitation à partir du site Web officiel de Vault (https://www.vaultproject.io/) et l'ajouter à votre chemin système.

1.2 Démarrer le serveur Vault
Exécutez la commande suivante dans le terminal pour démarrer le serveur Vault :

vault server -dev

Cela démarrera un serveur Vault en mode développement localement.

1.3 Configurer Vault
Définissez l'adresse du Vault en exécutant la commande suivante :

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

Étape 2 : Authentifiez-vous à l'aide de l'API Vault

Ensuite, nous allons utilisez l'API de Vault pour vous authentifier et obtenir un jeton d'accès.

2.1 Importez la bibliothèque Vault
Dans votre projet Golang, importez la bibliothèque Vault :

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

2.2 Créez un client Vault
Créez en utilisant l'extrait de code suivant Un client Vault :

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

Address: os.Getenv("VAULT_ADDR"),
Copier après la connexion

})

if err != nil {

return nil, err
Copier après la connexion

}

retour client, nul
}

2.3 Connectez-vous et obtenez le jeton d'accès
Utilisez le code suivant pour vous connecter et obtenez le jeton d'accès :

func GetVaultToken(client *api.Client) (string, error) {
options : = map[string]interface{}{

"role_id":   os.Getenv("VAULT_ROLE_ID"),
"secret_id": os.Getenv("VAULT_SECRET_ID"),
Copier après la connexion

}

response, err := client.Logical().Write("auth/approle/login", options)
if err != nil {

return "", err
Copier après la connexion
Copier après la connexion

}

token, ok := réponse.Auth.ClientToken
if !ok {

return "", errors.New("failed to retrieve token from Vault")
Copier après la connexion

}

return token, nil
}

2.4 Utiliser le jeton d'accès
Utilisez le jeton d'accès obtenu à l'étape précédente pour accéder aux fichiers sensibles dans les informations du coffre-fort :

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

return "", err
Copier après la connexion
Copier après la connexion

}

if secret == nil {

return "", errors.New("secret not found")
Copier après la connexion

}

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

return "", errors.New("invalid secret format")
Copier après la connexion

}

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

return "", errors.New("key not found in secret")
Copier après la connexion

}

return key, nil
}

Étape 3 : Utiliser Vault dans le code

Avec les étapes ci-dessus, nous avons déjà a Un client Golang qui peut s'authentifier auprès de Vault et accéder aux informations sensibles. Nous pouvons maintenant l'utiliser dans notre code.

func main() {
// Créer un client Vault
client, err := CreateVaultClient()
if err != nil {

log.Fatalf("failed to create Vault client: %v", err)
Copier après la connexion

}

// Obtenir un jeton d'accès
token, err := GetVaultToken( client)
if err != nil {

log.Fatalf("failed to get Vault token: %v", err)
Copier après la connexion

}

// Utiliser le jeton d'accès pour obtenir des informations sensibles de Vault
secretKey, err := GetSecretFromVault(client, "secret/my-secret-key")
if err != nil {

log.Fatalf("failed to get secret key from Vault: %v", err)
Copier après la connexion

}

// Utiliser les informations sensibles acquises pour le traitement de la logique métier
// ...
}

Dans le code ci-dessus, nous créons d'abord un client Vault, puis utilisons l'API de Vault. Connectez-vous et obtenez un jeton d'accès. Ensuite, nous utilisons le jeton d'accès pour obtenir des informations sensibles du coffre-fort et les utilisons pour notre traitement de logique métier.

Conclusion : 
La protection et la gestion des informations sensibles dans les projets Golang deviennent plus simples et plus sécurisées grâce à l'intégration de Vault. En utilisant l'API de Vault, nous pouvons facilement authentifier et accéder aux informations sensibles stockées dans Vault. Nous espérons que le guide d'intégration et l'exemple de code fournis dans cet article vous guideront dans l'utilisation de Vault dans votre projet Golang.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal