Heim >Backend-Entwicklung >Golang >Schlüsselverwaltung in Golang: Verwendung von Vault zum Speichern und Zugreifen auf Passwörter

Schlüsselverwaltung in Golang: Verwendung von Vault zum Speichern und Zugreifen auf Passwörter

王林
王林Original
2023-07-17 12:09:151505Durchsuche

Schlüsselverwaltung in Golang: Verwenden Sie Vault zum Speichern und Zugreifen auf Passwörter

Einführung:
In der täglichen Entwicklung müssen wir häufig Passwörter und vertrauliche Informationen verwenden, um eine Verbindung zu Datenbanken herzustellen, auf APIs zuzugreifen usw. Allerdings ist es keine sichere Praxis, diese Passwörter und vertraulichen Informationen direkt in den Code zu kodieren. Um diese sensiblen Informationen besser zu schützen, können wir Vault als Schlüsselverwaltungstool verwenden. In diesem Artikel wird erläutert, wie Sie Vault in Golang verwenden, um Passwörter sicher zu speichern und darauf zuzugreifen.

Was ist Vault?
Vault ist ein leistungsstarkes Tool, das von HashiCorp entwickelt wurde. Es bietet eine sichere Möglichkeit, vertrauliche Informationen wie Passwörter, API-Schlüssel usw. zu verwalten. Vault verwendet verschlüsselte Speicher- und Zugriffsrichtlinien, um diese vertraulichen Informationen zu schützen und sicherzustellen, dass nur autorisierte Benutzer darauf zugreifen können.

Vault in Golang verwenden:
Zuerst müssen wir Vault lokal installieren und den Vault-Server starten. Die Vault-Installations- und Startdokumentation finden Sie auf der offiziellen Website https://www.vaultproject.io/.

Sobald der Vault-Server gestartet ist, können wir VaultClient in der Golang-Anwendung verwenden, um Passwörter abzurufen und zu speichern.

Zuerst müssen wir die folgenden Abhängigkeiten zu unserem Golang-Projekt hinzufügen:

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

Als nächstes müssen wir die Adresse und Authentifizierungsinformationen des Vault-Servers einrichten:

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

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

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

Jetzt können wir VaultClient verwenden, um Passwörter abzurufen und zu speichern. Hier ist ein Beispielcode:

Holen Sie sich das Passwort aus 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
}

Speichern Sie das Passwort in 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
}

Wie Sie sehen können, müssen wir beim Abrufen des Passworts den Pfad angeben, in dem das Passwort in Vault gespeichert ist. Beim Speichern des Passworts müssen wir das Passwort und den Speicherpfad angeben.

Zusätzlich zu Passwörtern können wir auch andere sensible Informationen speichern und abrufen, wie zum Beispiel API-Schlüssel, Datenbankverbindungszeichenfolgen und mehr.

Zusammenfassung:
In diesem Artikel haben wir gelernt, wie man Vault in Golang-Anwendungen verwendet, um Passwörter zu speichern und darauf zuzugreifen. Durch den Einsatz von Vault können wir vertrauliche Informationen sicherer verwalten und sicherstellen, dass nur autorisierte Benutzer Zugriff darauf haben. Durch die oben genannten Codebeispiele können wir Vault problemlos in das Golang-Projekt integrieren und unsere sensiblen Informationen schützen. Ich hoffe, dieser Artikel hilft Ihnen dabei, Ihre Passwörter und vertraulichen Informationen besser zu verwalten.

Das obige ist der detaillierte Inhalt vonSchlüsselverwaltung in Golang: Verwendung von Vault zum Speichern und Zugreifen auf Passwörter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn