Rumah >pembangunan bahagian belakang >Golang >Pengurusan Utama di Golang: Menggunakan Vault untuk Menyimpan dan Mengakses Kata Laluan

Pengurusan Utama di Golang: Menggunakan Vault untuk Menyimpan dan Mengakses Kata Laluan

王林
王林asal
2023-07-17 12:09:151515semak imbas

Pengurusan utama di Golang: Gunakan Vault untuk menyimpan dan mengakses kata laluan

Pengenalan:
Dalam pembangunan harian, kita selalunya perlu menggunakan kata laluan dan maklumat sensitif untuk menyambung ke pangkalan data, mengakses API, dsb. Walau bagaimanapun, pengekodan keras kata laluan dan maklumat sensitif ini terus ke dalam kod bukanlah amalan yang selamat. Untuk melindungi maklumat sensitif ini dengan lebih baik, kami boleh menggunakan Vault sebagai alat pengurusan utama. Artikel ini akan memperkenalkan cara menggunakan Vault di Golang untuk menyimpan dan mengakses kata laluan dengan selamat.

Apakah itu Vault?
Vault ialah alat berkuasa yang dibangunkan oleh HashiCorp. Ia menyediakan cara selamat untuk mengurus maklumat sensitif seperti kata laluan, kunci API, dsb. Vault menggunakan dasar storan dan akses yang disulitkan untuk melindungi maklumat sensitif ini, memastikan hanya pengguna yang diberi kuasa boleh mengaksesnya.

Menggunakan Vault di Golang:
Mula-mula, kita perlu memasang Vault secara setempat dan mulakan pelayan Vault. Pemasangan bilik kebal dan dokumentasi permulaan boleh diperolehi daripada tapak web rasmi https://www.vaultproject.io/.

Setelah pelayan Vault dimulakan, kami boleh menggunakan VaultClient dalam aplikasi Golang untuk mendapatkan dan menyimpan kata laluan.

Pertama, kami perlu menambah kebergantungan berikut pada projek Golang kami:

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

Seterusnya, kami perlu menyediakan alamat dan maklumat pengesahan pelayan Vault:

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

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

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

Kini, kami boleh menggunakan VaultClient untuk mendapatkan dan menyimpan kata laluan . Berikut ialah beberapa contoh kod:

Dapatkan kata laluan daripada 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
}

Simpan kata laluan ke dalam 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
}

Seperti yang anda lihat, apabila mendapat kata laluan, kami perlu menentukan laluan tempat kata laluan disimpan dalam Vault. Apabila menyimpan kata laluan, kami perlu menyediakan kata laluan dan laluan storan.

Selain kata laluan, kami juga boleh menyimpan dan mendapatkan maklumat sensitif lain, seperti kunci API, rentetan sambungan pangkalan data dan banyak lagi.

Ringkasan:
Dalam artikel ini, kami mempelajari cara menggunakan Vault dalam aplikasi Golang untuk menyimpan dan mengakses kata laluan. Dengan menggunakan Vault, kami boleh mengurus maklumat sensitif dengan lebih selamat dan memastikan bahawa hanya pengguna yang dibenarkan mempunyai akses kepadanya. Melalui contoh kod di atas, kami boleh menyepadukan Vault dengan mudah dalam projek Golang dan melindungi maklumat sensitif kami. Saya harap artikel ini membantu anda mengurus kata laluan dan maklumat sensitif anda dengan lebih baik.

Atas ialah kandungan terperinci Pengurusan Utama di Golang: Menggunakan Vault untuk Menyimpan dan Mengakses Kata Laluan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn