Hızlı Başlangıç: .NET için Azure Key Vault anahtar istemci kitaplığı

.NET için Azure Key Vault anahtar istemci kitaplığını kullanmaya başlayın. Azure Key Vault , şifreleme anahtarları için güvenli bir depo sağlayan bir bulut hizmetidir. Şifreleme anahtarlarını, 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 anahtar istemci kitaplığını kullanarak Bir Azure anahtar kasasından anahtar oluşturmayı, almayı ve silmeyi öğreneceksiniz

Key Vault anahtar istemci kitaplığı kaynakları:

API başvuru belgeleri | Kitaplık kaynak kodu | Paketi (NuGet)

Key Vault ve anahtarlar hakkında daha fazla bilgi için bkz:

Önkoşullar

Bu hızlı başlangıçta ve Azure CLI kullanılıyor 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

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

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

  1. Komut kabuğunda aşağıdaki komutu çalıştırarak adlı key-vault-console-appbir proje oluşturun:

    dotnet new console --name key-vault-console-app
    
  2. 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 anahtar istemci kitaplığını yükleyin:

dotnet add package Azure.Security.KeyVault.Keys

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ı adlı KEY_VAULT_NAMEbir ortam değişkeni olarak kullanıyor.

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 anahtar istemci kitaplığı anahtarları yönetmenize olanak tanır. Kod örnekleri bölümünde istemci oluşturma, anahtar ayarlama, anahtar alma ve anahtarı 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.Keys;

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.netanahtar kasası URI'sine genişletilir. Anahtar kasasında kimlik doğrulaması hakkında daha fazla bilgi için bkz . Geliştirici Kılavuzu.

var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = $"https://{keyVaultName}.vault.azure.net";

var client = new KeyClient(new Uri(kvUri), new DefaultAzureCredential());

Anahtarı kaydetme

Bu görev için CreateKeyAsync yöntemini kullanın. Yöntemin parametreleri bir anahtar adı ve anahtar türünü kabul eder.

var key = await client.CreateKeyAsync("myKey", KeyType.Rsa);

Not

Anahtar adı varsa, bu kod bu anahtarın yeni sürümünü oluşturur.

Anahtar alma

Artık GetKeyAsync yöntemiyle önceden oluşturulmuş anahtarı alabilirsiniz.

var key = await client.GetKeyAsync("myKey");

Anahtar silme

Son olarak StartDeleteKeyAsync ve PurgeDeletedKeyAsync yöntemleriyle anahtar kasanızdan anahtarı silip temizleyelim.

var operation = await client.StartDeleteKeyAsync("myKey");

// You only need to wait for completion if you want to purge or recover the key.
await operation.WaitForCompletionAsync();

var key = operation.Value;
await client.PurgeDeletedKeyAsync("myKey");

Ö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.Keys;
    
    namespace key_vault_console_app
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                const string keyName = "myKey";
                var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
                var kvUri = $"https://{keyVaultName}.vault.azure.net";
    
                var client = new KeyClient(new Uri(kvUri), new DefaultAzureCredential());
    
                Console.Write($"Creating a key in {keyVaultName} called '{keyName}' ...");
                var createdKey = await client.CreateKeyAsync(keyName, KeyType.Rsa);
                Console.WriteLine("done.");
    
                Console.WriteLine($"Retrieving your key from {keyVaultName}.");
                var key = await client.GetKeyAsync(keyName);
                Console.WriteLine($"Your key version is '{key.Value.Properties.Version}'.");
    
                Console.Write($"Deleting your key from {keyVaultName} ...");
                var deleteOperation = await client.StartDeleteKeyAsync(keyName);
                // You only need to wait for completion if you want to purge or recover the key.
                await deleteOperation.WaitForCompletionAsync();
                Console.WriteLine("done.");
    
                Console.Write($"Purging your key from {keyVaultName} ...");
                await client.PurgeDeletedKeyAsync(keyName);
                Console.WriteLine(" done.");
            }
        }
    }
    

Test edin ve doğrulayın

  1. Projeyi derlemek için aşağıdaki komutu yürütür

    dotnet build
    
  2. Uygulamayı çalıştırmak için aşağıdaki komutu yürütebilirsiniz.

    dotnet run
    
  3. İstendiğinde bir gizli dizi değeri girin. Örneğin, mySecretPassword.

    Aşağıdaki çıkışın bir varyasyonu görüntülenir:

    Creating a key in mykeyvault called 'myKey' ... done.
    Retrieving your key from mykeyvault.
    Your key version is '8532359bced24e4bb2525f2d2050738a'.
    Deleting your key from jl-kv ... done
    Purging your key from <your-unique-keyvault-name> ... done.   
    

Sonraki adımlar

Bu hızlı başlangıçta, bir anahtar kasası oluşturdunuz, bir anahtar depoladunuz ve bu anahtarı 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: