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
- En Azure-prenumeration. Om du inte redan har en prenumeration kan du skapa en kostnadsfritt.
- Go version 1.18 eller senare, installerad.
- Azure CLI, installerat.
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
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.
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
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
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