Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Neste início rápido, você aprenderá a usar o SDK do Azure para Go para criar, recuperar, listar e excluir segredos de um cofre de chaves do Azure.
Você pode armazenar vários tipos de objeto em um cofre de chaves do Azure. Quando você armazena segredos em um cofre de chaves, evita ter que armazená-los em seu código, o que ajuda a melhorar a segurança de seus aplicativos.
Comece com o pacote azsecrets e saiba como gerenciar seus segredos em um cofre de chaves do Azure usando o Go.
Prerequisites
- Uma subscrição do Azure. Se ainda não tiver uma subscrição, pode criar uma gratuitamente.
- Go versão 1.18 ou posterior, instalada.
- A CLI do Azure, instalada.
Setup
Para fins deste início rápido, você usa o pacote azidentity para autenticar no Azure usando a CLI do Azure. Para saber mais sobre os vários métodos de autenticação, consulte Autenticação do Azure com o SDK do Azure para Go.
Inicie sessão no portal do Azure
Na CLI do Azure, execute o seguinte comando:
az loginSe a CLI do Azure puder abrir seu navegador padrão, ela o fará na página de entrada do 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 seu terminal.
Entre no portal do Azure com suas credenciais de conta.
Criar um grupo de recursos e um cofre de chaves
Este guia de início rápido usa um cofre de chaves do Azure pré-criado. Você pode criar um cofre de chaves seguindo as etapas nestes guias rápidos:
- Início rápido da CLI do Azure
- Início rápido do Azure PowerShell
- Guia de início rápido do portal do Azure
Como alternativa, você pode executar esses comandos da CLI do Azure.
Important
Cada cofre de chaves deve ter um nome exclusivo. Substitua <your-unique-keyvault-name> pelo nome do seu cofre de chaves nos exemplos a seguir.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Conceder acesso ao seu cofre de chaves
Para obter permissões para seu cofre de chaves por meio do RBAC (Controle de Acesso Baseado em Função), atribua uma função ao seu "Nome Principal do Usuário" (UPN) usando o comando az role assignment create da CLI do Azure.
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>"
Substitua <upn>, <subscription-id>, <resource-group-name> e <your-unique-keyvault-name> pelos seus valores reais. Seu UPN normalmente estará no formato de um endereço de e-mail (por exemplo, username@domain.com).
Crie um novo módulo Go e instale 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 arquivo chamado main.go e, em seguida, cole o seguinte código nele:
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")
}
Executar o código
Antes de executar o código, crie uma variável de ambiente chamada
KEY_VAULT_NAME. Defina o valor da variável de ambiente como o nome do cofre de chaves que você criou anteriormente.export KEY_VAULT_NAME=quickstart-kvPara iniciar o aplicativo Go, execute o seguinte comando:
go run main.gosecretValue: 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
Consulte a documentação do módulo para obter mais exemplos.
Clean up resources (Limpar recursos)
Exclua o grupo de recursos e todos os recursos restantes executando o seguinte comando:
az group delete --resource-group quickstart-rg