Quickstart: Geheimen beheren met behulp van de Azure Key Vault Go-clientbibliotheek
In deze quickstart leert u hoe u de Azure SDK voor Go gebruikt om geheimen te maken, op te halen, weer te geven en te verwijderen uit een Azure-sleutelkluis.
U kunt verschillende objecttypen opslaan in een Azure-sleutelkluis. Wanneer u geheimen opslaat in een sleutelkluis, hoeft u ze niet op te slaan in uw code, waardoor de beveiliging van uw toepassingen wordt verbeterd.
Ga aan de slag met het azsecrets-pakket en leer hoe u uw geheimen beheert in een Azure Key Vault met behulp van Go.
Vereisten
- Een Azure-abonnement. Als u nog geen abonnement hebt, kunt u er gratis een maken.
- Go versie 1.18 of hoger, geïnstalleerd.
- De Azure CLI is geïnstalleerd.
Instellingen
Voor deze quickstart gebruikt u het azidentity-pakket om te verifiëren bij Azure met behulp van de Azure CLI. Zie Azure-verificatie met de Azure SDK voor Go voor meer informatie over de verschillende verificatiemethoden.
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 Secrets 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 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
Voorbeeldcode
Maak een bestand met de naam main.go en plak de volgende code erin:
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")
}
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 sleutelkluis die u eerder hebt gemaakt.export KEY_VAULT_NAME=quickstart-kv
Voer de volgende opdracht uit om de Go-app te starten:
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
Codevoorbeelden
Zie de moduledocumentatie voor meer voorbeelden.
Resources opschonen
Verwijder de resourcegroep en alle resterende resources door de volgende opdracht uit te voeren:
az group delete --resource-group quickstart-rg