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

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.

  1. 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.

  2. Melden Sie sich mit den Anmeldeinformationen Ihres Kontos beim Azure-Portal an.

Erstellen einer Ressourcengruppe und einer Key Vault-Instanz

Führen Sie über die Azure-Befehlszeilenschnittstelle folgende Befehle aus:

az group create --name quickstart-rg --location eastus
az keyvault create --name quickstart-kv --resource-group quickstart-rg

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"

    "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 := os.Getenv("AZURE_KEY_VAULT_URI")

    // 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

  1. 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
    
  2. 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

Nächste Schritte