Schnellstart: Verwalten von Geheimnissen mithilfe der Go-Clientbibliothek für Azure Key Vault
In diesem Schnellstart erfahren Sie, wie Sie das Azure SDK für Go verwenden, um Geheimnisse in einem Azure-Schlüsseltresor zu erstellen, daraus abzurufen, aufzulisten und zu löschen.
Sie können eine Vielzahl von Objekttypen in einem Azure-Schlüsseltresor speichern. Wenn Sie Geheimnisse in einem Schlüsseltresor speichern, müssen Sie sie nicht in Ihrem Code speichern, was die Sicherheit Ihrer Anwendungen erhöht.
Starten Sie mit dem Paket azsecrets, und erkunden Sie, wie Sie Ihre Geheimnisse in einem Azure-Schlüsseltresor mithilfe von Go verwalten können.
Voraussetzungen
- Ein Azure-Abonnement. Falls Sie noch nicht über ein Abonnement verfügen, können Sie ein kostenloses Konto erstellen.
- Go-Version 1.18 oder höher muss installiert sein.
- Die Azure CLI muss installiert sein.
Einrichten
Für diesen Schnellstart verwenden Sie das Paket azidentity zur Authentifizierung bei Azure mithilfe der Azure CLI. Informationen zu den verschiedenen Authentifizierungsmethoden finden Sie unter Azure-Authentifizierung mit dem Azure SDK für Go.
Melden Sie sich auf dem Azure-Portal an.
Führen Sie in der Azure-Befehlszeilenschnittstelle den folgenden Befehl aus:
az login
Die Azure CLI öffnet Ihren Standardbrowser, sofern sie dazu in der Lage ist, und lädt die Anmeldeseite des Azure-Portals.
Falls die Seite nicht automatisch geöffnet wird, rufen Sie https://aka.ms/devicelogin auf, und geben Sie den in Ihrem Terminal angezeigten Autorisierungscode ein.
Melden Sie sich mit den Anmeldeinformationen Ihres Kontos beim Azure-Portal an.
Erstellen einer Ressourcengruppe und eines Schlüsseltresors
In dieser Schnellstartanleitung wird eine vorab erstellte Azure Key Vault-Instanz verwendet. Eine Anleitung zum Erstellen eines Schlüsseltresors finden Sie unter Schnellstart: Festlegen eines Geheimnisses und Abrufen des Geheimnisses aus Azure Key Vault mithilfe der Azure CLI, Schnellstart: Festlegen eines Geheimnisses und Abrufen des Geheimnisses aus Azure Key Vault mithilfe von PowerShell oder Schnellstart: Festlegen eines Geheimnisses und Abrufen des Geheimnisses aus Azure Key Vault mithilfe des Azure-Portals.
Alternativ können Sie diese Azure CLI- oder Azure PowerShell-Befehle ausführen.
Wichtig
Jeder Schlüsseltresor muss einen eindeutigen Namen haben. Ersetzen Sie in den folgenden Beispielen <your-unique-keyvault-name> durch den Namen Ihres Schlüsseltresors.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Gewähren des Zugriffs auf Ihren Schlüsseltresor
Um Ihrem Benutzerprinzipalnamen (User Principal Name, UPN) über die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) Berechtigungen für Ihren Schlüsseltresor zu gewähren, weisen Sie ihm mithilfe des Azure CLI-Befehls az role assignment create eine Rolle zu.
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>"
Ersetzen Sie <upn>, <subscription-id>, <resource-group-name> und <your-unique-keyvault-name> durch Ihre tatsächlichen Werte. Ihr Benutzerprinzipalname (UPN) hat in der Regel das Format einer E-Mail-Adresse (z. B. username@domain.com).
Erstellen eines neuen Go-Moduls und Installieren von Paketen
Führen Sie die folgenden Go-Befehle aus:
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
Beispielcode
Erstellen Sie eine Datei mit dem Namen main.go, und fügen Sie den folgenden Code in die Datei ein:
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")
}
Ausführen des Codes
Bevor Sie den Code ausführen, erstellen Sie eine Umgebungsvariable namens
KEY_VAULT_NAME
. Legen Sie den Wert der Umgebungsvariablen auf den Namen des zuvor erstellten Schlüsseltresors fest.export KEY_VAULT_NAME=quickstart-kv
Führen Sie den folgenden Befehl aus, um die Go-App auszuführen:
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
Codebeispiele
Weitere Beispiele finden Sie in der Moduldokumentation.
Bereinigen von Ressourcen
Führen Sie den folgenden Befehl aus, um die Ressourcengruppe und alle verbleibenden zugehörigen Ressourcen zu löschen:
az group delete --resource-group quickstart-rg