Share via


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

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

  1. 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.

  2. 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

  1. 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
    
  2. 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

Passos seguintes