Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Key Vault menyediakan cara untuk menyimpan kredensial dan rahasia lainnya dengan peningkatan keamanan. Tetapi kode Anda perlu mengautentikasi dengan Key Vault untuk mengambil data tersebut. Identitas terkelola untuk sumber daya Azure menyelesaikan masalah ini dengan memberikan layanan Azure identitas yang dikelola secara otomatis di Microsoft Entra ID. Kode Anda menggunakan identitas ini untuk mengautentikasi ke layanan apa pun yang mendukung autentikasi Microsoft Entra, termasuk Key Vault, tanpa menyematkan kredensial dalam kode.
Dalam tutorial ini, Anda membuat dan menyebarkan aplikasi web Azure untuk Azure App Service, lalu menggunakan identitas terkelola untuk mengautentikasi aplikasi ke brankas kunci dengan menggunakan pustaka klien rahasia Azure Key Vault untuk .NET dan Azure CLI. Prinsip yang sama berlaku jika Anda menggunakan bahasa lain, Azure PowerShell, atau portal Azure.
Untuk informasi selengkapnya tentang aplikasi dan penyebaran web App Service, lihat:
- Gambaran umum Layanan Aplikasi
- Buat aplikasi web ASP.NET Core di Azure App Service
- Menyebarkan file ke App Service
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan:
- Langganan Azure. Buat satu secara gratis.
- SDK .NET 8.0 atau yang lebih baru.
- Azure CLI atau Azure PowerShell.
- Azure Key Vault. Anda dapat membuat brankas kunci dengan menggunakan portal Azure, Azure CLI, atau Azure PowerShell.
- Sebuah Key Vault secret. Anda dapat membuat rahasia dengan menggunakan portal Azure, PowerShell, atau Azure CLI.
Jika Anda sudah memiliki aplikasi web yang sudah diterapkan di Azure App Service, langsung ke mengonfigurasi aplikasi web agar terhubung ke Key Vault dan memodifikasi aplikasi untuk mengakses Key Vault Anda.
Membuat aplikasi .NET Core
Dalam langkah ini, siapkan proyek .NET lokal.
Di jendela terminal, buat direktori bernama akvwebapp dan beralih ke direktori tersebut:
mkdir akvwebapp
cd akvwebapp
Buat aplikasi web .NET dengan menggunakan perintah web baru dotnet:
dotnet new web
Jalankan aplikasi secara lokal untuk melihat tampilannya sebelum Anda menyebarkannya ke Azure:
dotnet run
Di browser web, buka aplikasi di http://localhost:5000. Anda akan melihat pesan "Halo Dunia!" dari aplikasi sampel.
Untuk informasi selengkapnya tentang membuat aplikasi web, lihat Membuat aplikasi web ASP.NET Core di Azure App Service.
Menyebarkan aplikasi ke Azure
Dalam langkah ini, sebarkan aplikasi .NET ke Azure App Service dengan menggunakan penyebaran zip. Zip deploy adalah mekanisme deployment berbasis paket yang disarankan untuk App Service. Untuk pengiriman berkelanjutan dari kontrol sumber, gunakan GitHub Actions atau Azure DevOps Pipelines sebagai gantinya.
Membuat grup sumber daya
Buat grup sumber daya untuk berisi brankas kunci dan aplikasi web dengan menggunakan az group create:
az group create --name "<resource-group>" --location "EastUS"
Membuat paket App Service
Buat App Service plan menggunakan az appservice plan create. Contoh berikut membuat paket bernama myAppServicePlan pada tier gratis (FREE):
az appservice plan create --name myAppServicePlan --resource-group <resource-group> --sku FREE
Membuat aplikasi web
Buat aplikasi web Azure dalam paket myAppServicePlan.
Penting
Seperti brankas kunci, aplikasi web Azure harus memiliki nama yang unik secara global. Ganti <webapp-name> dengan nama aplikasi web Anda.
az webapp create --resource-group "<resource-group>" --plan "myAppServicePlan" --name "<webapp-name>"
Buka aplikasi baru untuk mengonfirmasi bahwa aplikasi sedang berjalan:
https://<webapp-name>.azurewebsites.net
Anda melihat halaman default untuk aplikasi web Azure baru.
Terapkan aplikasi lokal Anda dengan ZIP Deploy
Dari direktori proyek akvwebapp, bangun proyek dan buat file zip deployment:
dotnet publish -c Release -o ./publish
cd publish
zip -r ../akvwebapp.zip .
cd ..
Tip
Pada Windows tanpa zip, gunakan PowerShell: Compress-Archive -Path .\publish\* -DestinationPath .\akvwebapp.zip.
Sebarkan zip ke aplikasi web Anda dengan menggunakan az webapp deploy:
az webapp deploy --resource-group "<resource-group>" --name "<webapp-name>" --src-path ./akvwebapp.zip --type zip
Segarkan aplikasi yang telah diterapkan di peramban web Anda:
https://<webapp-name>.azurewebsites.net
Anda melihat pesan "Halo Dunia!" yang sama dengan yang Anda lihat di http://localhost:5000.
Mengonfigurasi aplikasi web untuk menyambungkan ke Key Vault
Di bagian ini, Anda mengonfigurasi aplikasi web agar dapat mengakses Key Vault dan memperbarui kode aplikasi untuk mengambil rahasia.
Membuat dan menetapkan akses ke identitas terkelola
Gunakan identitas terkelola untuk mengautentikasi aplikasi web untuk Key Vault. Identitas terkelola menghapus kebutuhan Anda untuk mengelola kredensial dalam kode.
Buat identitas untuk aplikasi dengan menggunakan az webapp identity assign:
az webapp identity assign --name "<webapp-name>" --resource-group "<resource-group>"
Perintah mengembalikan cuplikan JSON yang mirip dengan ini:
{
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
}
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).
Sesuaikan aplikasi untuk mengakses brankas kunci Anda
Tutorial ini menggunakan pustaka klien rahasia Azure Key Vault. Anda juga dapat menggunakan pustaka klien sertifikat Azure Key Vault atau pustaka klien kunci Azure Key Vault.
Instal paket-paket tersebut
Dari jendela terminal, instal pustaka klien rahasia Azure Key Vault dan pustaka klien Azure Identity:
dotnet add package Azure.Identity
dotnet add package Azure.Security.KeyVault.Secrets
Memperbarui kode
Buka Program.cs di proyek Anda akvwebapp .
Tambahkan arahan ini using di bagian atas file:
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Azure.Core;
Tambahkan baris berikut sebelum pemanggilan app.MapGet, lalu perbarui <vault-name> dengan nama key vault Anda. Kode ini menggunakan DefaultAzureCredential untuk mengautentikasi ke Key Vault melalui identitas terkelola aplikasi web. Untuk informasi selengkapnya, lihat panduan pengembang. Kode ini juga mengonfigurasi strategi backoff eksponensial untuk percobaan ulang jika Key Vault mengalami pembatasan laju. Untuk detail tentang batas transaksi, lihat panduan pembatasan Azure Key Vault.
SecretClientOptions options = new SecretClientOptions()
{
Retry =
{
Delay= TimeSpan.FromSeconds(2),
MaxDelay = TimeSpan.FromSeconds(16),
MaxRetries = 5,
Mode = RetryMode.Exponential
}
};
var client = new SecretClient(new Uri("https://<vault-name>.vault.azure.net/"), new DefaultAzureCredential(), options);
KeyVaultSecret secret = client.GetSecret("<secret-name>");
string secretValue = secret.Value;
Perbarui baris app.MapGet("/", () => "Halo Dunia!"); ke:
app.MapGet("/", () => secretValue);
Simpan perubahan Anda.
Menyebarkan ulang aplikasi web Anda
Bangun kembali paket penyebaran dan sebarkan ulang:
dotnet publish -c Release -o ./publish
cd publish
zip -r ../akvwebapp.zip .
cd ..
az webapp deploy --resource-group "<resource-group>" --name "<webapp-name>" --src-path ./akvwebapp.zip --type zip
Masuk ke aplikasi web anda yang sudah selesai
https://<webapp-name>.azurewebsites.net
Di mana Anda sebelumnya melihat "Halo Dunia!", Anda sekarang melihat nilai rahasia Anda.