Bagikan melalui


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

  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