Dela via


Snabbstart: Hantera hemligheter med hjälp av Azure Key Vault Go-klientbiblioteket

I den här snabbstarten får du lära dig hur du använder Azure SDK för Go för att skapa, hämta, lista och ta bort hemligheter från ett Azure-nyckelvalv.

Du kan lagra en mängd olika objekttyper i ett Azure-nyckelvalv. När du lagrar hemligheter i ett nyckelvalv undviker du att behöva lagra dem i koden, vilket förbättrar säkerheten för dina program.

Kom igång med azsecrets-paketet och lär dig hur du hanterar dina hemligheter i ett Azure-nyckelvalv med hjälp av Go.

Förutsättningar

Ställ in

I den här snabbstarten använder du azidentity-paketet för att autentisera till Azure med hjälp av Azure CLI. Mer information om de olika autentiseringsmetoderna finns i Azure-autentisering med Azure SDK för Go.

Logga in på Azure-portalen

  1. Kör följande kommando i Azure CLI:

    az login
    

    Om Azure CLI kan öppna standardwebbläsaren gör den det på inloggningssidan Azure Portal.

    Om sidan inte öppnas automatiskt går du till https://aka.ms/deviceloginoch anger sedan auktoriseringskoden som visas i terminalen.

  2. Logga in på Azure Portal med dina kontoautentiseringsuppgifter.

Skapa en resursgrupp och ett nyckelvalv

Den här snabbstarten använder ett förskapat Azure-nyckelvalv. Du kan skapa ett nyckelvalv genom att följa stegen i Azure CLI-snabbstarten, Azure PowerShell-snabbstarten eller Azure Portal snabbstart.

Du kan också köra dessa Azure CLI- eller Azure PowerShell-kommandon.

Viktigt!

Varje nyckelvalv måste ha ett unikt namn. Ersätt <ditt unika keyvault-name> med namnet på ditt nyckelvalv i följande exempel.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization

Bevilja åtkomst till ditt nyckelvalv

Om du vill få behörigheter till ditt nyckelvalv via rollbaserad åtkomstkontroll (RBAC) tilldelar du en roll till ditt UPN (User Principal Name) med hjälp av Azure CLI-kommandot 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>"

Ersätt <upn>, <subscription-id>, <resource-group-name> och <your-unique-keyvault-name> med dina faktiska värden. Ditt UPN är vanligtvis i formatet för en e-postadress (t.ex. username@domain.com).

Skapa en ny Go-modul och installera paket

Kör följande Go-kommandon:

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

Exempelkod

Skapa en fil med namnet main.go och klistra sedan in följande kod i den:

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")
}

Kör koden

  1. Innan du kör koden skapar du en miljövariabel med namnet KEY_VAULT_NAME. Ange miljövariabelvärdet till namnet på nyckelvalvet som du skapade tidigare.

    export KEY_VAULT_NAME=quickstart-kv
    
  2. Starta Go-appen genom att köra följande kommando:

    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
    

Kodexempel

Se moduldokumentationen för fler exempel.

Rensa resurser

Ta bort resursgruppen och alla dess återstående resurser genom att köra följande kommando:

az group delete --resource-group quickstart-rg

Nästa steg