Megosztás a következőn keresztül:


Rövid útmutató: Az Azure Key Vault-kulcsok ügyfélkódtára Go-hoz

Ebben a rövid útmutatóban megtanulhatja, hogyan hozhat létre, kérhet le, frissíthet, listázhat és törölhet Azure Key Vault-kulcsokat az Azure SDK for Go használatával.

Az Azure Key Vault egy felhőszolgáltatás, amely biztonságos titkoskulcs-tárolóként működik. Biztonságosan tárolhatja kulcsait, jelszavait, tanúsítványait és egyéb titkos adatait. A Key Vaulttal kapcsolatos további információt az Áttekintés szakaszban talál.

Ebből az útmutatóból megtudhatja, hogyan kezelheti az Azure Key Vault-kulcsokat az Azkeys-csomag használatával a Go használatával.

Előfeltételek

Jelentkezzen be az Azure Portalra

  1. Az Azure CLI-ben futtassa a következő parancsot:

    az login
    

    Ha az Azure CLI meg tudja nyitni az alapértelmezett böngészőt, ezt az Azure Portal bejelentkezési oldalán teheti meg.

    Ha a lap nem nyílik meg automatikusan, lépjen a lapra https://aka.ms/devicelogin, majd adja meg a terminálban megjelenő engedélyezési kódot.

  2. Jelentkezzen be az Azure Portalra a fiók hitelesítő adataival.

Erőforráscsoport és kulcstartó létrehozása

Ez a rövid útmutató egy előre létrehozott Azure Key Vaultot használ. Kulcstartót az Azure CLI rövid útmutatójában, az Azure PowerShell gyorsútmutatójában vagy az Azure Portal rövid útmutatójában ismertetett lépések követésével hozhat létre.

Másik lehetőségként futtathatja ezeket az Azure CLI- vagy Azure PowerShell-parancsokat.

Fontos

Minden kulcstartónak egyedi névvel kell rendelkeznie. Cserélje le <az egyedi-keyvault-nevét> a kulcstartó nevére az alábbi példákban.

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

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

Hozzáférés biztosítása a kulcstartóhoz

Ha szerepköralapú hozzáférés-vezérléssel (RBAC) szeretne engedélyeket szerezni a kulcstartóhoz, rendeljen hozzá egy szerepkört a "Felhasználónév" (UPN) szolgáltatáshoz az Az role Assignment Create Azure CLI-paranccsal.

az role assignment create --role "Key Vault Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Cserélje le <a upn>, <subscription-id>, <resource-group-name> és <your-unique-keyvault-name> értékét a tényleges értékekre. Az UPN általában egy e-mail-cím (pl. username@domain.com) formátumban lesz.

Új Go-modul létrehozása és csomagok telepítése

Futtassa a következő Go-parancsokat:

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

A mintakód létrehozása

Hozzon létre egy main.go nevű fájlt, és másolja a következő kódot a fájlba:

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

A kód futtatása

A kód futtatása előtt hozzon létre egy KEY_VAULT_NAME nevű környezeti változót. Állítsa a környezeti változó értékét a korábban létrehozott Azure Key Vault nevére.

export KEY_VAULT_NAME=quickstart-kv

Ezután futtassa a következő go run parancsot az alkalmazás futtatásához:

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

Feljegyzés

A kimenet csak tájékoztató jellegű. A visszatérési értékek az Azure-előfizetéstől és az Azure Key Vaulttól függően változhatnak.

Kódpéldák

További példákért tekintse meg a modul dokumentációját .

Az erőforrások eltávolítása

Futtassa a következő parancsot az erőforráscsoport és az összes többi erőforrás törléséhez:

az group delete --resource-group quickstart-rg

Következő lépések