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. U kunt het Overzicht raadplegen 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.

Vereisten

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, gebeurt dit 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 met behulp van de stappen in de quickstart voor Azure CLI, de quickstart voor Azure PowerShell of de quickstart voor de Azure-portal.

U kunt deze Azure CLI- of Azure PowerShell-opdrachten ook uitvoeren.

Belangrijk

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

Notitie

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