Aracılığıyla paylaş


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

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

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

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

  1. Kodu çalıştırmadan önce adlı KEY_VAULT_NAMEbir 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
    
  2. 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

Sonraki adımlar