Szybki start: biblioteka klienta kluczy usługi Azure Key Vault dla języka Go
W tym przewodniku Szybki start dowiesz się, jak używać zestawu Azure SDK dla języka Go do tworzenia, pobierania, aktualizowania, wyświetlania listy i usuwania kluczy usługi Azure Key Vault.
Azure Key Vault to usługa w chmurze, która działa jako bezpieczny magazyn wpisów tajnych. Możesz bezpiecznie przechowywać klucze, hasła, certyfikaty oraz inne wpisy tajne. Aby uzyskać więcej informacji na temat usługi Key Vault, możesz zapoznać się z omówieniem.
Postępuj zgodnie z tym przewodnikiem, aby dowiedzieć się, jak zarządzać kluczami usługi Azure Key Vault przy użyciu języka Go za pomocą pakietu azkeys.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie.
- Zainstalowano język Go: wersja 1.18 lub nowsza
- Interfejs wiersza polecenia platformy Azure
Konfigurowanie środowiska
Zaloguj się do platformy Azure.
az login
Tworzenie nowej grupy zasobów
az group create --name quickstart-rg --location eastus
Wdróż nowe wystąpienie magazynu kluczy.
az keyvault create --name <keyVaultName> --resource-group quickstart-rg
Zastąp
<keyVaultName>
ciąg nazwą, która jest unikatowa na całej platformie Azure. Zazwyczaj używasz swojej osobistej lub firmowej nazwy wraz z innymi numerami i identyfikatorami.Tworzenie nowego modułu języka Go i instalowanie pakietów
go mod init quickstart-keys go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity go get -u github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys
Tworzenie przykładowego kodu
Utwórz plik o nazwie main.go i skopiuj następujący kod do pliku:
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys"
)
func main() {
keyVaultName := os.Getenv("KEY_VAULT_NAME")
keyVaultUrl := fmt.Sprintf("https://%s.vault.azure.net/", keyVaultName)
// create credential
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
// create azkeys client
client, err := azkeys.NewClient(keyVaultUrl, cred, nil)
if err != nil {
log.Fatal(err)
}
// create RSA Key
rsaKeyParams := azkeys.CreateKeyParameters{
Kty: to.Ptr(azkeys.JSONWebKeyTypeRSA),
KeySize: to.Ptr(int32(2048)),
}
rsaResp, err := client.CreateKey(context.TODO(), "new-rsa-key", rsaKeyParams, nil)
if err != nil {
log.Fatalf("failed to create rsa key: %v", err)
}
fmt.Printf("New RSA key ID: %s\n", *rsaResp.Key.KID)
// create EC Key
ecKeyParams := azkeys.CreateKeyParameters{
Kty: to.Ptr(azkeys.JSONWebKeyTypeEC),
Curve: to.Ptr(azkeys.JSONWebKeyCurveNameP256),
}
ecResp, err := client.CreateKey(context.TODO(), "new-ec-key", ecKeyParams, nil)
if err != nil {
log.Fatalf("failed to create ec key: %v", err)
}
fmt.Printf("New EC key ID: %s\n", *ecResp.Key.KID)
// list all vault keys
fmt.Println("List all vault keys:")
pager := client.NewListKeysPager(nil)
for pager.More() {
page, err := pager.NextPage(context.TODO())
if err != nil {
log.Fatal(err)
}
for _, key := range page.Value {
fmt.Println(*key.KID)
}
}
// update key properties to disable key
updateParams := azkeys.UpdateKeyParameters{
KeyAttributes: &azkeys.KeyAttributes{
Enabled: to.Ptr(false),
},
}
// an empty string version updates the latest version of the key
version := ""
updateResp, err := client.UpdateKey(context.TODO(), "new-rsa-key", version, updateParams, nil)
if err != nil {
panic(err)
}
fmt.Printf("Key %s Enabled attribute set to: %t\n", *updateResp.Key.KID, *updateResp.Attributes.Enabled)
// delete the created keys
for _, keyName := range []string{"new-rsa-key", "new-ec-key"} {
// DeleteKey returns when Key Vault has begun deleting the key. That can take several
// seconds to complete, so it may be necessary to wait before performing other operations
// on the deleted key.
delResp, err := client.DeleteKey(context.TODO(), keyName, nil)
if err != nil {
panic(err)
}
fmt.Printf("Successfully deleted key %s", *delResp.Key.KID)
}
}
Uruchamianie kodu
Przed uruchomieniem kodu utwórz zmienną środowiskową o nazwie KEY_VAULT_NAME. Ustaw wartość zmiennej środowiskowej na nazwę utworzonej wcześniej Key Vault Azure.
export KEY_VAULT_NAME=quickstart-kv
Następnie uruchom następujące go run
polecenie, aby uruchomić aplikację:
go run main.go
Key ID: https://quickstart-kv.vault.azure.net/keys/new-rsa-key4/f78fe1f34b064934bac86cc8c66a75c3: Key Type: RSA
Key ID: https://quickstart-kv.vault.azure.net/keys/new-ec-key2/10e2cec51d1749c0a26aab784808cfaf: Key Type: EC
List all vault keys:
https://quickstart-kv.vault.azure.net/keys/new-ec-key
https://quickstart-kv.vault.azure.net/keys/new-ec-key1
https://quickstart-kv.vault.azure.net/keys/new-ec-key2
https://quickstart-kv.vault.azure.net/keys/new-rsa-key4
Enabled set to: false
Successfully deleted key https://quickstart-kv.vault.azure.net/keys/new-rsa-key4/f78fe1f34b064934bac86cc8c66a75c3
Uwaga
Dane wyjściowe są przeznaczone tylko do celów informacyjnych. Wartości zwracane mogą się różnić w zależności od subskrypcji platformy Azure i usługi Azure Key Vault.
Przykłady kodu
Zobacz dokumentację modułu , aby uzyskać więcej przykładów.
Czyszczenie zasobów
Uruchom następujące polecenie, aby usunąć grupę zasobów i wszystkie pozostałe zasoby:
az group delete --resource-group quickstart-rg
Następne kroki
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla