Bagikan melalui


Mulai Cepat: Pustaka klien kunci Azure Key Vault untuk Go

Dalam mulai cepat ini, Anda akan belajar menggunakan Azure SDK untuk Go untuk membuat, mengambil, memperbarui, mencantumkan, dan menghapus kunci dari Azure Key Vault.

Azure Key Vault adalah layanan awan yang berfungsi sebagai penyimpanan rahasia yang aman. Anda dapat menyimpan kunci, kata sandi, sertifikat, dan rahasia lainnya dengan aman. Untuk informasi selengkapnya tentang Key Vault, Anda dapat meninjau Gambaran Umum.

Ikuti panduan ini untuk mempelajari cara menggunakan paket azkeys untuk mengelola kunci Azure Key Vault Anda menggunakan Go.

Prasyarat

Siapkan lingkungan Anda

  1. Masuk ke Azure.

    az login
    
  2. Membuat grup sumber daya baru.

    az group create --name quickstart-rg --location eastus
    
  3. Sebarkan instans kunci brankas baru.

    az keyvault create --name <keyVaultName> --resource-group quickstart-rg
    

    Ganti <keyVaultName> dengan nama yang unik di seluruh Azure. Anda biasanya menggunakan nama pribadi atau perusahaan bersama dengan nomor dan pengidentifikasi lain.

  4. Membuat modul Go baru dan menginstal paket

    go mod init quickstart-keys
    go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
    go get -u github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys
    

Buat kode sampel

Buat file bernama main.go dan salin kode berikut ke dalam file:

package main

import (
	"context"
	"fmt"
	"log"
	"os"

	"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys"
)

func main() {
	keyVaultName := os.Getenv("KEY_VAULT_NAME")
	keyVaultUrl := fmt.Sprintf("https://%s.vault.azure.net/", keyVaultName)

	// create credential
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
		log.Fatalf("failed to obtain a credential: %v", err)
	}

	// create azkeys client
	client, err := azkeys.NewClient(keyVaultUrl, cred, nil)
	if err != nil {
		log.Fatal(err)
	}

	// create RSA Key
	rsaKeyParams := azkeys.CreateKeyParameters{
		Kty:     to.Ptr(azkeys.JSONWebKeyTypeRSA),
		KeySize: to.Ptr(int32(2048)),
	}
	rsaResp, err := client.CreateKey(context.TODO(), "new-rsa-key", rsaKeyParams, nil)
	if err != nil {
		log.Fatalf("failed to create rsa key: %v", err)
	}
	fmt.Printf("New RSA key ID: %s\n", *rsaResp.Key.KID)

	// create EC Key
	ecKeyParams := azkeys.CreateKeyParameters{
		Kty:   to.Ptr(azkeys.JSONWebKeyTypeEC),
		Curve: to.Ptr(azkeys.JSONWebKeyCurveNameP256),
	}
	ecResp, err := client.CreateKey(context.TODO(), "new-ec-key", ecKeyParams, nil)
	if err != nil {
		log.Fatalf("failed to create ec key: %v", err)
	}
	fmt.Printf("New EC key ID: %s\n", *ecResp.Key.KID)

	// list all vault keys
	fmt.Println("List all vault keys:")
	pager := client.NewListKeysPager(nil)
	for pager.More() {
		page, err := pager.NextPage(context.TODO())
		if err != nil {
			log.Fatal(err)
		}
		for _, key := range page.Value {
			fmt.Println(*key.KID)
		}
	}

	// update key properties to disable key
	updateParams := azkeys.UpdateKeyParameters{
		KeyAttributes: &azkeys.KeyAttributes{
			Enabled: to.Ptr(false),
		},
	}
	// an empty string version updates the latest version of the key
	version := ""
	updateResp, err := client.UpdateKey(context.TODO(), "new-rsa-key", version, updateParams, nil)
	if err != nil {
		panic(err)
	}
	fmt.Printf("Key %s Enabled attribute set to: %t\n", *updateResp.Key.KID, *updateResp.Attributes.Enabled)

	// delete the created keys
	for _, keyName := range []string{"new-rsa-key", "new-ec-key"} {
		// DeleteKey returns when Key Vault has begun deleting the key. That can take several
		// seconds to complete, so it may be necessary to wait before performing other operations
		// on the deleted key.
		delResp, err := client.DeleteKey(context.TODO(), keyName, nil)
		if err != nil {
			panic(err)
		}
		fmt.Printf("Successfully deleted key %s", *delResp.Key.KID)
	}
}

Jalankan kode

Sebelum Anda menjalankan kode, buat variabel lingkungan bernama KEY_VAULT_NAME. Atur nilai variabel lingkungan ke nama Azure Key Vault yang dibuat sebelumnya.

export KEY_VAULT_NAME=quickstart-kv

Jalankan perintah berikut go run untuk menjalankan aplikasi:

go run main.go
Key ID: https://quickstart-kv.vault.azure.net/keys/new-rsa-key4/f78fe1f34b064934bac86cc8c66a75c3: Key Type: RSA
Key ID: https://quickstart-kv.vault.azure.net/keys/new-ec-key2/10e2cec51d1749c0a26aab784808cfaf: Key Type: EC
List all vault keys:
https://quickstart-kv.vault.azure.net/keys/new-ec-key
https://quickstart-kv.vault.azure.net/keys/new-ec-key1
https://quickstart-kv.vault.azure.net/keys/new-ec-key2
https://quickstart-kv.vault.azure.net/keys/new-rsa-key4
Enabled set to: false
Successfully deleted key https://quickstart-kv.vault.azure.net/keys/new-rsa-key4/f78fe1f34b064934bac86cc8c66a75c3

Catatan

Output ini hanya untuk tujuan informasi. Nilai pengembalian Anda dapat bervariasi berdasarkan langganan Azure dan Azure Key Vault Anda.

Contoh kode

Lihat dokumentasi modul untuk mendapatkan contoh lainnya.

Membersihkan sumber daya

Jalankan perintah berikut untuk menghapus grup sumber daya dan semua sumber daya yang tersisa:

az group delete --resource-group quickstart-rg

Langkah berikutnya