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
- Een Azure-abonnement (u kunt een gratis abonnement maken).
- Go geïnstalleerd: versie 1.18 of hoger
- Azure-CLI
Meld u aan bij het Azure Portal
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.
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