Mengautentikasi aplikasi yang dihosting Azure ke sumber daya Azure dengan Azure SDK untuk .NET
Saat aplikasi dihosting di Azure menggunakan layanan seperti Azure App Service, Azure Virtual Machines, atau Azure Container Instances, pendekatan yang disarankan untuk mengautentikasi aplikasi ke sumber daya Azure adalah menggunakan identitas terkelola.
Identitas terkelola menyediakan identitas untuk aplikasi Anda sehingga dapat terhubung ke sumber daya Azure lainnya tanpa perlu menggunakan kunci rahasia atau rahasia aplikasi lainnya. Secara internal, Azure mengetahui identitas aplikasi Anda dan sumber daya apa yang diizinkan untuk disambungkan. Azure menggunakan informasi ini untuk secara otomatis mendapatkan token Microsoft Entra untuk aplikasi guna memungkinkannya terhubung ke sumber daya Azure lainnya, semua tanpa Anda harus mengelola rahasia aplikasi apa pun.
Tipe identitas terkelola
Ada dua jenis identitas terkelola:
- Identitas terkelola yang ditetapkan sistem - Jenis identitas terkelola ini disediakan oleh dan diikat langsung ke sumber daya Azure. Saat Mengaktifkan identitas terkelola pada sumber daya Azure, Anda mendapatkan identitas terkelola yang ditetapkan sistem untuk sumber daya tersebut. Identitas terkelola yang ditetapkan sistem terkait dengan siklus hidup sumber daya Azure yang terkait dengannya. Jadi, ketika sumber daya dihapus, Azure akan secara otomatis menghapus identitas untuk Anda. Karena yang harus Anda lakukan adalah mengaktifkan identitas terkelola untuk sumber daya Azure yang menghosting kode Anda, ini adalah jenis identitas terkelola term mudah untuk digunakan.
- Identitas yang dikelola pengguna - Anda juga dapat membuat identitas terkelola sebagai sumber daya Azure mandiri. Ini paling sering digunakan ketika solusi Anda memiliki beberapa beban kerja yang berjalan pada beberapa sumber daya Azure yang semuanya perlu berbagi identitas yang sama dan izin yang sama. Misalnya, jika solusi Anda memiliki komponen yang berjalan pada beberapa App Service dan instans komputer virtual yang semuanya memerlukan akses ke set sumber daya Azure yang sama, membuat dan menggunakan identitas terkelola yang ditetapkan pengguna di seluruh sumber daya tersebut akan masuk akal.
Artikel ini akan membahas langkah-langkah untuk mengaktifkan dan menggunakan identitas terkelola yang ditetapkan sistem untuk aplikasi. Jika Anda perlu menggunakan identitas terkelola yang ditetapkan pengguna, lihat artikel Mengelola identitas terkelola yang ditetapkan pengguna untuk melihat cara membuat identitas terkelola yang ditetapkan pengguna.
1 - Aktifkan identitas terkelola di sumber daya Azure yang menghosting aplikasi
Langkah pertama adalah mengaktifkan identitas terkelola di sumber daya Azure yang menghosting aplikasi Anda. Misalnya, jika Anda menghosting aplikasi .NET menggunakan Azure App Service, Anda perlu mengaktifkan identitas terkelola untuk aplikasi web App Service yang menghosting aplikasi Anda. Jika Anda menggunakan komputer virtual untuk menghosting aplikasi, Anda akan mengaktifkan VM untuk menggunakan identitas terkelola.
Anda dapat mengaktifkan identitas terkelola yang akan digunakan untuk sumber daya Azure menggunakan portal Microsoft Azure atau Azure CLI.
2 - Menetapkan peran ke identitas terkelola
Selanjutnya, Anda perlu menentukan peran (izin) apa yang dibutuhkan aplikasi Anda dan menetapkan identitas terkelola ke peran tersebut di Azure. Identitas terkelola dapat ditetapkan peran di sumber daya, grup sumber daya, atau cakupan langganan. Contoh ini akan menunjukkan cara menetapkan peran di cakupan grup sumber daya karena sebagian besar aplikasi mengelompokkan semua sumber daya Azure mereka ke dalam satu grup sumber daya.
3 - Menerapkan DefaultAzureCredential di aplikasi Anda
DefaultAzureCredential
mendukung beberapa metode autentikasi dan menentukan metode autentikasi yang digunakan saat runtime bahasa umum. Dengan cara ini, aplikasi Anda dapat menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda tanpa menerapkan kode khusus lingkungan.
Urutan dan lokasi di mana DefaultAzureCredential
mencari kredensial ditemukan di DefaultAzureCredential.
Untuk mengimplementasikan DefaultAzureCredential
, pertama-tama tambahkan Azure.Identity
dan paket Microsoft.Extensions.Azure
secara opsional ke aplikasi Anda. Anda dapat melakukan ini menggunakan baris perintah atau Manajer Paket NuGet.
Buka lingkungan terminal pilihan Anda di direktori proyek aplikasi dan masukkan perintah di bawah ini.
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Layanan Azure umumnya diakses menggunakan kelas klien yang sesuai dari SDK. Kelas dan layanan kustom Anda sendiri harus terdaftar dalam file Program.cs
sehingga dapat diakses melalui injeksi dependensi di seluruh aplikasi Anda. Di dalam Program.cs
, ikuti langkah-langkah di bawah ini untuk menyiapkan dengan benar layanan Anda dan DefaultAzureCredential
.
- Sertakan namespace layanan
Azure.Identity
danMicrosoft.Extensions.Azure
dengan pernyataan penggunaan. - Daftarkan layanan Azure menggunakan metode pembantu yang relevan.
- Teruskan instans
DefaultAzureCredential
objek keUseCredential
metode .
Contoh ini ditampilkan di segmen kode berikut.
using Microsoft.Extensions.Azure;
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddAzureClients(x =>
{
x.AddBlobServiceClient(new Uri("https://<account-name>.blob.core.windows.net"));
x.UseCredential(new DefaultAzureCredential());
});
Atau, Anda juga dapat menggunakan DefaultAzureCredential
layanan Anda secara lebih langsung tanpa bantuan metode pendaftaran Azure tambahan, seperti yang terlihat di bawah ini.
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddSingleton<BlobServiceClient>(x =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Ketika kode di atas dijalankan di stasiun kerja lokal Anda selama pengembangan lokal, kode tersebut akan melihat variabel lingkungan untuk perwakilan layanan aplikasi atau di Visual Studio, VS Code, Azure CLI, atau Azure PowerShell untuk serangkaian kredensial pengembang, yang salah satunya dapat digunakan untuk mengautentikasi aplikasi ke sumber daya Azure selama pengembangan lokal.
Saat disebarkan ke Azure, kode yang sama ini juga dapat mengautentikasi aplikasi Anda ke sumber daya Azure lainnya. DefaultAzureCredential
dapat mengambil pengaturan lingkungan dan konfigurasi identitas terkelola untuk mengautentikasi ke layanan lain secara otomatis.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk