Rumah > pembangunan bahagian belakang > Golang > Bina aplikasi gred perusahaan yang selamat dengan Golang dan Vault

Bina aplikasi gred perusahaan yang selamat dengan Golang dan Vault

PHPz
Lepaskan: 2023-07-19 20:21:12
asal
1134 orang telah melayarinya

Bina aplikasi peringkat perusahaan yang selamat menggunakan Golang dan Vault

Dengan pembangunan Internet, keselamatan aplikasi peringkat perusahaan menjadi semakin penting. Apabila membangunkan aplikasi, kita perlu mempertimbangkan cara melindungi data dan kelayakan pengguna, serta cara berinteraksi dengan sistem luaran dengan selamat. Dalam artikel ini, kami menerangkan cara membina aplikasi gred perusahaan yang selamat menggunakan Golang dan Vault serta menyediakan contoh kod untuk menggambarkan pelaksanaan.

  1. Apakah itu Vault?

Vault ialah alat sumber terbuka yang dibangunkan oleh HashiCorp untuk menyimpan dan mengurus bukti kelayakan dengan selamat seperti kata laluan, kunci API, bukti kelayakan pangkalan data, dsb. Bilik kebal mempunyai ciri yang kaya, termasuk penyulitan automatik data, penciptaan bukti kelayakan dinamik dan kitar semula, kawalan versi kelayakan dan kawalan akses yang terperinci. Dengan menggunakan Vault, kami boleh menyimpan data sensitif di lokasi yang selamat dan mendapatkannya semula apabila diperlukan.

  1. Menggunakan Bilik Kebal untuk Pengesahan dan Keizinan

Dalam aplikasi peringkat perusahaan, pengesahan dan kebenaran adalah sangat penting. Dengan menggunakan Vault, kami boleh melaksanakan mekanisme pengesahan dan kebenaran yang selamat dan fleksibel. Berikut ialah contoh kod untuk pengesahan menggunakan 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!")
}
Salin selepas log masuk

Kod di atas menunjukkan cara menggunakan kaedah pengesahan Userpass Vault untuk mengesahkan kelayakan pengguna. Dengan memanggil kaedah client.Logical().Write(), kami boleh menyerahkan permintaan pengesahan kepada Vault, menghantar nama pengguna dan kata laluan sebagai parameter. Jika pengesahan berjaya, kami akan mendapat respons yang mengandungi maklumat pengesahan dan boleh menggunakannya untuk pengesahan kebenaran dalam permintaan seterusnya. 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))
}
Salin selepas log masuk

上述代码演示了如何使用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))
}
Salin selepas log masuk

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

    Gunakan Vault untuk operasi penyulitan dan penyahsulitan

    Dalam aplikasi peringkat perusahaan, melindungi kerahsiaan data pengguna adalah sangat penting. Dengan menggunakan Vault, kami boleh melaksanakan penyulitan automatik dan penyahsulitan data sensitif untuk memastikan keselamatan data. Berikut ialah contoh kod yang menggunakan Vault untuk penyulitan dan penyahsulitan:

    rrreee

    Kod di atas menunjukkan cara menggunakan kaedah penyulitan Transit Vault untuk menyulitkan dan menyahsulit data. Dengan memanggil kaedah client.Logical().Write(), kami boleh menyerahkan permintaan penyulitan atau penyahsulitan kepada Vault dan lulus parameter yang berkaitan. Untuk operasi penyulitan, kami perlu menyediakan data teks biasa sebagai parameter, manakala untuk operasi penyahsulitan, kami perlu menyediakan data teks sifir. Dengan cara ini, kami boleh melindungi kerahsiaan data sensitif sambil membenarkan aplikasi melakukan operasi selamat pada data tersebut.

      🎜Gunakan Vault untuk pengurusan kelayakan dinamik🎜🎜🎜Dalam aplikasi peringkat perusahaan, menyediakan bukti kelayakan kepada sistem luaran ialah keperluan biasa. Dengan menggunakan Vault, kami boleh mencipta, mengitar semula dan memperbaharui bukti kelayakan dinamik untuk memastikan keselamatan dan kesahihan bukti kelayakan. Berikut ialah contoh kod untuk menggunakan Vault untuk pengurusan kelayakan dinamik: 🎜rrreee🎜Kod di atas menunjukkan cara menggunakan ciri Rahsia Dinamik Vault untuk mencipta bukti kelayakan dinamik. Dengan memanggil kaedah client.Logical().Write() dan menentukan laluan kelayakan yang sepadan, kami boleh mencipta bukti kelayakan dinamik dalam Vault. Dalam operasi seterusnya, kami boleh mendapatkan nama pengguna dan kata laluan yang diperlukan oleh aplikasi daripada nilai pulangan kelayakan dan menggunakannya untuk menyambung ke sistem luaran. 🎜🎜Ringkasan🎜🎜Artikel ini menerangkan cara membina aplikasi gred perusahaan yang selamat menggunakan Golang dan Vault. Dengan menggunakan Vault, kami boleh melaksanakan fungsi seperti pengesahan dan kebenaran, penyulitan dan penyahsulitan serta pengurusan kelayakan dinamik untuk melindungi keselamatan data dan bukti kelayakan pengguna. Dalam amalan, kami boleh mengkonfigurasi dan menggunakan fungsi Vault secara fleksibel mengikut keperluan dan senario sebenar untuk memenuhi keperluan keselamatan aplikasi peringkat perusahaan. 🎜🎜Saya harap artikel ini bermanfaat kepada anda, terima kasih kerana membaca! 🎜

Atas ialah kandungan terperinci Bina aplikasi gred perusahaan yang selamat dengan Golang dan Vault. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan