Краткое руководство. Управление секретами с помощью клиентской библиотеки Go в Azure Key Vault
В этом кратком руководстве вы узнаете, как использовать Azure SDK для Go для создания, получения, перечисления и удаления секретов из Azure Key Vault.
В хранилище ключей Azure можно размещать объекты различных типов. Если вы храните секреты в хранилище ключей, это позволяет не указывать их в коде, что помогает повысить безопасность приложений.
Начните работу с пакетом azsecrets и узнайте, как управлять секретами в хранилище ключей Azure с помощью Go.
Предварительные требования
- Подписка Azure. Если у вас еще нет подписки, создайте ее бесплатно.
- Установленный Go версии 1.18 или более поздней.
- Установленный Azure CLI.
Установка
В этом кратком руководстве для проверки подлинности в Azure с помощью Azure CLI используется пакет azidentity. Дополнительные сведения о различных способах проверки подлинности см. в статье Проверка подлинности в Azure с помощью пакета Azure SDK для Go.
Вход на портал Azure
Выполните в Azure CLI следующую команду:
az login
Если в Azure CLI можно запустить браузер по умолчанию, откроется браузер со страницей входа на портал Azure.
Если страница не открывается автоматически, перейдите по адресу https://aka.ms/devicelogin и введите код авторизации, отображаемый на терминале.
Войдите на портал Azure с вашими учетными данными.
Создание группы ресурсов и экземпляра хранилища ключей
Запустите такие команды интерфейса командной строки Azure:
az group create --name quickstart-rg --location eastus
az keyvault create --name quickstart-kv --resource-group quickstart-rg
Создание нового модуля Go и установка пакетов
Выполните следующие команды 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
Образец кода
Создайте файл с именем main.go и вставьте в него следующий код:
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")
}
Выполнение кода
Перед запуском кода создайте переменную среды с именем
KEY_VAULT_NAME
. В качестве значения переменной среды задайте имя созданного ранее хранилища ключей.export KEY_VAULT_NAME=quickstart-kv
Выполните следующую команду, чтобы запустить приложение Go:
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
Примеры кода
Дополнительные примеры см. в документации по модулю.
Очистка ресурсов
Удалите группу ресурсов и все оставшиеся ресурсы в этой группе, выполнив следующую команду:
az group delete --resource-group quickstart-rg