Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
.NET için Azure Key Vault gizli istemci kitaplığını kullanmaya başlayın. Azure Key Vault, gizli bilgiler için güvenli bir depo sağlayan bir bulut hizmetidir. Anahtarları, parolaları, sertifikaları ve diğer gizli dizileri güvenli bir şekilde depolayabilirsiniz. Azure anahtar kasaları Azure portalı aracılığıyla oluşturulup yönetilebilir. Bu hızlı başlangıçta, .NET istemci kitaplığını kullanarak bir Azure anahtar kasasından gizli öğeleri nasıl oluşturacağınızı, alacağınızı ve sileceğinizi öğreneceksiniz.
Key Vault istemci kitaplığı kaynakları:
API başvuru belgeleri | Kitaplık kaynak kodu | Paket (NuGet)
Key Vault ve gizli bilgiler hakkında daha fazla bilgi için bkz:
- Key Vault Genel Bakış
- Sırlara Genel Bakış
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- .NET 6 SDK veya üzeri
- Azure CLI veya Azure PowerShell
- Bir Anahtar Kasası - Azure portalını, Azure CLI'yi veya Azure PowerShell'i kullanarak bir anahtar kasası oluşturabilirsiniz.
Bu hızlı başlangıçta dotnet ve Azure CLI veya Azure PowerShell kullanılır.
Ayarlama
- Azure CLI
- Azure PowerShell
Bu hızlı başlangıç, Azure Hizmetleri'nde kullanıcının kimliğini doğrulamak için Azure CLI ile Azure Kimlik kitaplığını kullanmaktır. Geliştiriciler, çağrılarının kimliğini doğrulamak için Visual Studio veya Visual Studio Code kullanabilir. Daha fazla bilgi için bkz. Azure Identity istemci kitaplığı ile istemcinin kimliğini doğrulayın.
Azure'da oturum açma
az loginkomutunu çalıştırın.az loginCLI varsayılan tarayıcınızı açabiliyorsa bunu yapar ve bir Azure oturum açma sayfası yükler.
Aksi halde https://aka.ms/devicelogin adresinde bir tarayıcı sayfası açın ve terminalinizde görüntülenen kimlik doğrulama kodunu girin.
Tarayıcıda hesabınızın kimlik bilgileriyle oturum açın.
Anahtar kasanıza erişim izni verin
Rol Tabanlı Erişim Denetimi (RBAC) aracılığıyla anahtar kasanıza izinler almak için Azure CLI komutunu kullanarak "Kullanıcı İlke Adı" (UPN) için az role assignment create komutuyla bir rol atayın.
az role assignment create --role "Key Vault Secrets Officer" --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).
Yeni .NET konsol uygulaması oluşturma
Bir komut kabuğunda
key-vault-console-appisimli bir proje oluşturmak için aşağıdaki komutu çalıştırın:dotnet new console --name key-vault-console-appYeni oluşturulan key-vault-console-app dizinine geçin ve projeyi oluşturmak için aşağıdaki komutu çalıştırın:
dotnet buildDerleme çıkışı hiçbir uyarı veya hata içermemelidir.
Build succeeded. 0 Warning(s) 0 Error(s)
Paketleri yükleme
Komut kabuğundan .NET için Azure Key Vault gizli istemci kitaplığını yükleyin:
dotnet add package Azure.Security.KeyVault.Secrets
Bu hızlı başlangıç için Azure Identity istemci kitaplığını da yüklemeniz gerekir:
dotnet add package Azure.Identity
Ortam değişkenlerini belirleme
Bu uygulama anahtar kasası adını KEY_VAULT_NAME adlı bir ortam değişkeni olarak kullanıyor.
Windows
set KEY_VAULT_NAME=<vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<vault-name>"
macOS veya Linux
export KEY_VAULT_NAME=<vault-name>
Nesne modeli
.NET için Azure Key Vault sır istemci kitaplığı sırları yönetmenize olanak tanır. Kod örnekleri bölümünde bir istemci oluşturma, bir gizli anahtar ayarlama, bir gizli anahtar alma ve bir gizli anahtar silme işlemleri gösterilir.
Kod örnekleri
Yönerge ekleme
aşağıdaki yönergeleri Program.cs en üstüne ekleyin:
using System;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
Kimlik doğrulaması yapma ve istemci oluşturma
Çoğu Azure hizmeti için uygulama istekleri yetkilendirilmelidir. tr-TR: Azure Identity istemci kitaplığı tarafından sağlanan DefaultAzureCredential sınıfının kullanılması, kodunuzda Azure hizmetlerine parolasız bağlantılar uygulamak için önerilen yaklaşımdır.
DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını saptar. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim) farklı kimlik doğrulama yöntemleri kullanmasını sağlar.
Bu hızlı başlangıçta, DefaultAzureCredential yerel geliştirme kullanıcısının Azure CLI'ya giriş yaparken kullandığı kimlik bilgileriyle anahtar kasasına kimlik doğrulaması yapar. Uygulama Azure'a dağıtıldığında, aynı DefaultAzureCredential kod, App Service, Sanal Makine veya diğer hizmetlere atanan yönetilen kimliği otomatik olarak keşfederek kullanabilir. Daha fazla bilgi için Yönetilen Kimliğe Genel Bakış bölümüne bakın.
Bu örnekte, anahtar kasanızın adı,
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
Bir sır kaydetme
Konsol uygulaması kimlik doğrulandıktan sonra Anahtar Kasası'na bir gizli anahtar ekleyin. Bu görev için SetSecretAsync yöntemini kullanın.
Yöntemin ilk parametresi gizli bir ad kabul eder. Bu örnekte, değişken secretName "mySecret" dizesini depolar.
Yöntemin ikinci parametresi gizli için bir değer kabul eder. Bu örnekte gizli bilgi, kullanıcı tarafından komut satırı aracılığıyla girilir ve secretValue değişkeninde depolanır.
await client.SetSecretAsync(secretName, secretValue);
Not
Gizli ad varsa, kod bu gizlinin yeni sürümünü oluşturur.
Gizli anahtar alma
Şimdi GetSecretAsync yöntemiyle önceden ayarlanmış değeri alabilirsiniz.
var secret = await client.GetSecretAsync(secretName);
Gizli anahtarınız artık secret.Value olarak kaydedildi.
Gizliyi silme
Son olarak, StartDeleteSecretAsync ve PurgeDeletedSecretAsync yöntemleriyle anahtar kasanızdan gizli diziyi silelim.
var operation = await client.StartDeleteSecretAsync(secretName);
// You only need to wait for completion if you want to purge or recover the key.
await operation.WaitForCompletionAsync();
await client.PurgeDeletedSecretAsync(secretName);
Örnek kod
Aşağıdaki adımları tamamlayarak .NET konsol uygulamasını Key Vault ile etkileşim kuracak şekilde değiştirin:
Program.cs içindeki kodu aşağıdaki kodla değiştirin:
using System; using System.Threading.Tasks; using Azure.Identity; using Azure.Security.KeyVault.Secrets; namespace key_vault_console_app { class Program { static async Task Main(string[] args) { const string secretName = "mySecret"; var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME"); var kvUri = $"https://{keyVaultName}.vault.azure.net"; var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential()); Console.Write("Input the value of your secret > "); var secretValue = Console.ReadLine(); Console.Write($"Creating a secret in {keyVaultName} called '{secretName}' with the value '{secretValue}' ..."); await client.SetSecretAsync(secretName, secretValue); Console.WriteLine(" done."); Console.WriteLine("Forgetting your secret."); secretValue = string.Empty; Console.WriteLine($"Your secret is '{secretValue}'."); Console.WriteLine($"Retrieving your secret from {keyVaultName}."); var secret = await client.GetSecretAsync(secretName); Console.WriteLine($"Your secret is '{secret.Value.Value}'."); Console.Write($"Deleting your secret from {keyVaultName} ..."); DeleteSecretOperation operation = await client.StartDeleteSecretAsync(secretName); // You only need to wait for completion if you want to purge or recover the secret. await operation.WaitForCompletionAsync(); Console.WriteLine(" done."); Console.Write($"Purging your secret from {keyVaultName} ..."); await client.PurgeDeletedSecretAsync(secretName); Console.WriteLine(" done."); } } }
Test edin ve doğrulayın
Uygulamayı çalıştırmak için aşağıdaki komutu yürütebilirsiniz.
dotnet runİstendiğinde gizli bir değer girin. Örneğin, mySecretPassword.
Aşağıdaki çıktının bir varyasyonu görülebilir:
Input the value of your secret > mySecretPassword
Creating a secret in <vault-name> called 'mySecret' with the value 'mySecretPassword' ... done.
Forgetting your secret.
Your secret is ''.
Retrieving your secret from <vault-name>.
Your secret is 'mySecretPassword'.
Deleting your secret from <vault-name> ... done.
Purging your secret from <vault-name> ... done.
Sonraki adımlar
Key Vault ve uygulamalarınızla tümleştirme hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın:
- Azure Key Vault'a Genel Bakış'ı okuyun
- App Service uygulamasından Erişim Anahtarı Kasası öğreticisini inceleyin
- Sanal Makineden Access Key Vault Öğreticisi'ne bakın
- Azure Key Vault geliştirici kılavuzuna bakın
- Key Vault güvenliğine genel bakış bölümünü inceleyin
- Sırlara özgü güvenlik en iyi uygulamalarını gözden geçirme