Hızlı Başlangıç: .NET için Azure Key Vault sertifika istemci kitaplığı
.NET için Azure Key Vault sertifika istemci kitaplığını kullanmaya başlayın. Azure Key Vault , sertifikalar 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 azure anahtar kasasından sertifika oluşturmayı, almayı ve silmeyi öğreneceksiniz.
Key Vault istemci kitaplığı kaynakları:
API başvuru belgeleri | Kitaplık kaynak kodu | Paketi (NuGet)
Key Vault ve sertifikalar hakkında daha fazla bilgi için bkz:
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- .NET 6 SDK veya üzeri
- Azure CLI
- Key Vault: Azure portalını, Azure CLI'yi veya Azure PowerShell'i kullanarak bir anahtar kasası oluşturabilirsiniz.
Bu hızlı başlangıçta ve Azure CLI kullanılır dotnet
.
Ayarlama
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 da kullanabilir. Daha fazla bilgi için bkz . Azure Identity istemci kitaplığıyla istemcinin kimliğini doğrulama.
Azure'da oturum açma
login
komutunu çalıştırın.az login
CLI varsayılan tarayıcınızı açabiliyorsa bunu yapar ve bir Azure oturum açma sayfası yükler.
Aksi takdirde adresinde bir tarayıcı sayfası https://aka.ms/devicelogin açın ve terminalinizde görüntülenen yetkilendirme kodunu girin.
Tarayıcıda hesabınızın kimlik bilgileriyle oturum açın.
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 Certificates 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 .NET konsol uygulaması oluşturma
Komut kabuğunda aşağıdaki komutu çalıştırarak adlı
key-vault-console-app
bir proje oluşturun:dotnet new console --name key-vault-console-app
Yeni oluşturulan key-vault-console-app dizinine geçin ve projeyi oluşturmak için aşağıdaki komutu çalıştırın:
dotnet build
Derleme çı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 sertifika istemci kitaplığını yükleyin:
dotnet add package Azure.Security.KeyVault.Certificates
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
Uygulama anahtar kasası adını adlı KEY_VAULT_NAME
bir ortam değişkeninden alır.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS veya Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Nesne modeli
.NET için Azure Key Vault sertifika istemci kitaplığı sertifikaları yönetmenize olanak tanır. Kod örnekleri bölümünde istemci oluşturma, sertifika ayarlama, sertifika alma ve sertifika silme işlemi 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.Certificates;
Kimlik doğrulaması yapma ve istemci oluşturma
Çoğu Azure hizmeti için uygulama istekleri yetkilendirilmelidir. 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ı belirler. 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
Azure CLI'da oturum açmış yerel geliştirme kullanıcısının kimlik bilgilerini kullanarak anahtar kasasında 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 bulabilir ve kullanabilir. Daha fazla bilgi için bkz . Yönetilen Kimliğe Genel Bakış.
Bu örnekte, anahtar kasanızın adı biçiminde https://<your-key-vault-name>.vault.azure.net
anahtar kasası URI'sine genişletilir. Anahtar kasasında kimlik doğrulaması hakkında daha fazla bilgi için bkz . Geliştirici Kılavuzu.
string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";
var client = new CertificateClient(new Uri(kvUri), new DefaultAzureCredential());
Sertifika kaydetme
Bu örnekte, kolaylık sağlamak için varsayılan verme ilkesiyle otomatik olarak imzalanan sertifikayı kullanabilirsiniz. Bu görev için StartCreateCertificateAsync yöntemini kullanın. Yöntemin parametreleri bir sertifika adını ve sertifika ilkesini kabul eder.
var operation = await client.StartCreateCertificateAsync("myCertificate", CertificatePolicy.Default);
var certificate = await operation.WaitForCompletionAsync();
Not
Sertifika adı varsa, yukarıdaki kod bu sertifikanın yeni sürümünü oluşturur.
Sertifika alma
Artık GetCertificateAsync yöntemiyle daha önce oluşturulmuş sertifikayı alabilirsiniz.
var certificate = await client.GetCertificateAsync("myCertificate");
Sertifika silme
Son olarak StartDeleteCertificateAsync ve PurgeDeletedCertificateAsync yöntemleriyle sertifikayı anahtar kasanızdan silip temizleyelim.
var operation = await client.StartDeleteCertificateAsync("myCertificate");
// You only need to wait for completion if you want to purge or recover the certificate.
await operation.WaitForCompletionAsync();
var certificate = operation.Value;
await client.PurgeDeletedCertificateAsync("myCertificate");
Ö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.Certificates; namespace key_vault_console_app { class Program { static async Task Main(string[] args) { const string certificateName = "myCertificate"; var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME"); var kvUri = $"https://{keyVaultName}.vault.azure.net"; var client = new CertificateClient(new Uri(kvUri), new DefaultAzureCredential()); Console.Write($"Creating a certificate in {keyVaultName} called '{certificateName}' ..."); CertificateOperation operation = await client.StartCreateCertificateAsync(certificateName, CertificatePolicy.Default); await operation.WaitForCompletionAsync(); Console.WriteLine(" done."); Console.WriteLine($"Retrieving your certificate from {keyVaultName}."); var certificate = await client.GetCertificateAsync(certificateName); Console.WriteLine($"Your certificate version is '{certificate.Value.Properties.Version}'."); Console.Write($"Deleting your certificate from {keyVaultName} ..."); DeleteCertificateOperation deleteOperation = await client.StartDeleteCertificateAsync(certificateName); // You only need to wait for completion if you want to purge or recover the certificate. await deleteOperation.WaitForCompletionAsync(); Console.WriteLine(" done."); Console.Write($"Purging your certificate from {keyVaultName} ..."); await client.PurgeDeletedCertificateAsync(certificateName); Console.WriteLine(" done."); } } }
Test edin ve doğrulayın
Projeyi derlemek için aşağıdaki komutu yürütür
dotnet build
Aşağıdaki çıkışın bir varyasyonu görüntülenir:
Creating a certificate in mykeyvault called 'myCertificate' ... done.
Retrieving your certificate from mykeyvault.
Your certificate version is '8532359bced24e4bb2525f2d2050738a'.
Deleting your certificate from mykeyvault ... done
Purging your certificate from mykeyvault ... done
Sonraki adımlar
Bu hızlı başlangıçta, bir anahtar kasası oluşturdunuz, bir sertifika depoladunuz ve bu sertifikayı aldıysanız.
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ış
- Sertifikalara genel bakış belgesini okuyun
- App Service Uygulamasından Access Key Vault Öğreticisi'ne bakın
- 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ış'a göz atın