Guida introduttiva: Gestire i segreti usando la libreria client Go di Azure Key Vault
In questa guida introduttiva si apprenderà come usare Azure SDK per Go per creare, recuperare, elencare ed eliminare segreti da un insieme di credenziali delle chiavi di Azure.
È possibile archiviare un'ampia gamma di tipi di oggetti in un insieme di credenziali delle chiavi di Azure. Quando si archiviano segreti in un insieme di credenziali delle chiavi, evitare di archiviarli nel codice, migliorando così la sicurezza delle applicazioni.
Introduzione al pacchetto azsecrets e informazioni su come gestire i segreti in un insieme di credenziali delle chiavi di Azure usando Go.
Prerequisiti
- Una sottoscrizione di Azure. Se non si ha già una sottoscrizione, è possibile crearne una gratuitamente.
- Versione Go 1.18 o successiva, installata.
- Interfaccia della riga di comando di Azure, installata.
Impostazione
Ai fini di questa guida introduttiva, usare il pacchetto azidentity per l'autenticazione in Azure usando l'interfaccia della riga di comando di Azure. Per informazioni sui vari metodi di autenticazione, vedere 'autenticazione di Azure con Azure SDK per Go.
Accedere al portale di Azure
Nell'interfaccia della riga di comando di Azure eseguire il comando seguente:
az login
Se l'interfaccia della riga di comando di Azure può aprire il browser predefinito, questa operazione verrà eseguita nella pagina di accesso del portale di Azure.
Se la pagina non viene aperta automaticamente, passare a https://aka.ms/devicelogin, quindi immettere il codice di autorizzazione visualizzato nel terminale.
Accedere al portale di Azure con le credenziali dell'account.
Creare un gruppo di risorse e un insieme di credenziali delle chiavi
In questo avvio rapido si usa un'istanza creata in precedenza di Azure Key Vault. È possibile creare un insieme di credenziali delle chiavi seguendo la procedura descritta negli argomenti di avvio rapido per l'interfaccia della riga di comando di Azure, Azure PowerShell o il portale di Azure.
In alternativa, è possibile eseguire i comandi dell'interfaccia della riga di comando di Azure o di Azure PowerShell.
Importante
Ogni insieme di credenziali delle chiavi deve avere un nome univoco. Negli esempi seguenti sostituire <your-unique-keyvault-name> con il nome dell'insieme di credenziali delle chiavi in uso.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Concedere l'accesso all'insieme di credenziali delle chiavi
Per ottenere le autorizzazioni per l’insieme di credenziali delle chiavi tramite il controllo degli accessi in base al ruolo (RBAC), assegnare un ruolo all’UPN (User Principal Name) usando il comando dell’interfaccia della riga di comando di Azure 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>"
Sostituire <upn>, <subscription-id>, <resource-group-name> e <your-unique-keyvault-name> con i valori effettivi. L'UPN in genere sarà nel formato di un indirizzo e-mail (ad esempio, username@domain.com).
Creare un nuovo modulo Go e installare i pacchetti
Eseguire i seguenti comandi 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
Codice di esempio
Creare un file denominato main.go, quindi incollarvi il codice seguente:
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")
}
Eseguire il codice
Prima di eseguire il codice, creare una variabile di ambiente denominata
KEY_VAULT_NAME
. Impostare il valore della variabile di ambiente sul nome dell'insieme di credenziali delle chiavi creato in precedenza.export KEY_VAULT_NAME=quickstart-kv
Per avviare l'app Go, eseguire il comando seguente:
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
Esempi di codice
Per altri esempi, vedere la documentazione del modulo.
Pulire le risorse
Eliminare il gruppo di risorse e tutte le risorse rimanenti eseguendo il comando seguente:
az group delete --resource-group quickstart-rg