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

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

  1. 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.

  2. Masuk ke portal Azure dengan kredensial akun Azure Anda.

Buat grup sumber daya dan instans brankas kunci

Jalankan perintah Azure CLI berikut:

az group create --name quickstart-rg --location eastus
az keyvault create --name quickstart-kv --resource-group quickstart-rg

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"

    "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 := os.Getenv("AZURE_KEY_VAULT_URI")

    // 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")
}

Jalankan kode

  1. 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
    
  2. 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

Langkah berikutnya