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

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

Dalam tutorial ini, Anda belajar cara mendapatkan aplikasi konsol untuk membaca informasi dari Azure Key Vault. Aplikasi akan menggunakan identitas yang dikelola komputer virtual untuk mengautentikasi ke Key Vault.

Tutorial menunjukkan kepada Anda cara:

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

Sebelum Anda memulai, baca konsep dasar Key Vault.

Jika Anda tidak memiliki langganan Azure, buat akun gratis.

Prasyarat

Untuk Windows, Mac, dan Linux:

Membuat sumber daya dan menetapkan izin

Sebelum Anda mulai mengodekan Anda perlu membuat beberapa sumber daya, letakkan rahasia ke dalam brankas kunci Anda, dan tetapkan izin.

Masuk ke Azure

Untuk masuk ke Azure dengan menggunakan perintah berikut:

az login

Buat grup sumber daya dan brankas kunci

Mulai cepat ini menggunakan Azure key vault yang telah dibuat sebelumnya. Anda dapat membuat key vault dengan mengikuti langkah-langkah di mulai cepat Azure CLI, mulai cepat Azure PowerShell, atau mulai cepat portal Microsoft Azure.

Atau, Anda cukup menjalankan perintah Azure CLI atau Azure PowerShell di bawah ini.

Penting

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

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

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup"

Mengisi brankas 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 perlukan agar tetap aman dan tersedia untuk aplikasi Anda.

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

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

Membuat mesin virtual

Buat komputer virtual Windows atau Linux menggunakan salah satu metode berikut:

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

Menetapkan identitas ke komputer virtual

Buat identitas yang ditetapkan sistem untuk komputer virtual dengan contoh berikut:

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

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

Tetapkan izin identitas yang dibuat sebelumnya ke brankas kunci Anda dengan perintah set-policy keyvault az:

az keyvault set-policy --name '<your-unique-key-vault-name>' --object-id <VMSystemAssignedIdentity> --secret-permissions  get list set delete

Masuk ke komputer virtual

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

Menyiapkan aplikasi konsol

Buat aplikasi konsol dan pasang paket yang diperlukan menggunakan dotnet perintah.

Pasang .NET core 2.0

Untuk memasang .NET Core, buka halaman unduhan .NET.

Membuat dan menjalankan contoh aplikasi .NET

Buka prompt perintah.

Anda dapat mencetak "Halo Dunia" ke konsol dengan menjalankan perintah berikut:

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

Pasang paket

Dari jendela konsol, pasang pustaka rahasia Azure Key Vault untuk .NET:

dotnet add package Azure.Security.KeyVault.Secrets

Untuk mulai cepat ini, Anda harus memasang paket identitas berikut untuk mengautentikasi ke Azure Key Vault:

dotnet add package Azure.Identity

Menjalankan aplikasi konsol

Buka berkas program.cs dan tambahkan paket ini:

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

Tambahkan baris ini, perbarui URI untuk mencerminkan vaultUri brankas kunci Anda. Di bawah ini kode menggunakan 'DefaultAzureCredential()' untuk autentikasi ke brankas kunci, yang menggunakan token dari identitas yang dikelola aplikasi untuk mengautentikasi. Kode ini juga menggunakan backoff eksponensial untuk dicoba jika Key Vault sedang dicekik.

  class Program
    {
        static void Main(string[] args)
        {
            string secretName = "mySecret";
            string keyVaultName = "<your-key-vault-name>";
            var kvUri = "https://<your-key-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

Jika tidak lagi diperlukan, hapus komputer virtual dan brankas kunci Anda.

Langkah berikutnya