Cara menggunakan identitas terkelola untuk App Service dan Azure Functions

Artikekl ini menunjukkan cara membuat identitas terkelola untuk aplikasi App Service dan Azure Functions dan cara menggunakannya untuk mengakses sumber daya lainnya.

Penting

Karena identitas terkelola tidak mendukung skenario lintas direktori, identitas tersebut tidak akan berperilaku seperti yang diharapkan jika aplikasi Anda dimigrasikan di seluruh langganan atau penyewa. Untuk membuat ulang identitas terkelola setelah pemindahan tersebut, lihat Akankah identitas terkelola dibuat ulang secara otomatis jika saya memindahkan langganan ke direktori lain?. Sumber daya hilir juga perlu memperbarui kebijakan akses untuk menggunakan identitas baru.

Catatan

Identitas terkelola tidak tersedia untuk aplikasi yang disebarkan di Azure Arc.

Identitas terkelola dari MICROSOFT Entra ID memungkinkan aplikasi Anda mengakses sumber daya lain yang dilindungi Microsoft Entra dengan mudah seperti Azure Key Vault. Identitas dikelola oleh platform Azure dan tidak mengharuskan Anda memprovisikan atau memutar rahasia. Untuk informasi selengkapnya tentang identitas terkelola di ID Microsoft Entra, lihat Identitas terkelola untuk sumber daya Azure.

Aplikasi Anda dapat diberikan dua jenis identitas:

  • Identitas yang ditetapkan sistem terkait dengan aplikasi Anda dan dihapus jika aplikasi Anda dihapus. Aplikasi hanya dapat memiliki satu identitas yang ditetapkan sistem.
  • Identitas yang ditetapkan pengguna adalah sumber daya Azure mandiri yang dapat ditetapkan ke aplikasi Anda. Aplikasi dapat memiliki beberapa identitas yang ditetapkan pengguna.

Konfigurasi identitas terkelola khusus untuk slot. Untuk mengonfigurasi identitas terkelola untuk slot penyebaran di portal, navigasikan ke slot terlebih dahulu. Untuk menemukan identitas terkelola untuk aplikasi web atau slot penyebaran di penyewa Microsoft Entra Anda dari portal Azure, cari langsung dari halaman Gambaran Umum penyewa Anda. Biasanya, nama slotnya mirip dengan <app-name>/slots/<slot-name>.

Video ini menunjukkan kepada Anda cara menggunakan identitas terkelola untuk App Service.

Langkah-langkah dalam video juga dijelaskan di bagian berikut.

Tambahkan identitas yang ditetapkan sistem

  1. Di navigasi kiri halaman aplikasi Anda, gulir ke bawah ke grup Pengaturan.

  2. Pilih Identitas.

  3. Dalam tab Ditetapkan oleh sistem, alihkan Status ke Aktif. Klik Simpan.

    Cuplikan layar yang menunjukkan tempat untuk beralih Status ke Aktif lalu pilih Simpan.

Menambahkan identitas yang ditetapkan pengguna

Membuat aplikasi dengan identitas yang ditetapkan pengguna mengharuskan Anda membuat identitas lalu menambahkan pengidentifikasi sumber dayanya ke konfigurasi aplikasi Anda.

Pertama, Anda harus membuat sumber daya identitas yang ditetapkan pengguna.

  1. Buat sumber daya identitas terkelola yang ditetapkan pengguna sesuai dengan petunjuk ini.

  2. Pada navigasi kiri untuk halaman aplikasi Anda, gulir ke bawah ke grup Pengaturan.

  3. Pilih Identitas.

  4. Pilih Tambahkan yang> ditetapkan pengguna.

  5. Cari identitas yang Anda buat sebelumnya, pilih identitas tersebut, dan pilih Tambahkan.

    Identitas terkelola di App Service

    Setelah Anda memilih Tambahkan, aplikasi dimulai ulang.

Mengonfigurasi sumber daya target

Anda mungkin perlu mengonfigurasi sumber daya target untuk mengizinkan akses dari aplikasi atau fungsi Anda. Misalnya, jika Anda meminta token untuk mengakses Key Vault, Anda juga harus menambahkan kebijakan akses yang menyertakan identitas terkelola aplikasi atau fungsi Anda. Jika tidak, panggilan Anda ke Key Vault akan ditolak, bahkan jika panggilan tersebut menyertakan token. Hal yang sama berlaku untuk Azure SQL Database. Untuk mempelajari selengkapnya tentang sumber daya mana yang mendukung token Microsoft Entra, lihat Layanan Azure yang mendukung autentikasi Microsoft Entra.

Penting

Layanan back-end untuk identitas terkelola mempertahankan cache per URI sumber daya selama sekitar 24 jam. Jika Anda memperbarui kebijakan akses sumber daya target tertentu dan segera mengambil token untuk sumber daya tersebut, Anda dapat terus mendapatkan token yang di-cache dengan izin yang sudah usang hingga token tersebut kedaluwarsa. Saat ini tidak ada cara untuk memaksa refresh token.

Sambungkan ke layanan Azure dalam kode aplikasi

Dengan identitas terkelolanya, aplikasi dapat memperoleh token untuk sumber daya Azure yang dilindungi oleh ID Microsoft Entra, seperti Azure SQL Database, Azure Key Vault, dan Azure Storage. Token tersebut mewakili aplikasi yang mengakses sumber daya, dan bukan pengguna aplikasi tertentu.

App Service dan Azure Functions menyediakan titik akhir REST yang dapat diakses secara internal untuk pengambilan token. Titik akhir REST dapat diakses dari dalam aplikasi dengan GET HTTP standar, yang dapat diimplementasikan dengan klien HTTP generik dalam setiap bahasa. Untuk .NET, JavaScript, Java, dan Python, pustaka klien Azure Identity menyediakan abstraksi melalui titik akhir REST ini dan menyederhanakan pengalaman pengembangan. Menghubungkan ke layanan Azure lainnya semudah menambahkan objek kredensial ke klien khusus layanan.

Permintaan HTTP GET mentah terlihat seperti contoh berikut:

GET /MSI/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
Host: localhost:4141
X-IDENTITY-HEADER: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a

Dan sampel respons mungkin terlihat seperti berikut ini:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "access_token": "eyJ0eXAi…",
    "expires_on": "1586984735",
    "resource": "https://vault.azure.net",
    "token_type": "Bearer",
    "client_id": "5E29463D-71DA-4FE0-8E69-999B57DB23B0"
}

Respons ini sama dengan respons untuk permintaan token akses layanan-ke-layanan Microsoft Entra. Untuk mengakses Key Vault, Anda kemudian akan menambahkan nilai access_token ke koneksi klien dengan brankas.

Untuk informasi selengkapnya tentang titik akhir REST, lihat referensi titik akhir REST.

Menghapus sebuah identitas

Saat Anda menghapus identitas yang ditetapkan sistem, identitas tersebut akan dihapus dari ID Microsoft Entra. Identitas yang ditetapkan sistem juga secara otomatis dihapus dari ID Microsoft Entra saat Anda menghapus sumber daya aplikasi itu sendiri.

  1. Di navigasi kiri halaman aplikasi Anda, gulir ke bawah ke grup Pengaturan.

  2. Pilih Identitas. Kemudian ikuti langkah-langkah berdasarkan jenis identitas:

    • Identitas ditetapkan sistem: Dalam tab Sistem yang ditetapkan, alihkan Status menjadi Nonaktif. Klik Simpan.
    • Identitas yang ditetapkan pengguna: Pilih tab Ditetapkan pengguna, centang kotak untuk identitas, dan pilih Hapus. Pilih Ya untuk mengonfirmasi.

Catatan

Ada juga pengaturan aplikasi yang dapat diatur, WEBSITE_DISABLE_MSI, yang hanya menonaktifkan layanan token lokal. Namun, identitas tetap di tempatnya, dan alat akan tetap menampilkan identitas terkelola sebagai "on" atau "enabled". Akibatnya, penggunaan pengaturan ini tidak disarankan.

Referensi titik akhir REST

Aplikasi dengan identitas terkelola membuat titik akhir ini tersedia dengan mendefinisikan dua variabel lingkungan:

  • IDENTITY_ENDPOINT - URL ke layanan token lokal.
  • IDENTITY_HEADER - header yang digunakan untuk membantu meredakan serangan pemalsuan permintaan sisi server (SSRF). Nilai diputar oleh platform.

IDENTITY_ENDPOINT adalah URL lokal tempat aplikasi Anda dapat meminta token. Untuk mendapatkan token sumber daya, buat permintaan HTTP GET ke titik akhir ini, termasuk parameter berikut:

Nama Parameter Dalam Deskripsi
resource Kueri URI sumber daya Microsoft Entra dari sumber daya tempat token harus diperoleh. Ini bisa menjadi salah satu layanan Azure yang mendukung autentikasi Microsoft Entra atau URI sumber daya lainnya.
versi-api Kueri Versi API token yang akan digunakan. Gunakan 2019-08-01.
X-IDENTITY-HEADER Header Nilai variabel lingkungan IDENTITY_HEADER. Header ini digunakan untuk membantu meredakan serangan pemalsuan permintaan sisi server (SSRF).
client_id Kueri (Opsional) ID klien dari identitas yang ditetapkan pengguna yang akan digunakan. Tidak dapat digunakan pada permintaan yang menyertakan principal_id, mi_res_id, atau object_id. Jika semua parameter ID (client_id, principal_id, object_id, dan mi_res_id) dihilangkan, identitas yang ditetapkan sistem akan digunakan.
principal_id Kueri (Opsional) ID utama dari identitas yang ditetapkan pengguna yang akan digunakan. object_id adalah alias yang dapat digunakan sebagai gantinya. Tidak dapat digunakan pada permintaan yang menyertakan client_id, mi_res_id, atau object_id. Jika semua parameter ID (client_id, principal_id, object_id, dan mi_res_id) dihilangkan, identitas yang ditetapkan sistem akan digunakan.
mi_res_id Kueri (Opsional) ID sumber daya Azure dari identitas yang ditetapkan pengguna yang akan digunakan. Tidak dapat digunakan pada permintaan yang menyertakan principal_id, client_id, atau object_id. Jika semua parameter ID (client_id, principal_id, object_id, dan mi_res_id) dihilangkan, identitas yang ditetapkan sistem akan digunakan.

Penting

Jika Anda mencoba mendapatkan token untuk identitas yang ditetapkan pengguna, Anda harus menyertakan salah satu properti opsional. Jika tidak, layanan token akan berusaha mendapatkan token untuk identitas yang ditetapkan sistem, yang mungkin ada atau tidak ada.

Langkah berikutnya