Aracılığıyla paylaş


Öğretici: .NET'da sanal makineyle Azure Key Vault kullanma

Azure Key Vault API anahtarları, uygulamalarınıza, hizmetlerinize ve BT kaynaklarınıza erişmek için ihtiyacınız olan veritabanı bağlantı dizeleri gibi gizli dizileri korumanıza yardımcı olur.

Bu öğreticide, bir konsol uygulamasının Azure Key Vault bilgilerini okumasını nasıl edineceğinizi öğreneceksiniz. Uygulama, Key Vault kimlik doğrulaması yapmak için sanal makine tarafından yönetilen kimlik kullanır.

Öğretici şunların nasıl yapıldığını göstermektedir:

  • Bir kaynak grubu oluşturun.
  • Anahtar kasası oluştur.
  • Anahtar kasasına bir gizli anahtar kaydedin.
  • Anahtar kasasından bir sır al.
  • Azure bir sanal makine oluşturun.
  • Sanal Makine için yönetilen kimliği etkinleştirin.
  • VM kimliğine izinler atayın.

Başlamadan önce Key Vault temel kavramları okuyun.

Azure aboneliğiniz yoksa free hesabı oluşturun.

Önkoşullar

Windows, Mac ve Linux için:

Kaynak oluşturma ve izin atama

Kodlamaya başlamadan önce bazı kaynaklar oluşturmanız, anahtar kasanızda bir gizli anahtar yerleştirmeniz ve izin atamanız gerekir.

Azure oturum açma

Aşağıdaki komutu kullanarak Azure oturum açmak için:

az login

Bir kaynak grubu ve anahtar kasası oluşturun

Bu hızlı başlangıç kılavuzunda önceden oluşturulmuş bir Azure anahtar kasası kullanılır. Bu hızlı başlangıçlarda yer alan adımları izleyerek bir 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 <vault-name>'yi anahtar kasanızın adıyla değiştirin.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Anahtar kasanızı gizli diziyle doldurma

Şimdi mySecret adlı ve Success! değerine sahip bir gizli anahtar oluşturalım. Gizli bir bilgi, bir parola, SQL bağlantı dizesi veya hem güvenli hem de uygulamanızın kullanımına açık tutmanız gereken diğer bilgiler olabilir.

Yeni oluşturduğunuz anahtar kasanıza bir gizli eklemek için aşağıdaki komutu kullanın:

az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"

Sanal makine oluşturun

Aşağıdaki yöntemlerden birini kullanarak bir Windows veya Linux sanal makinesi oluşturun:

Windows Linux
Azure CLI Azure CLI
PowerShell PowerShell
Azure portalı Azure portalı

VM'ye kimlik atayın

Aşağıdaki örnekle sanal makine için sistem tarafından atanan bir kimlik oluşturun:

az vm identity assign --name <vm-name> --resource-group <resource-group>

Aşağıdaki kodda görüntülenen sistem tarafından atanan kimliği not edin. Yukarıdaki komutun çıktısı şöyle olacaktır:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

VM kimliğine izin atama

Role-Based Access Control (RBAC) aracılığıyla anahtar kasanıza izinler almak için Azure CLI komutunu az role assignment create kullanarak "Kullanıcı Asıl Adı"na (UPN) bir rol atayın.

az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

, <upn>ve <subscription-id> değerlerini gerçek değerlerinizle değiştirin<vault-name>. Eğer farklı bir kaynak grubu adı kullandıysanız, "myResourceGroup" yerine bunu koyun. UPN'niz genellikle bir e-posta adresi biçiminde olur (ör. username@domain.com).

Sanal makinede oturum açma

Sanal makinede oturum açmak için Bağlan ve Azure Windows sanal makinesinde veya Bağlan ve Azure Linux sanal makinesinde oturum açın.

Konsol uygulamasını ayarlama

Bir konsol uygulaması oluşturun ve komutunu kullanarak dotnet gerekli paketleri yükleyin.

.NET Core'u yükleme

.NET Core'u yüklemek için .NET downloads sayfasına gidin.

Örnek .NET uygulaması oluşturma ve çalıştırma

Komut istemi açın.

Aşağıdaki komutları çalıştırarak konsola "Merhaba Dünya" yazdırabilirsiniz:

dotnet new console -n keyvault-console-app
cd keyvault-console-app
dotnet run

paketini yükleyin

.NET için Azure Key Vault Gizlilik istemci kitaplığını, konsol penceresinden yükleyin.

dotnet add package Azure.Security.KeyVault.Secrets

Bu hızlı başlangıçta, Azure Key Vault kimlik doğrulaması yapmak için aşağıdaki kimlik paketini yüklemeniz gerekir:

dotnet add package Azure.Identity

Konsol uygulamasını düzenleme

Program.cs dosyasını açın ve şu paketleri ekleyin:

using System;
using Azure.Core;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

Anahtar kasanızın URI'sini yansıtacak şekilde vaultUri güncelleyerek bu satırları ekleyin. Aşağıdaki kod, anahtar kasasına kimlik doğrulaması yapmak için uygulama tarafından yönetilen kimliğin belirtecini kullanan 'DefaultAzureCredential()' kullanıyor. Anahtar kasasının kısıtlanmış olması durumunda yeniden denemeler için üstel geri alma da kullanıyor.

  class Program
    {
        static void Main(string[] args)
        {
            string secretName = "mySecret";
            string keyVaultName = "<vault-name>";
            var kvUri = "https://<vault-name>.vault.azure.net";
            SecretClientOptions options = new SecretClientOptions()
            {
                Retry =
                {
                    Delay= TimeSpan.FromSeconds(2),
                    MaxDelay = TimeSpan.FromSeconds(16),
                    MaxRetries = 5,
                    Mode = RetryMode.Exponential
                 }
            };

            var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential(),options);

            Console.Write("Input the value of your secret > ");
            string secretValue = Console.ReadLine();

            Console.Write("Creating a secret in " + keyVaultName + " called '" + secretName + "' with the value '" + secretValue + "' ...");

            client.SetSecret(secretName, secretValue);

            Console.WriteLine(" done.");

            Console.WriteLine("Forgetting your secret.");
            secretValue = "";
            Console.WriteLine("Your secret is '" + secretValue + "'.");

            Console.WriteLine("Retrieving your secret from " + keyVaultName + ".");

            KeyVaultSecret secret = client.GetSecret(secretName);

            Console.WriteLine("Your secret is '" + secret.Value + "'.");

            Console.Write("Deleting your secret from " + keyVaultName + " ...");

            client.StartDeleteSecret(secretName);

            System.Threading.Thread.Sleep(5000);
            Console.WriteLine(" done.");

        }
    }

Kaynakları temizle

Artık gerekli olmadığında sanal makineyi ve anahtar kasanızı silin.

Sonraki adımlar