Tutorial: Menggunakan Azure Key Vault dengan komputer virtual di .NET

Azure Key Vault membantu Anda melindungi rahasia seperti kunci API dan string koneksi database yang dibutuhkan aplikasi, layanan, dan sumber daya Anda.

Dalam tutorial ini, Anda mengonfigurasi aplikasi konsol untuk membaca informasi dari Azure Key Vault. Aplikasi ini menggunakan identitas terkelola VM untuk mengautentikasi ke Key Vault.

Tutorial menunjukkan kepada Anda cara:

  • Buat grup sumber daya.
  • Buat brankas kunci.
  • Menambahkan rahasia ke brankas kunci.
  • Mengambil rahasia dari brankas kunci.
  • Buat komputer virtual Azure.
  • Mengaktifkan identitas terkelola untuk komputer virtual.
  • Menetapkan izin ke identitas Mesin Virtual.

Sebelum memulai, baca konsep dasar Key Vault.

Jika Anda tidak memiliki langganan Azure, buat akun free.

Prasyarat

Untuk Windows, Mac, dan Linux:

Membuat sumber daya dan menetapkan izin

Sebelum Anda mulai memprogram, Anda perlu membuat beberapa sumber daya, menyimpan kunci rahasia ke dalam brankas kunci Anda, dan menetapkan izin.

Masuk ke Azure

Masuk ke Azure dengan Azure CLI atau Azure PowerShell:

az login

Buat grup sumber daya dan Key Vault.

Panduan mulai cepat ini menggunakan brankas kunci Azure yang sudah dibuat sebelumnya. Anda dapat membuat brankas kunci dengan mengikuti langkah-langkah dalam panduan cepat ini:

Atau, Anda dapat menjalankan perintah Azure CLI atau Azure PowerShell ini.

Penting

Setiap key vault harus memiliki nama yang unik. Ganti <vault-name> dengan nama brankas kunci Anda dalam contoh berikut.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Isi penyimpanan kunci Anda dengan rahasia

Mari membuat rahasia yang disebut mySecret, dengan nilai Berhasil!. Rahasia mungkin berupa kata sandi, string koneksi SQL, atau informasi lain yang Anda butuhkan untuk menjaga keamanan dan ketersediaan aplikasi Anda.

Untuk menambahkan rahasia ke brankas kunci yang baru dibuat, gunakan perintah berikut:

az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"

Membuat mesin virtual

Buat VM Windows atau Linux dengan menggunakan salah satu metode berikut:

Windows Linux
Azure CLI Azure CLI
PowerShell PowerShell
Portal Azure Portal Azure

Menetapkan identitas ke komputer virtual

Buat identitas terkelola yang ditetapkan sistem untuk VM:

az vm identity assign --name <vm-name> --resource-group <resource-group>

Catat identitas yang ditetapkan sistem yang ditampilkan dalam kode berikut. Output dari perintah sebelumnya adalah:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

Menetapkan izin ke identitas komputer virtual

Untuk mendapatkan izin ke brankas kunci Anda melalui Role-Based Access Control (RBAC), tetapkan peran ke "Nama Prinsipal Pengguna" (UPN) Anda menggunakan perintah Azure CLI az role assignment create.

az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

Ganti <upn>, <subscription-id>, dan <vault-name> dengan nilai aktual Anda. Jika Anda menggunakan nama grup sumber daya yang berbeda, ganti "myResourceGroup" juga. UPN Anda biasanya akan dalam format alamat email (misalnya, username@domain.com).

Masuk ke VM

Untuk masuk ke VM, ikuti instruksi di Sambungkan dan masuk ke komputer virtual Azure Windows atau Sambungkan dan masuk ke komputer virtual Linux Azure.

Menyiapkan aplikasi konsol

Buat aplikasi konsol dan instal paket yang diperlukan dengan dotnet perintah .

Menginstal .NET

Untuk menginstal .NET, buka halaman unduhan .NET.

Membuat dan menjalankan contoh aplikasi .NET

Buka prompt perintah dan jalankan:

dotnet new console -n keyvault-console-app
cd keyvault-console-app
dotnet run

Aplikasi mencetak "Halo Dunia" ke konsol.

Instal paket-paket tersebut

Dari jendela konsol, instal pustaka klien rahasia Azure Key Vault dan pustaka identitas Azure:

dotnet add package Azure.Security.KeyVault.Secrets
dotnet add package Azure.Identity

Mengedit aplikasi konsol

Buka Program.cs dan tambahkan arahan berikut using :

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

Ganti metode Main dengan kode berikut, dan perbarui <vault-name> dengan nama brankas kunci Anda. Kode ini menggunakan DefaultAzureCredential untuk mengautentikasi ke Key Vault, yang menggunakan token dari identitas terkelola VM. Ini juga mengonfigurasi backoff eksponensial untuk percobaan ulang jika Key Vault mengalami pembatasan laju.

  class Program
    {
        static void Main(string[] args)
        {
            string secretName = "mySecret";
            string keyVaultName = "<vault-name>";
            var kvUri = "https://<vault-name>.vault.azure.net";
            SecretClientOptions options = new SecretClientOptions()
            {
                Retry =
                {
                    Delay= TimeSpan.FromSeconds(2),
                    MaxDelay = TimeSpan.FromSeconds(16),
                    MaxRetries = 5,
                    Mode = RetryMode.Exponential
                 }
            };

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

            Console.Write("Input the value of your secret > ");
            string secretValue = Console.ReadLine();

            Console.Write("Creating a secret in " + keyVaultName + " called '" + secretName + "' with the value '" + secretValue + "' ...");

            client.SetSecret(secretName, secretValue);

            Console.WriteLine(" done.");

            Console.WriteLine("Forgetting your secret.");
            secretValue = "";
            Console.WriteLine("Your secret is '" + secretValue + "'.");

            Console.WriteLine("Retrieving your secret from " + keyVaultName + ".");

            KeyVaultSecret secret = client.GetSecret(secretName);

            Console.WriteLine("Your secret is '" + secret.Value + "'.");

            Console.Write("Deleting your secret from " + keyVaultName + " ...");

            client.StartDeleteSecret(secretName);

            System.Threading.Thread.Sleep(5000);
            Console.WriteLine(" done.");

        }
    }

Membersihkan sumber daya

Ketika Anda tidak lagi membutuhkannya, hapus VM dan brankas kunci.

Langkah selanjutnya