Freigeben über


Schnellstart: Verwalten von Geheimnissen mithilfe der Go-Clientbibliothek für Azure Key Vault

In dieser Schnellstartanleitung erfahren Sie, wie Sie das Azure SDK zum Erstellen, Abrufen, Auflisten und Löschen geheimer Schlüssel aus einem Azure Key Vault verwenden.

Sie können verschiedene Objekttypen in einem Azure Key Vault 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.

Prerequisites

Setup

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
    

    Wenn die Azure CLI Ihren Standardbrowser öffnen kann, erfolgt dies auf der Anmeldeseite des Azure-Portals.

    Wenn die Seite nicht automatisch geöffnet wird, wechseln Sie zu https://aka.ms/devicelogin, und geben Sie dann den Autorisierungscode ein, der in Ihrem Terminal angezeigt wird.

  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. Sie können einen Schlüsseltresor erstellen, indem Sie die Schritte in den folgenden Schnellstarts ausführen:

Alternativ können Sie diese Azure CLI-Befehle ausführen.

Important

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 über die rollenbasierte Zugriffskontrolle (Role-Based Access Control, RBAC) Berechtigungen für Ihren Schlüsseltresor zu erhalten, weisen Sie Ihrem Benutzerprinzipalname (User Principal Name, UPN) mit dem Azure CLI-Befehl 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

Sample code

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
    

Code examples

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

Next steps