Mulai cepat: Pustaka klien kunci Azure Key Vault untuk .NET
Mulailah dengan pustaka klien kunci Azure Key Vault untuk .NET. Azure Key Vault adalah layanan awan yang menyediakan penyimpanan aman untuk menyimpan rahasia. Anda dapat menyimpan kunci, kata sandi, sertifikat, dan rahasia lainnya dengan aman. Brankas kunci Azure dapat dibuat dan dikelola melalui portal Microsoft Azure. Dalam mulai cepat ini, Anda mempelajari cara membuat, mengambil, dan menghapus kunci dari brankas kunci Azure menggunakan pustaka klien kunci .NET
Sumber daya pustaka klien Key Vault:
Dokumentasi referensi API | Kode sumber pustaka | Paket (NuGet)
Untuk informasi lebih lanjut tentang Key Vault dan kunci, lihat:
Prasyarat
- Langganan Azure - buat satu secara gratis
- .NET 6 SDK atau yang lebih baru
- Azure CLI
- Key Vault - Anda dapat membuatnya menggunakan portal Microsoft Azure, Azure CLI, atau Azure PowerShell.
Mulai cepat ini menggunakan dotnet
dan Azure CLI
Siapkan
Mulai cepat ini menggunakan pustaka Azure Identity dengan Azure CLI untuk autentikasi pengguna ke Azure Services. Pengembang juga dapat menggunakan Visual Studio atau Visual Studio Code untuk mengautentikasi panggilan mereka. Untuk informasi selengkapnya, lihat Mengautentikasi klien dengan pustaka klien Azure Identity.
Masuk ke Azure
Jalankan perintah
login
.az login
Jika CLI dapat membuka browser default Anda, CLI akan melakukannya dan memuat halaman masuk Azure.
Jika tidak, buka halaman browser di https://aka.ms/devicelogin dan masukkan kode otorisasi yang ditampilkan di terminal Anda.
Masuk menggunakan kredensial akun Anda di browser.
Memberikan akses ke brankas kunci Anda
Untuk mendapatkan izin ke brankas kunci Anda melalui Kontrol Akses Berbasis Peran (RBAC), tetapkan peran ke "Nama Prinsipal Pengguna" (UPN) Anda menggunakan perintah Azure CLI az role assignment create.
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>"
Ganti <upn>, <subscription-id>, <resource-group-name> , dan <your-unique-keyvault-name> dengan nilai aktual Anda. UPN Anda biasanya akan dalam format alamat email (misalnya, username@domain.com).
Buat aplikasi konsol .NET baru
Di shell perintah, jalankan perintah berikut untuk membuat proyek bernama
key-vault-console-app
:dotnet new console --name key-vault-console-app
Ubah ke direktori key-vault-console-app yang baru dibuat, dan jalankan perintah berikut untuk membuat proyek:
dotnet build
Output build tidak boleh berisi peringatan atau kesalahan.
Build succeeded. 0 Warning(s) 0 Error(s)
Menginstal paket
Dari shell perintah, instal pustaka klien rahasia Azure Key Vault untuk .NET:
dotnet add package Azure.Security.KeyVault.Keys
Untuk mulai cepat ini, Anda juga harus menginstal pustaka klien Azure Identity:
dotnet add package Azure.Identity
Atur variabel lingkungan
Aplikasi ini menggunakan nama brankas kunci Anda sebagai variabel lingkungan yang disebut KEY_VAULT_NAME
.
Windows
set KEY_VAULT_NAME=<your-key-vault-name>
Windows PowerShell
$Env:KEY_VAULT_NAME="<your-key-vault-name>"
macOS atau Linux
export KEY_VAULT_NAME=<your-key-vault-name>
Model objek
Pustaka klien kunci Azure Key Vault untuk .NET memungkinkan Anda mengelola kunci. Bagian Contoh kode memperlihatkan cara membuat klien, mengatur kunci, mengambil kunci, dan menghapus kunci.
Contoh kode
Menambahkan instruksi
Tambahkan arahan berikut di bagian atas Program.cs:
using System;
using Azure.Identity;
using Azure.Security.KeyVault.Keys;
Mengautentikasi dan membuat klien
Permintaan aplikasi ke sebagian besar layanan Azure harus diotorisasi. Menggunakan kelas DefaultAzureCredential yang disediakan oleh pustaka klien Azure Identity adalah pendekatan yang direkomendasikan untuk menerapkan koneksi tanpa kata sandi ke layanan Azure dalam kode Anda. DefaultAzureCredential
mendukung beberapa metode autentikasi dan menentukan metode autentikasi yang harus digunakan saat runtime bahasa umum. Pendekatan ini memungkinkan aplikasi Anda menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda (lokal vs. produksi) tanpa menerapkan kode spesifik per lingkungan.
Dalam mulai cepat ini, DefaultAzureCredential
autentikasi ke brankas kunci menggunakan kredensial pengguna pengembangan lokal yang masuk ke Azure CLI. Saat aplikasi disebarkan ke Azure, kode yang sama DefaultAzureCredential
dapat secara otomatis menemukan dan menggunakan identitas terkelola yang ditetapkan ke App Service, Komputer Virtual, atau layanan lainnya. Untuk informasi selengkapnya, lihat Gambaran Umum Identitas Terkelola.
Dalam contoh ini, nama brankas kunci Anda diperluas ke URI brankas kunci, dalam format https://<your-key-vault-name>.vault.azure.net
. Untuk informasi selengkapnya tentang mengautentikasi ke brankas kunci, lihat Panduan Pengembang.
var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = $"https://{keyVaultName}.vault.azure.net";
var client = new KeyClient(new Uri(kvUri), new DefaultAzureCredential());
Menyimpan kunci
Untuk tugas ini, gunakan metode CreateKeyAsync. Parameter metode menerima nama kunci dan jenis kunci.
var key = await client.CreateKeyAsync("myKey", KeyType.Rsa);
Catatan
Jika nama kunci ada, kode ini akan membuat versi baru kunci tersebut.
Mengambil kunci
Sekarang Anda dapat mengambil kunci yang dibuat sebelumnya dengan metode GetKeyAsync.
var key = await client.GetKeyAsync("myKey");
Menghapus kunci
Terakhir, mari kita hapus dan bersihkan kunci dari kubah kunci Anda dengan metode StartDeleteKeyAsync dan purgeDeletedKey.
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");
Kode Sampel
Ubah aplikasi konsol .NET untuk berinteraksi dengan Key Vault dengan menyelesaikan langkah-langkah berikut:
Ganti kode di Program.cs dengan kode berikut:
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."); } } }
Menguji dan memverifikasi
Jalankan perintah berikut untuk membangun proyek
dotnet build
Jalankan perintah berikut untuk menjalankan aplikasi.
dotnet run
Jika diminta, masukkan nilai rahasia. Misalnya, mySecretPassword.
Variasi output berikut akan muncul:
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.
Langkah berikutnya
Dalam mulai cepat ini, Anda akan membuat brankas kunci, menyimpan rahasia, dan menampilkan rahasia tersebut.
Untuk mempelajari selengkapnya tentang Key Vault dan cara mengintegrasikannya dengan aplikasi Anda, lihat artikel berikut: