Início Rápido: Gerir segredos com a biblioteca de cliente do Azure Key Vault Go
Neste início rápido, irá aprender a utilizar o SDK do Azure para Go para criar, obter, listar e eliminar segredos de um cofre de chaves do Azure.
Pode armazenar vários tipos de objetos num cofre de chaves do Azure. Quando armazena segredos num cofre de chaves, evita ter de armazená-los no seu código, o que ajuda a melhorar a segurança das suas aplicações.
Comece a utilizar o pacote azsecrets e saiba como gerir os seus segredos num cofre de chaves do Azure com o Go.
Pré-requisitos
- Uma subscrição do Azure. Se ainda não tiver uma subscrição, pode criar uma gratuitamente.
- Versão 1.18 ou posterior, instalada.
- A CLI do Azure, instalada.
Configuração
Para efeitos deste início rápido, utilize o pacote azidentity para autenticar no Azure com a CLI do Azure. Para saber mais sobre os vários métodos de autenticação, veja Autenticação do Azure com o SDK do Azure para Go.
Iniciar sessão no portal do Azure
Na CLI do Azure, execute o seguinte comando:
az login
Se a CLI do Azure conseguir abrir o browser predefinido, fá-lo-á na página de início de sessão portal do Azure.
Se a página não abrir automaticamente, aceda a https://aka.ms/devicelogine, em seguida, introduza o código de autorização apresentado no terminal.
Inicie sessão no portal do Azure com as credenciais da sua conta.
Criar um grupo de recursos e uma instância do cofre de chaves
Execute os seguintes comandos da CLI do Azure:
az group create --name quickstart-rg --location eastus
az keyvault create --name quickstart-kv --resource-group quickstart-rg
Criar um novo módulo Go e instalar pacotes
Execute os seguintes comandos 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
Código de exemplo
Crie um ficheiro com o nome main.go e, em seguida, cole o seguinte código no mesmo:
package main
import (
"context"
"fmt"
"log"
"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 := os.Getenv("AZURE_KEY_VAULT_URI")
// 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")
}
Executar o código
Antes de executar o código, crie uma variável de ambiente com o nome
KEY_VAULT_NAME
. Defina o valor da variável de ambiente como o nome do cofre de chaves que criou anteriormente.export KEY_VAULT_NAME=quickstart-kv
Para iniciar a aplicação Go, execute o seguinte comando:
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
Exemplos de código
Veja a documentação do módulo para obter mais exemplos.
Limpar os recursos
Elimine o grupo de recursos e todos os recursos restantes ao executar o seguinte comando:
az group delete --resource-group quickstart-rg