Öğretici: .NET'te 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ı dizesi gibi gizli dizileri korumanıza yardımcı olur.
Bu öğreticide, Azure Key Vault'tan bilgi okumak için bir konsol uygulaması almayı öğreneceksiniz. Uygulama, Key Vault'ta 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:
Başlamadan önce Key Vault temel kavramlarını okuyun.
Azure aboneliğiniz yoksa ücretsiz hesap 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ıza bir gizli dizi yerleştirmeniz ve izinleri atamanız gerekir.
Azure'da oturum açma
Aşağıdaki komutu kullanarak Azure'da oturum açmak için:
az login
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, aşağıdaki 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"
Anahtar kasanızı gizli diziyle doldurma
Şimdi mySecret adlı ve Success! değerine sahip bir gizli dizi oluşturalım. Gizli dizi bir parola, SQL bağlantı dizesi veya hem güvenli hem de uygulamanızın kullanımına açık tutmak için ihtiyacınız olan diğer bilgiler olabilir.
Yeni oluşturduğunuz anahtar kasanıza gizli dizi eklemek için aşağıdaki komutu kullanın:
az keyvault secret set --vault-name "<your-unique-keyvault-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 atama
Aşağıdaki örnekle sanal makine için sistem tarafından atanan bir kimlik oluşturun:
az vm identity assign --name <NameOfYourVirtualMachine> --resource-group <YourResourceGroupName>
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
Az keyvault set-policy komutuyla daha önce oluşturulmuş kimlik izinlerini anahtar kasanıza atayın:
az keyvault set-policy --name '<your-unique-key-vault-name>' --object-id <VMSystemAssignedIdentity> --secret-permissions get list set delete
Sanal makinede oturum açma
Sanal makinede oturum açmak için Bağlan yönergeleri izleyin ve Azure Windows sanal makinesinde veya Bağlan oturum açın ve Bir 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 indirmeleri sayfasına gidin.
Örnek bir .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
Konsol penceresinden .NET için Azure Key Vault Gizli Dizileri istemci kitaplığını yükleyin:
dotnet add package Azure.Security.KeyVault.Secrets
Bu hızlı başlangıç için Azure Key Vault'ta 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;
URI'yi anahtar kasanızı yansıtacak şekilde vaultUri
güncelleştirerek bu satırları ekleyin. Aşağıdaki kod, kimlik doğrulaması için uygulama tarafından yönetilen kimlikten belirteç kullanan anahtar kasası kimlik doğrulaması için '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 = "<your-key-vault-name>";
var kvUri = "https://<your-key-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ı temizleme
Artık gerekli olmadığında sanal makineyi ve anahtar kasanızı silin.