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"),
})
if err != nil {
return nil, err
}
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"),
}
response, err := client.Logical().Write("auth/approle/login", options)
if err != nil {
return "", err
}
token, ok := réponse.Auth.ClientToken
if !ok {
return "", errors.New("failed to retrieve token from Vault")
}
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
}
if secret == nil {
return "", errors.New("secret not found")
}
data, ok := secret.Data["data"].(map[string]interface{})
if !ok {
return "", errors.New("invalid secret format")
}
key , ok := data["key"].(string)
if !ok {
return "", errors.New("key not found in secret")
}
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)
}
// Obtenir un jeton d'accès
token, err := GetVaultToken( client)
if err != nil {
log.Fatalf("failed to get Vault token: %v", err)
}
// 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)
}
// 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!