Mulai cepat: Mengelola rahasia dengan menggunakan pustaka klien Azure Key Vault Go
Dalam mulai cepat ini, Anda akan belajar menggunakan Azure SDK untuk Go untuk membuat, mengambil, mencantumkan, dan menghapus rahasia dari brankas kunci Azure.
Anda dapat menyimpan berbagai jenis objek di brankas kunci Azure. Ketika Anda menyimpan rahasia di brankas kunci, Anda menghindari keharusan untuk menyimpannya dalam kode Anda, yang membantu meningkatkan keamanan aplikasi Anda.
Mulai dengan paket azsecrets dan pelajari cara mengelola rahasia Anda di brankas kunci Azure menggunakan Go.
Prasyarat
- Langganan Azure. Jika belum memiliki langganan, Anda dapat membuatnya secara gratis.
- Go versi 1.18 atau yang lebih baru, diinstal.
- Azure CLI, diinstal.
Siapkan
Untuk tujuan mulai cepat ini, Anda menggunakan paket azidentity untuk mengautentikasi ke Azure dengan menggunakan Azure CLI. Untuk mempelajari tentang berbagai metode autentikasi, lihat Autentikasi Azure dengan Azure SDK untuk Go.
Masuk ke portal Microsoft Azure.
Di Azure CLI, jalankan perintah berikut ini:
az login
Jika Azure CLI dapat membuka browser default Anda, CLI akan melakukannya pada halaman masuk portal Azure.
Jika halaman tidak terbuka secara otomatis, buka https://aka.ms/devicelogin, lalu masukkan kode otorisasi yang ditampilkan di terminal Anda.
Masuk ke portal Azure dengan kredensial akun Azure Anda.
Buat grup sumber daya dan brankas kunci
Mulai cepat ini menggunakan brankas kunci Azure yang dibuat sebelumnya. Anda dapat membuat key vault dengan mengikuti langkah-langkah di mulai cepat Azure CLI, mulai cepat Azure PowerShell, atau mulai cepat portal Microsoft Azure.
Atau, Anda dapat menjalankan perintah Azure CLI atau Azure PowerShell ini.
Penting
Setiap key vault harus memiliki nama yang unik. Ganti <your-unique-keyvault-name> dengan nama brankas kunci Anda dalam contoh berikut.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Memberikan akses ke brankas kunci Anda
Untuk mendapatkan izin ke brankas kunci Anda melalui Kontrol Akses Berbasis Peran (RBAC), tetapkan peran ke "Nama Prinsipal Pengguna" (UPN) Anda menggunakan perintah Azure CLI az role assignment create.
az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Ganti <upn>, <subscription-id>, <resource-group-name> , dan <your-unique-keyvault-name> dengan nilai aktual Anda. UPN Anda biasanya akan dalam format alamat email (misalnya, username@domain.com).
Membuat modul Go baru dan menginstal paket
Jalankan perintah Go berikut:
go mod init kvSecrets
go get -u github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets
go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
Kode Sampel
Buat file bernama main.go dan salin kode berikut ke dalam file tersebut:
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets"
)
func main() {
mySecretName := "secretName01"
mySecretValue := "secretValue"
vaultURI := fmt.Sprintf("https://%s.vault.azure.net/", os.Getenv("KEY_VAULT_NAME"))
// Create a credential using the NewDefaultAzureCredential type.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
// Establish a connection to the Key Vault client
client, err := azsecrets.NewClient(vaultURI, cred, nil)
// Create a secret
params := azsecrets.SetSecretParameters{Value: &mySecretValue}
_, err = client.SetSecret(context.TODO(), mySecretName, params, nil)
if err != nil {
log.Fatalf("failed to create a secret: %v", err)
}
// Get a secret. An empty string version gets the latest version of the secret.
version := ""
resp, err := client.GetSecret(context.TODO(), mySecretName, version, nil)
if err != nil {
log.Fatalf("failed to get the secret: %v", err)
}
fmt.Printf("secretValue: %s\n", *resp.Value)
// List secrets
pager := client.NewListSecretsPager(nil)
for pager.More() {
page, err := pager.NextPage(context.TODO())
if err != nil {
log.Fatal(err)
}
for _, secret := range page.Value {
fmt.Printf("Secret ID: %s\n", *secret.ID)
}
}
// Delete a secret. DeleteSecret returns when Key Vault has begun deleting the secret.
// That can take several seconds to complete, so it may be necessary to wait before
// performing other operations on the deleted secret.
delResp, err := client.DeleteSecret(context.TODO(), mySecretName, nil)
if err != nil {
log.Fatalf("failed to delete secret: %v", err)
}
fmt.Println(delResp.ID.Name() + " has been deleted")
}
Menjalankan kode
Sebelum Anda menjalankan kode, buat variabel lingkungan bernama
KEY_VAULT_NAME
. Atur nilai variabel lingkungan ke nama brankas kunci yang Anda buat sebelumnya.export KEY_VAULT_NAME=quickstart-kv
Untuk menjalankan aplikasi Go, jalankan perintah berikut:
go run main.go
secretValue: createdWithGO Secret ID: https://quickstart-kv.vault.azure.net/secrets/quickstart-secret Secret ID: https://quickstart-kv.vault.azure.net/secrets/secretName quickstart-secret has been deleted
Contoh kode
Lihat dokumentasi modul untuk mendapatkan contoh lainnya.
Membersihkan sumber daya
Hapus grup sumber daya dan semua sumber daya yang tersisa dengan menjalankan perintah berikut:
az group delete --resource-group quickstart-rg