Maison  >  Article  >  développement back-end  >  Créez des applications d'entreprise sécurisées avec Golang et Vault

Créez des applications d'entreprise sécurisées avec Golang et Vault

PHPz
PHPzoriginal
2023-07-19 20:21:121056parcourir

Créez des applications sécurisées au niveau de l'entreprise à l'aide de Golang et de Vault

Avec le développement d'Internet, la sécurité des applications au niveau de l'entreprise est devenue de plus en plus importante. Lors du développement d'applications, nous devons réfléchir à la manière de protéger les données et les informations d'identification des utilisateurs, ainsi qu'à la manière d'interagir en toute sécurité avec les systèmes externes. Dans cet article, nous décrivons comment créer des applications sécurisées de niveau entreprise à l'aide de Golang et Vault, et fournissons des exemples de code pour illustrer la mise en œuvre.

  1. Qu'est-ce que Vault ?

Vault est un outil open source développé par HashiCorp pour stocker et gérer en toute sécurité les informations d'identification telles que les mots de passe, les clés API, les informations d'identification de base de données, etc. Vault possède de riches fonctionnalités, notamment le cryptage automatique des données, la création et le recyclage dynamiques d'identifiants, le contrôle de version des identifiants et un contrôle d'accès précis. En utilisant Vault, nous pouvons stocker des données sensibles dans un emplacement sécurisé et les récupérer à la demande en cas de besoin.

  1. Utiliser Vault pour l'authentification et l'autorisation

Dans les applications de niveau entreprise, l'authentification et l'autorisation sont très importantes. En utilisant Vault, nous pouvons mettre en œuvre un mécanisme d'authentification et d'autorisation sécurisé et flexible. Voici un exemple de code pour l'authentification à l'aide de Vault :

package main

import (
    "fmt"
    "os"

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

func main() {
    // 创建Vault客户端
    client, err := vault.NewClient(vault.DefaultConfig())
    if err != nil {
        fmt.Println("Failed to create Vault client:", err)
        os.Exit(1)
    }

    // 设置Vault地址和令牌
    client.SetAddress("http://localhost:8200")
    client.SetToken("<YOUR_VAULT_TOKEN>")

    // 进行身份验证
    _, err = client.Logical().Write("auth/userpass/login/<USERNAME>", map[string]interface{}{
        "password": "<PASSWORD>",
    })
    if err != nil {
        fmt.Println("Failed to authenticate:", err)
        os.Exit(1)
    }

    fmt.Println("Authentication successful!")
}

Le code ci-dessus montre comment utiliser la méthode d'authentification Userpass de Vault pour vérifier les informations d'identification d'un utilisateur. En appelant la méthode client.Logical().Write(), nous pouvons soumettre une demande d'authentification à Vault, en passant le nom d'utilisateur et le mot de passe comme paramètres. Si l'authentification réussit, nous obtiendrons une réponse contenant les informations d'authentification et pourrons l'utiliser pour la vérification de l'autorisation dans les demandes ultérieures. client.Logical().Write()方法,我们可以向Vault提交一个认证请求,并传递用户名和密码作为参数。如果认证成功,我们将获得一个包含认证信息的响应,并可以在后续的请求中使用它来进行授权验证。

  1. 使用Vault进行加密和解密操作

在企业级应用程序中,保护用户数据的机密性非常重要。通过使用Vault,我们可以实现对敏感数据的自动加密和解密操作,以确保数据的安全。下面是一个使用Vault进行加密和解密的示例代码:

package main

import (
    "fmt"
    "os"

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

func main() {
    // 创建Vault客户端
    client, err := vault.NewClient(vault.DefaultConfig())
    if err != nil {
        fmt.Println("Failed to create Vault client:", err)
        os.Exit(1)
    }

    // 设置Vault地址和令牌
    client.SetAddress("http://localhost:8200")
    client.SetToken("<YOUR_VAULT_TOKEN>")

    // 加密数据
    secret, err := client.Logical().Write("transit/encrypt/my-key", map[string]interface{}{
        "plaintext": "Hello, World!",
    })
    if err != nil {
        fmt.Println("Failed to encrypt data:", err)
        os.Exit(1)
    }

    // 解密数据
    plaintext, err := client.Logical().Write("transit/decrypt/my-key", map[string]interface{}{
        "ciphertext": secret.Data["ciphertext"].(string),
    })
    if err != nil {
        fmt.Println("Failed to decrypt data:", err)
        os.Exit(1)
    }

    fmt.Println("Decrypted data:", plaintext.Data["plaintext"].(string))
}

上述代码演示了如何使用Vault的Transit加密方法来进行数据的加密和解密操作。通过调用client.Logical().Write()方法,我们可以向Vault提交加密或解密请求,并传递相关的参数。对于加密操作,我们需要提供明文数据作为参数,而对于解密操作,我们需要提供密文数据。通过这种方式,我们可以保护敏感数据的机密性,同时允许应用程序对数据进行安全的操作。

  1. 使用Vault进行动态凭证管理

在企业级应用程序中,为外部系统提供凭证是一项常见的需求。通过使用Vault,我们可以实现对动态凭证的创建、回收和续订操作,以确保凭证的安全性和有效性。下面是一个使用Vault进行动态凭证管理的示例代码:

package main

import (
    "fmt"
    "os"

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

func main() {
    // 创建Vault客户端
    client, err := vault.NewClient(vault.DefaultConfig())
    if err != nil {
        fmt.Println("Failed to create Vault client:", err)
        os.Exit(1)
    }

    // 设置Vault地址和令牌
    client.SetAddress("http://localhost:8200")
    client.SetToken("<YOUR_VAULT_TOKEN>")

    // 创建动态凭证
    secret, err := client.Logical().Write("database/creds/my-role", nil)
    if err != nil {
        fmt.Println("Failed to create dynamic credential:", err)
        os.Exit(1)
    }

    // 使用凭证连接数据库
    fmt.Println("Connecting to database with dynamic credential:", secret.Data["username"].(string), secret.Data["password"].(string))
}

上述代码演示了如何使用Vault的Dynamic Secrets功能来创建动态凭证。通过调用client.Logical().Write()

    Utilisez Vault pour les opérations de chiffrement et de déchiffrement

    Dans les applications d'entreprise, la protection de la confidentialité des données utilisateur est très importante. En utilisant Vault, nous pouvons mettre en œuvre le cryptage et le déchiffrement automatiques des données sensibles pour garantir la sécurité des données. Voici un exemple de code qui utilise Vault pour le cryptage et le déchiffrement :

    rrreee

    Le code ci-dessus montre comment utiliser la méthode de cryptage Transit de Vault pour crypter et déchiffrer des données. En appelant la méthode client.Logical().Write(), nous pouvons soumettre une demande de chiffrement ou de déchiffrement à Vault et transmettre les paramètres pertinents. Pour les opérations de chiffrement, nous devons fournir des données en texte brut comme paramètres, tandis que pour les opérations de décryptage, nous devons fournir des données en texte chiffré. De cette manière, nous pouvons protéger la confidentialité des données sensibles tout en permettant aux applications d'effectuer des opérations sécurisées sur les données.

      🎜Utilisez Vault pour la gestion dynamique des informations d'identification🎜🎜🎜Dans les applications de niveau entreprise, fournir des informations d'identification aux systèmes externes est une exigence courante. En utilisant Vault, nous pouvons créer, recycler et renouveler des informations d'identification dynamiques pour garantir la sécurité et la validité des informations d'identification. Voici un exemple de code pour utiliser Vault pour la gestion dynamique des informations d'identification : 🎜rrreee🎜Le code ci-dessus montre comment utiliser la fonctionnalité Dynamic Secrets de Vault pour créer des informations d'identification dynamiques. En appelant la méthode client.Logical().Write() et en spécifiant le chemin d'accès aux informations d'identification correspondant, nous pouvons créer des informations d'identification dynamiques dans Vault. Lors des opérations ultérieures, nous pouvons obtenir le nom d'utilisateur et le mot de passe requis par l'application à partir de la valeur de retour des informations d'identification et les utiliser pour nous connecter à des systèmes externes. 🎜🎜Résumé🎜🎜Cet article explique comment créer des applications sécurisées de niveau entreprise à l'aide de Golang et Vault. En utilisant Vault, nous pouvons implémenter des fonctions telles que l'authentification et l'autorisation, le cryptage et le déchiffrement, ainsi que la gestion dynamique des informations d'identification pour protéger la sécurité des données et des informations d'identification des utilisateurs. En pratique, nous pouvons configurer et utiliser les fonctions de Vault de manière flexible en fonction des besoins et des scénarios réels afin de répondre aux exigences de sécurité des applications d'entreprise. 🎜🎜J'espère que cet article vous sera utile, merci d'avoir lu ! 🎜

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