Freigeben über


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

  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