Mulai cepat: Pustaka klien rahasia Azure Key Vault untuk .NET

Mulai menggunakan pustaka klien rahasia Azure Key Vault untuk .NET. Azure Key Vault adalah layanan awan yang menyediakan penyimpanan aman untuk 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 akan mempelajari tentang cara membuat, mengambil, dan menghapus rahasia dari brankas kunci Azure menggunakan pustaka klien .NET

Sumber daya pustaka klien Key Vault:

Dokumentasi referensi API | Kode sumber pustaka | Paket (NuGet)

Untuk informasi selengkapnya tentang Key Vault dan rahasia, lihat:

Prasyarat

Mulai cepat ini menggunakan dotnet dan Azure CLI atau Azure PowerShell.

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

  1. Jalankan perintah az 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.

  2. Masuk menggunakan kredensial akun Anda di browser.

Memberikan akses ke brankas kunci Anda

Untuk memberikan izin aplikasi Anda ke brankas kunci Anda melalui Kontrol Akses Berbasis Peran (RBAC), tetapkan peran menggunakan perintah Azure CLI az role assignment create.

az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Ganti <app-id>, <subscription-id>, <resource-group-name> , dan <your-unique-keyvault-name> dengan nilai aktual Anda. <app-id> adalah ID Aplikasi (klien) dari aplikasi terdaftar Anda di Azure AD.

Buat aplikasi konsol .NET baru

  1. Di shell perintah, jalankan perintah berikut untuk membuat proyek bernama key-vault-console-app:

    dotnet new console --name key-vault-console-app
    
  2. 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.Secrets

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 rahasia Azure Key Vault untuk .NET memungkinkan Anda mengelola rahasia. Bagian Contoh kode memperlihatkan cara membuat klien, mengatur rahasia, menampilkan rahasia, dan menghapus rahasia.

Contoh kode

Menambahkan instruksi

Tambahkan arahan berikut di bagian atas Program.cs:

using System;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

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.

string keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = "https://" + keyVaultName + ".vault.azure.net";

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

Menyimpan rahasia

Sekarang setelah aplikasi konsol diautentikasi, tambahkan rahasia ke brankas kunci. Untuk tugas ini, gunakan metode SetSecretAsync.

Parameter pertama metode menerima nama untuk rahasia tersebut. Dalam sampel ini, variabel secretName menyimpan string "mySecret".

Parameter kedua metode menerima nilai untuk rahasia. Dalam sampel ini, rahasia dimasukkan oleh pengguna melalui commandline dan disimpan dalam variabel secretValue.

await client.SetSecretAsync(secretName, secretValue);

Catatan

Jika nama rahasia ada, kode akan membuat versi baru dari rahasia tersebut.

Menampilkan rahasia

Kini Anda dapat mengambil nilai yang ditetapkan sebelumnya dengan metode GetSecretAsync.

var secret = await client.GetSecretAsync(secretName);

Rahasia Anda kini telah disimpan sebagai secret.Value.

Menghapus rahasia

Terakhir, mari kita hapus rahasia dari brankas kunci Anda dengan metode StartDeleteSecretAsync dan PurgeDeletedSecretAsync.

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);

Kode Sampel

Ubah aplikasi konsol .NET untuk berinteraksi dengan Key Vault dengan menyelesaikan langkah-langkah berikut:

  1. Ganti kode di Program.cs dengan kode berikut:

    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.");
            }
        }
    }
    

Menguji dan memverifikasi

  1. Jalankan perintah berikut untuk menjalankan aplikasi.

    dotnet run
    
  2. Jika diminta, masukkan nilai rahasia. Misalnya, mySecretPassword.

Variasi output berikut akan muncul:

Input the value of your secret > mySecretPassword
Creating a secret in <your-unique-keyvault-name> called 'mySecret' with the value 'mySecretPassword' ... done.
Forgetting your secret.
Your secret is ''.
Retrieving your secret from <your-unique-keyvault-name>.
Your secret is 'mySecretPassword'.
Deleting your secret from <your-unique-keyvault-name> ... done.    
Purging your secret from <your-unique-keyvault-name> ... done.

Langkah berikutnya

Untuk mempelajari selengkapnya tentang Key Vault dan cara mengintegrasikannya dengan aplikasi Anda, lihat artikel berikut: