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.
Pendekatan yang disarankan untuk mengautentikasi aplikasi yang dihosting Azure ke sumber daya Azure lainnya adalah dengan menggunakan identitas terkelola. Pendekatan ini didukung untuk sebagian besar layanan Azure, termasuk aplikasi yang dihosting di Azure App Service, Azure Container Apps, dan Azure Virtual Machines. Temukan selengkapnya tentang berbagai teknik dan pendekatan autentikasi di halaman gambaran umum autentikasi . Di bagian depan, Anda akan mempelajari:
- Konsep identitas terkelola yang penting
- Cara membuat identitas terkelola yang ditetapkan pengguna untuk aplikasi Anda
- Cara menetapkan peran ke identitas terkelola yang ditetapkan pengguna
- Cara mengautentikasi menggunakan identitas terkelola yang ditetapkan pengguna dari kode aplikasi Anda
Konsep identitas terkelola yang penting
Identitas terkelola memungkinkan aplikasi Anda terhubung dengan aman ke sumber daya Azure lainnya tanpa menggunakan kunci rahasia atau rahasia aplikasi lainnya. Secara internal, Azure melacak identitas dan sumber daya mana yang diizinkan untuk disambungkan. Azure menggunakan informasi ini untuk mendapatkan token Microsoft Entra secara otomatis untuk aplikasi agar dapat tersambung ke sumber daya Azure lainnya.
Ada dua jenis identitas terkelola yang perlu dipertimbangkan saat mengonfigurasi aplikasi yang dihosting:
- Identitas terkelola yang ditetapkan sistem diaktifkan langsung pada sumber daya Azure dan terkait dengan siklus hidupnya. Saat sumber daya dihapus, Azure secara otomatis menghapus identitas untuk Anda. Identitas yang ditetapkan sistem memberikan pendekatan minimalis untuk menggunakan identitas terkelola.
- Identitas terkelola yang ditetapkan pengguna dibuat sebagai sumber daya Azure mandiri dan menawarkan fleksibilitas dan kemampuan yang lebih besar. Mereka ideal untuk solusi yang melibatkan beberapa sumber daya Azure yang perlu berbagi identitas dan izin yang sama. Misalnya, jika beberapa komputer virtual perlu mengakses set sumber daya Azure yang sama, identitas terkelola yang ditetapkan pengguna menyediakan penggunaan kembali dan manajemen yang dioptimalkan.
Petunjuk / Saran
Pelajari selengkapnya tentang memilih dan mengelola identitas terkelola yang ditetapkan sistem dan ditetapkan pengguna di artikel Rekomendasi praktik terbaik identitas terkelola .
Bagian berikut menjelaskan langkah-langkah untuk mengaktifkan dan menggunakan identitas terkelola yang ditetapkan pengguna untuk aplikasi yang dihosting Azure. Jika Anda perlu menggunakan identitas terkelola yang ditetapkan sistem, kunjungi artikel identitas terkelola yang ditetapkan sistem untuk informasi selengkapnya.
Membuat identitas terkelola yang ditetapkan pengguna
Identitas terkelola yang ditetapkan pengguna dibuat sebagai sumber daya mandiri di langganan Azure Anda menggunakan portal Microsoft Azure atau Azure CLI. Perintah Azure CLI dapat dijalankan di Azure Cloud Shell atau di stasiun kerja dengan Azure CLI yang diinstal.
Di portal Microsoft Azure, masukkan Identitas terkelola di bilah pencarian utama dan pilih hasil yang cocok di bawah bagian Layanan .
Pada halaman Identitas Terkelola , pilih + Buat.
Pada halaman Buat Identitas Terkelola yang Ditetapkan Pengguna , pilih langganan, grup sumber daya, dan wilayah untuk identitas terkelola yang ditetapkan pengguna, lalu berikan nama.
Pilih Tinjau + buat untuk meninjau dan memvalidasi input Anda.
Pilih Buat untuk membuat identitas terkelola yang ditetapkan pengguna.
Setelah identitas dibuat, pilih Buka sumber daya.
Pada halaman Gambaran Umum identitas baru, salin nilai ID Klien yang akan digunakan nanti saat Anda mengonfigurasi kode aplikasi.
Menetapkan identitas terkelola ke aplikasi Anda
Identitas terkelola yang ditetapkan pengguna dapat dikaitkan dengan satu atau beberapa sumber daya Azure. Semua sumber daya yang menggunakan identitas tersebut mendapatkan izin yang diterapkan melalui peran identitas.
Di portal Microsoft Azure, navigasikan ke sumber daya yang menghosting kode aplikasi Anda, seperti Azure App Service atau instans Aplikasi Kontainer Azure.
Dari halaman Gambaran Umum sumber daya, perluas Pengaturan dan pilih Identitas dari navigasi.
Pada halaman Identitas , beralihlah ke tab Pengguna yang ditetapkan.
Pilih + Tambahkan untuk membuka panel Tambahkan identitas terkelola yang ditetapkan pengguna .
Pada panel Tambahkan identitas terkelola yang ditetapkan pengguna , gunakan menu dropdown Langganan untuk memfilter hasil pencarian untuk identitas Anda. Gunakan kotak pencarian Identitas terkelola yang ditetapkan pengguna untuk menemukan identitas terkelola yang ditetapkan pengguna yang Anda aktifkan untuk sumber daya Azure yang menghosting aplikasi Anda.
Pilih identitas dan pilih Tambahkan di bagian bawah panel untuk melanjutkan.
Menetapkan peran ke identitas terkelola
Selanjutnya, tentukan peran mana yang dibutuhkan aplikasi Anda dan tetapkan peran tersebut ke identitas terkelola. Anda dapat menetapkan peran ke identitas terkelola pada cakupan berikut:
- Sumber Daya: Peran yang ditetapkan hanya berlaku untuk sumber daya tertentu tersebut.
- Grup sumber daya: Peran yang ditetapkan berlaku untuk semua sumber daya yang terkandung dalam grup sumber daya.
- Langganan: Peran yang ditetapkan berlaku untuk semua sumber daya yang terkandung dalam langganan.
Contoh berikut menunjukkan cara menetapkan peran di cakupan grup sumber daya, karena banyak aplikasi mengelola semua sumber daya Azure terkait menggunakan satu grup sumber daya.
Navigasi ke halaman Gambaran Umum grup sumber daya yang berisi aplikasi dengan identitas terkelola yang ditetapkan pengguna.
Pilih Kontrol akses (IAM) di navigasi kiri.
Pada halaman Kontrol akses (IAM), pilih + Tambahkan di menu atas lalu pilih Tambahkan penetapan peran untuk menavigasi ke halaman Tambahkan penetapan peran .
Halaman Tambahkan penetapan peran menyajikan alur kerja multi-langkah bertab untuk menetapkan peran ke identitas. Pada tab Peran awal, gunakan kotak pencarian di bagian atas untuk menemukan peran yang ingin Anda tetapkan ke identitas.
Pilih peran dari hasil lalu pilih Berikutnya untuk berpindah ke tab Anggota .
Untuk opsi Tetapkan akses ke , pilih Identitas terkelola.
Untuk opsi Anggota , pilih + Pilih anggota untuk membuka panel Pilih identitas terkelola .
Pada panel Pilih identitas terkelola , gunakan menu dropdown Langganan dan Identitas terkelola untuk memfilter hasil pencarian untuk identitas Anda. Gunakan kotak Pilih pencarian untuk menemukan identitas terkelola yang ditetapkan pengguna yang Anda aktifkan untuk sumber daya Azure yang menghosting aplikasi Anda.
Pilih identitas dan pilih Pilih di bagian bawah panel untuk melanjutkan.
Pilih Tinjau + tetapkan di bagian bawah halaman.
Pada tab Tinjau + tetapkan akhir, pilih Tinjau + tetapkan untuk menyelesaikan alur kerja.
Mengautentikasi ke layanan Azure dari aplikasi Anda
Pustaka Azure Identity menyediakan berbagai kredensial - implementasi TokenCredential yang disesuaikan untuk mendukung skenario yang berbeda dan alur autentikasi Microsoft Entra. Karena identitas terkelola tidak tersedia saat berjalan secara lokal, langkah-langkah di depan menunjukkan kredensial mana yang akan digunakan dalam skenario mana:
-
Lingkungan pengembangan lokal: Hanya selama pengembangan lokal, gunakan kelas yang disebut DefaultAzureCredential untuk rantai kredensial yang telah dikonfigurasi sebelumnya.
DefaultAzureCredentialmenemukan kredensial pengguna dari alat lokal atau IDE Anda, seperti Azure CLI atau Visual Studio Code. Ini juga memberikan fleksibilitas dan kenyamanan untuk percobaan ulang, waktu tunggu untuk respons, dan dukungan untuk beberapa opsi autentikasi. Kunjungi artikel Mengautentikasi ke layanan Azure selama pengembangan lokal untuk mempelajari selengkapnya. -
Aplikasi yang dihosting Azure: Saat aplikasi Anda berjalan di Azure, gunakan
ManagedIdentityCredentialuntuk menemukan identitas terkelola yang dikonfigurasi dengan aman untuk aplikasi Anda. Menentukan jenis kredensial yang tepat ini mencegah kredensial lain yang tersedia diambil secara tak terduga.
Menerapkan kode
Dalam proyek JavaScript, tambahkan paket @azure/identitas . Di terminal pilihan Anda, navigasikan ke direktori proyek aplikasi dan jalankan perintah berikut:
npm install @azure/identity
Layanan Azure diakses menggunakan kelas klien khusus dari berbagai pustaka klien Azure SDK. Di index.js, selesaikan langkah-langkah berikut untuk mengonfigurasi autentikasi berbasis token:
-
@azure/identityImpor paket. - Teruskan instans yang sesuai
TokenCredentialke klien:- Gunakan
DefaultAzureCredentialsaat aplikasi Anda berjalan secara lokal. - Gunakan
ManagedIdentityCredentialsaat aplikasi Anda berjalan di Azure dan konfigurasikan ID klien, ID sumber daya, atau ID objek.
- Gunakan
ID klien digunakan untuk mengidentifikasi identitas terkelola saat mengonfigurasi aplikasi atau layanan yang perlu mengautentikasi menggunakan identitas tersebut.
Ambil ID klien yang ditetapkan ke identitas terkelola yang ditetapkan pengguna menggunakan perintah berikut:
az identity show \ --resource-group <resource-group-name> \ --name <identity-name> \ --query 'clientId'Konfigurasikan
ManagedIdentityCredentialdengan ID klien:import { BlobServiceClient } from '@azure/storage-blob'; import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity'; console.log(process.env); function createBlobServiceClient() { const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME; if (!accountName) throw Error('Azure Storage accountName not found'); const url = `https://${accountName}.blob.core.windows.net`; if (process.env.NODE_ENV === "production") { const clientId = process.env.AZURE_CLIENT_ID; if (!clientId) throw Error('AZURE_CLIENT_ID not found for Managed Identity'); return new BlobServiceClient(url, new ManagedIdentityCredential(clientId)); } else { return new BlobServiceClient(url, new DefaultAzureCredential()); } } async function main() { try { const blobServiceClient = createBlobServiceClient(); const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME); // do something with client const properties = await containerClient.getProperties(); console.log(properties); } catch (err) { console.error("Error retrieving container properties:", err.message); throw err; } } main().catch((err) => { console.error("Error running sample:", err.message); process.exit(1); });
Menerapkan kode
Dalam proyek TypeScript, tambahkan paket @azure/identitas . Di terminal pilihan Anda, navigasikan ke direktori proyek aplikasi dan jalankan perintah berikut:
npm install typescript @azure/identity @types/node
Layanan Azure diakses menggunakan kelas klien khusus dari berbagai pustaka klien Azure SDK. Di index.js, selesaikan langkah-langkah berikut untuk mengonfigurasi autentikasi berbasis token:
-
@azure/identityImpor paket. - Teruskan instans yang sesuai
TokenCredentialke klien:- Gunakan
DefaultAzureCredentialsaat aplikasi Anda berjalan secara lokal - Gunakan
ManagedIdentityCredentialsaat aplikasi Anda berjalan di Azure dan konfigurasikan ID klien, ID sumber daya, atau ID objek.
- Gunakan
ID klien digunakan untuk mengidentifikasi identitas terkelola saat mengonfigurasi aplikasi atau layanan yang perlu mengautentikasi menggunakan identitas tersebut.
Ambil ID klien yang ditetapkan ke identitas terkelola yang ditetapkan pengguna menggunakan perintah berikut:
az identity show \ --resource-group <resource-group-name> \ --name <identity-name> \ --query 'clientId'Konfigurasikan
ManagedIdentityCredentialdengan ID klien:import { BlobServiceClient } from '@azure/storage-blob'; import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity'; function createBlobServiceClient(): BlobServiceClient { const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME; if (!accountName) throw Error('Azure Storage accountName not found'); const url = `https://${accountName}.blob.core.windows.net`; if (process.env.NODE_ENV === "production") { const clientId = process.env.AZURE_CLIENT_ID; if (!clientId) throw Error('AZURE_CLIENT_ID not found for Managed Identity'); return new BlobServiceClient(url, new ManagedIdentityCredential(clientId)); } else { return new BlobServiceClient(url, new DefaultAzureCredential()); } } async function main(): Promise<void> { try { const blobServiceClient = createBlobServiceClient(); const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME!); const properties = await containerClient.getProperties(); console.log(properties); } catch (err: any) { console.error("Error retrieving container properties:", err.message); throw err; } } main().catch((err: Error) => { console.error("Error running sample:", err.message); process.exit(1); });
Kode sebelumnya berpura-pura berbeda tergantung pada lingkungan tempat kode berjalan:
- Di stasiun kerja pengembangan lokal Anda,
DefaultAzureCredentiallihat variabel lingkungan untuk perwakilan layanan aplikasi atau di alat pengembang yang diinstal secara lokal, seperti Visual Studio Code, untuk serangkaian kredensial pengembang. - Saat disebarkan ke Azure,
ManagedIdentityCredentialmenemukan konfigurasi identitas terkelola Anda untuk mengautentikasi ke layanan lain secara otomatis.