Démarrage rapide : Bibliothèque de client de clés Azure Key Vault pour Go
Dans ce guide de démarrage rapide, vous apprendrez à utiliser le SDK Azure pour Go pour créer, récupérer, mettre à jour, répertorier et supprimer des clés Azure Key Vault.
Azure Key Vault est un service cloud qui fonctionne comme un magasin des secrets sécurisé. Vous pouvez stocker des clés, des mots de passe, des certificats et d’autres secrets en toute sécurité. Pour plus d’informations sur Key Vault, consultez la présentation.
Suivez ce guide pour apprendre à utiliser le package azkeys pour gérer vos clés Azure Key Vault à l’aide de Go.
Prérequis
- Un abonnement Azure - En créer un gratuitement
- Go installé : Version 1.18 ou ultérieure
- Azure CLI
Configurer votre environnement
Connectez-vous à Azure.
az login
Créez un groupe de ressources.
az group create --name quickstart-rg --location eastus
Déployez une nouvelle instance de coffre de clés.
az keyvault create --name <keyVaultName> --resource-group quickstart-rg
Remplacez
<keyVaultName>
par un nom unique à l’échelle d’Azure. La pratique courante consiste à utiliser son nom ou le nom de son entreprise et à ajouter des chiffres ou des identificateurs.Créer un nouveau module Go et installer des packages
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
Créer l’exemple de code
Créez un fichier nommé « main.go » et copiez-y le code suivant :
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)
}
}
Exécuter le code
Avant d’exécuter le code, créez une variable d’environnement nommée « KEY_VAULT_NAME ». Définissez la valeur de la variable d’environnement en spécifiant le nom du coffre Azure Key Vault créé précédemment.
export KEY_VAULT_NAME=quickstart-kv
Ensuite, exécutez la commande go run
suivante pour exécuter l’application :
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
Notes
Le résultat est fourni uniquement à titre indicatif. Vos retours de valeurs peuvent varier en fonction de vos abonnements Azure et Azure Key Vault.
Exemples de code
Pour plus d’exemples, consultez la documentation du module.
Nettoyer les ressources
Exécutez la commande suivante pour supprimer le groupe de ressources et toutes ses ressources restantes :
az group delete --resource-group quickstart-rg