Delen via


Quickstart: Clientbibliotheek voor Sleutels van Azure Key Vault voor Go

In deze quickstart leert u hoe u de Azure SDK voor Go gebruikt om Azure Key Vault-sleutels te maken, op te halen, bij te werken, weer te geven en te verwijderen.

Azure Key Vault is een cloudservice die werkt als een beveiligd geheimenarchief. U kunt veilig sleutels, wachtwoorden, certificaten en andere geheime informatie opslaan. Raadpleeg het Overzicht voor meer informatie over Key Vault.

Volg deze handleiding voor meer informatie over het gebruik van het azkeys-pakket voor het beheren van uw Azure Key Vault-sleutels met behulp van Go.

Prerequisites

Meld u aan bij het Azure Portal

  1. Voer in de Azure CLI de volgende opdracht uit:

    az login
    

    Als de Azure CLI uw standaardbrowser kan openen, wordt de browser geopend op de aanmeldingspagina van Azure Portal.

    Als de pagina niet automatisch wordt geopend, gaat u naar https://aka.ms/deviceloginen voert u vervolgens de autorisatiecode in die wordt weergegeven in uw terminal.

  2. Meld u aan bij Azure Portal met uw accountreferenties.

Een resourcegroep en sleutelkluis maken

In deze quickstart wordt een vooraf gemaakte Azure-sleutelkluis gebruikt. U kunt een sleutelkluis maken door de stappen in deze quickstarts te volgen:

U kunt deze Azure CLI-opdrachten ook uitvoeren.

Important

Elke sleutelkluis moet een unieke naam hebben. Vervang <uw unieke sleutelkluisnaam> door de naam van uw sleutelkluis in de volgende voorbeelden.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization

Toegang verlenen tot uw sleutelkluis

Als u machtigingen wilt verkrijgen voor uw sleutelkluis via op rollen gebaseerd toegangsbeheer (RBAC), wijst u een rol toe aan uw UPN (User Principal Name) met behulp van de Azure CLI-opdracht az role assignment create.

az role assignment create --role "Key Vault Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Vervang <upn>, <subscription-id>, <resource-group-name> en <your-unique-keyvault-name> door uw werkelijke waarden. Uw UPN heeft doorgaans de indeling van een e-mailadres (bijvoorbeeld username@domain.com).

Een nieuwe Go-module maken en pakketten installeren

Voer de volgende Go-opdrachten uit:

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

De voorbeeldcode maken

Maak een bestand met de naam main.go en kopieer de volgende code naar het bestand:

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

De code uitvoeren

Voordat u de code uitvoert, maakt u een omgevingsvariabele met de naam KEY_VAULT_NAME. Stel de waarde van de omgevingsvariabele in op de naam van de Azure Key Vault die u eerder hebt gemaakt.

export KEY_VAULT_NAME=quickstart-kv

Voer vervolgens de volgende go run opdracht uit om de app uit te voeren:

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

Note

De uitvoer is alleen bedoeld ter informatie. Uw retourwaarden kunnen variëren op basis van uw Azure-abonnement en Azure Key Vault.

Codevoorbeelden

Zie de moduledocumentatie voor meer voorbeelden.

Resources opschonen

Voer de volgende opdracht uit om de resourcegroep en alle resterende resources te verwijderen:

az group delete --resource-group quickstart-rg

Volgende stappen