Szybki start: zarządzanie wpisami tajnymi przy użyciu biblioteki klienta języka Go usługi Azure Key Vault
W tym przewodniku Szybki start dowiesz się, jak używać zestawu Azure SDK dla języka Go do tworzenia, pobierania, wyświetlania listy i usuwania wpisów tajnych z magazynu kluczy platformy Azure.
W magazynie kluczy platformy Azure można przechowywać różne typy obiektów. Podczas przechowywania wpisów tajnych w magazynie kluczy należy unikać konieczności przechowywania ich w kodzie, co pomaga zwiększyć bezpieczeństwo aplikacji.
Rozpocznij pracę z pakietem azsecrets i dowiedz się, jak zarządzać wpisami tajnymi w magazynie kluczy platformy Azure przy użyciu języka Go.
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz jeszcze subskrypcji, możesz go utworzyć bezpłatnie.
- Zainstaluj wersję 1.18 lub nowszą.
- Zainstalowany interfejs wiersza polecenia platformy Azure.
Ustawienia
Na potrzeby tego przewodnika Szybki start użyjesz pakietu azidentity do uwierzytelniania na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure. Aby dowiedzieć się więcej o różnych metodach uwierzytelniania, zobacz Azure Authentication with the Azure SDK for Go (Uwierzytelnianie platformy Azure za pomocą zestawu Azure SDK dla języka Go).
Zaloguj się do witryny Azure Portal.
W interfejsie wiersza polecenia platformy Azure uruchom następujące polecenie:
az login
Jeśli interfejs wiersza polecenia platformy Azure może otworzyć domyślną przeglądarkę, zrobi to na stronie logowania w witrynie Azure Portal.
Jeśli strona nie zostanie otwarta automatycznie, przejdź do https://aka.ms/deviceloginstrony , a następnie wprowadź kod autoryzacji wyświetlany w terminalu.
Zaloguj się do witryny Azure Portal przy użyciu poświadczeń konta.
Tworzenie grupy zasobów i magazynu kluczy
W tym przewodniku Szybki start jest używany wstępnie utworzony magazyn kluczy platformy Azure. Magazyn kluczy można utworzyć, wykonując kroki opisane w przewodniku Szybki start interfejsu wiersza polecenia platformy Azure, przewodniku Szybki start dla programu Azure PowerShell lub przewodniku Szybki start w witrynie Azure Portal.
Alternatywnie możesz uruchomić te polecenia interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.
Ważne
Każdy magazyn kluczy musi mieć unikatową nazwę. Zastąp <ciąg your-unique-keyvault-name> nazwą magazynu kluczy w poniższych przykładach.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Udzielanie dostępu do magazynu kluczy
Aby uzyskać uprawnienia do magazynu kluczy za pomocą kontroli dostępu opartej na rolach (RBAC), przypisz rolę do głównej nazwy użytkownika (UPN) przy użyciu polecenia az role assignment create interfejsu wiersza polecenia platformy Azure.
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>"
Zastąp <wartości upn>, <subscription-id>, <resource-group-name> i <your-unique-keyvault-name> rzeczywistymi wartościami. Nazwa UPN będzie zwykle mieć format adresu e-mail (np. username@domain.com).
Tworzenie nowego modułu języka Go i instalowanie pakietów
Uruchom następujące polecenia języka Go:
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
Przykładowy kod
Utwórz plik o nazwie main.go, a następnie wklej do niego następujący kod:
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")
}
Uruchamianie kodu
Przed uruchomieniem kodu utwórz zmienną środowiskową o nazwie
KEY_VAULT_NAME
. Ustaw wartość zmiennej środowiskowej na nazwę utworzonego wcześniej magazynu kluczy.export KEY_VAULT_NAME=quickstart-kv
Aby uruchomić aplikację Języka Go, uruchom następujące polecenie:
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
Przykłady kodu
Więcej przykładów można znaleźć w dokumentacji modułu.
Czyszczenie zasobów
Usuń grupę zasobów i wszystkie pozostałe zasoby, uruchamiając następujące polecenie:
az group delete --resource-group quickstart-rg