Hızlı Başlangıç: Azure Key Vault Go istemci kitaplığını kullanarak gizli dizileri yönetme
Bu hızlı başlangıçta, Bir Azure anahtar kasasından gizli diziler oluşturmak, almak, listelemek ve silmek için Go için Azure SDK'yı kullanmayı öğreneceksiniz.
Azure anahtar kasasında çeşitli nesne türlerini depolayabilirsiniz. Gizli dizileri bir anahtar kasasında depoladığınızda, bunları kodunuz içinde depolamaktan kaçınarak uygulamalarınızın güvenliğini artırmaya yardımcı olursunuz.
azsecrets paketini kullanmaya başlayın ve Go kullanarak azure anahtar kasasında gizli dizilerinizi yönetmeyi öğrenin.
Önkoşullar
- Azure aboneliği. Henüz aboneliğiniz yoksa ücretsiz olarak bir abonelik oluşturabilirsiniz.
- Go sürüm 1.18 veya üzeri yüklü.
- Azure CLI yüklü.
Ayarlama
Bu hızlı başlangıçta, Azure CLI kullanarak Azure'da kimlik doğrulaması yapmak için azidentity paketini kullanırsınız. Çeşitli kimlik doğrulama yöntemleri hakkında bilgi edinmek için bkz . Go için Azure SDK ile Azure kimlik doğrulaması.
Azure portalda oturum açma
Azure CLI'da aşağıdaki komutu çalıştırın:
az login
Azure CLI varsayılan tarayıcınızı açabiliyorsa, bunu Azure portal oturum açma sayfasında yapar.
Sayfa otomatik olarak açılmazsa adresine gidin https://aka.ms/deviceloginve terminalinizde görüntülenen yetkilendirme kodunu girin.
Hesap kimlik bilgilerinizle Azure portalında oturum açın.
Kaynak grubu ve anahtar kasası oluşturma
Bu hızlı başlangıçta önceden oluşturulmuş bir Azure anahtar kasası kullanılır. Azure CLI hızlı başlangıcı, Azure PowerShell hızlı başlangıcı veya Azure portalı hızlı başlangıcı adımlarını izleyerek anahtar kasası oluşturabilirsiniz.
Alternatif olarak, bu Azure CLI veya Azure PowerShell komutlarını çalıştırabilirsiniz.
Önemli
Her anahtar kasasının benzersiz bir adı olmalıdır. Aşağıdaki örneklerde unique-keyvault-name> değerini anahtar kasanızın adıyla değiştirin<.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
Anahtar kasanıza erişim izni verme
Rol Tabanlı Erişim Denetimi (RBAC) aracılığıyla anahtar kasanıza izinler almak için az role assignment create Azure CLI komutunu kullanarak "Kullanıcı Asıl Adı" (UPN) öğesine bir rol atayın.
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>"
upn>, subscription-id>, <resource-group-name> ve <your-unique-keyvault-name> değerlerini gerçek değerlerinizle değiştirin<<. UPN'niz genellikle bir e-posta adresi biçiminde olur (ör. username@domain.com).
Yeni bir Go modülü oluşturma ve paketleri yükleme
Aşağıdaki Go komutlarını çalıştırın:
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
Örnek kod
main.go adlı bir dosya oluşturun ve içine aşağıdaki kodu yapıştırın:
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")
}
Kodu çalıştırma
Kodu çalıştırmadan önce adlı
KEY_VAULT_NAME
bir ortam değişkeni oluşturun. Ortam değişkeni değerini daha önce oluşturduğunuz anahtar kasasının adına ayarlayın.export KEY_VAULT_NAME=quickstart-kv
Go uygulamasını başlatmak için aşağıdaki komutu çalıştırın:
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
Kod örnekleri
Daha fazla örnek için modül belgelerine bakın.
Kaynakları temizleme
Aşağıdaki komutu çalıştırarak kaynak grubunu ve kalan tüm kaynaklarını silin:
az group delete --resource-group quickstart-rg