Bagikan melalui


Menggunakan identitas terkelola untuk App Service dan Azure Functions

Artikel ini memperlihatkan kepada Anda cara membuat identitas terkelola untuk aplikasi Azure App Service dan Azure Functions, dan cara menggunakannya untuk mengakses sumber daya lain.

Identitas terkelola dari MICROSOFT Entra ID memungkinkan aplikasi Anda mengakses sumber daya lain yang dilindungi Microsoft Entra dengan mudah, seperti Azure Key Vault. Platform Azure mengelola identitas, sehingga Anda tidak perlu menyediakan atau memutar rahasia apa pun. Untuk informasi selengkapnya tentang identitas terkelola di ID Microsoft Entra, lihat Identitas terkelola untuk sumber daya Azure.

Anda dapat memberikan dua jenis identitas ke aplikasi Anda:

  • Identitas yang ditetapkan sistem terkait dengan aplikasi dan dihapus jika aplikasi 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. Satu identitas yang ditetapkan pengguna dapat ditetapkan ke beberapa sumber daya Azure, seperti dua aplikasi App Service.

Konfigurasi identitas terkelola ini khusus untuk masing-masing slot. Untuk mengonfigurasi identitas terkelola untuk slot penyebaran di portal, pertama-tama buka slot tersebut. Untuk menemukan identitas terkelola (managed identity) untuk aplikasi web atau slot penyebaran di penyewa Microsoft Entra Anda dari portal Azure, langsung mencarinya di halaman Gambaran Umum penyewa Anda.

Catatan

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

Karena identitas terkelola tidak mendukung skenario lintas direktori, identitas tersebut tidak 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.

Prasyarat

Untuk melakukan langkah-langkah dalam artikel ini, Anda harus memiliki sekumpulan izin minimum atas sumber daya Azure Anda. Izin khusus yang Anda butuhkan bervariasi berdasarkan skenario Anda. Tabel berikut ini meringkas skenario yang paling umum:

Skenario Izin yang diperlukan Peran bawaan contoh
Membuat identitas yang ditetapkan sistem Microsoft.Web/sites/write melalui aplikasi, atau Microsoft.Web/sites/slots/write melalui slot Kontributor Situs Web
Membuat identitas yang ditetapkan pengguna Microsoft.ManagedIdentity/userAssignedIdentities/write pada grup sumber daya tempat identitas akan dibuat Kontributor Identitas Terkelola
Menetapkan identitas yang ditetapkan pengguna ke aplikasi Anda Microsoft.Web/sites/write melalui aplikasi, Microsoft.Web/sites/slots/write melalui slot, atau
Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action terhadap identitas
Kontributor Web dan Operator Identitas Terkelola
Membuat penetapan peran Azure Microsoft.Authorization/roleAssignments/write di atas cakupan sumber daya target Administrator Kontrol Akses Berbasis Peran atau Administrator Akses Pengguna

Tambahkan identitas yang ditetapkan sistem

Untuk mengaktifkan identitas terkelola yang ditetapkan sistem, gunakan instruksi berikut.

  1. Di portal Microsoft Azure, buka halaman aplikasi Anda.

  2. Di menu sebelah kiri, pilih Pengaturan>Identitas.

  3. Pada tab Sistem yang ditetapkan, alihkan Status ke Aktif. Kemudian pilih Simpan.

Menambahkan identitas yang ditetapkan pengguna

Untuk membuat aplikasi dengan identitas yang ditetapkan pengguna, buat identitas lalu tambahkan pengidentifikasi sumber dayanya ke konfigurasi aplikasi Anda.

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

  2. Di menu sebelah kiri untuk halaman aplikasi Anda, pilih Identitas Pengaturan>.

  3. Pilih Pengguna yang ditetapkan, lalu pilih Tambahkan.

  4. Cari identitas yang Anda buat sebelumnya, pilih identitas tersebut, lalu pilih Tambahkan.

Setelah Anda menyelesaikan langkah-langkah ini, aplikasi dimulai ulang.

Mengonfigurasi sumber daya target

Anda perlu mengonfigurasi sumber daya target untuk mengizinkan akses dari aplikasi Anda. Untuk sebagian besar layanan Azure, Anda mengonfigurasi sumber daya target dengan membuat penetapan peran.

Beberapa layanan menggunakan mekanisme selain kontrol akses berbasis peran Azure. Untuk memahami cara mengonfigurasi akses dengan menggunakan identitas, lihat dokumentasi untuk setiap sumber daya target. Untuk mempelajari selengkapnya tentang sumber daya mana yang mendukung token Microsoft Entra, lihat Layanan Azure yang mendukung autentikasi Microsoft Entra.

Misalnya, jika Anda meminta token untuk mengakses rahasia di Azure Key Vault, Anda juga harus membuat penugasaan peran yang memungkinkan identitas terkelola mengelola rahasia di brankas target. Jika tidak, Key Vault menolak panggilan Anda meskipun Anda menggunakan token yang valid. Hal yang sama berlaku untuk Azure SQL Database dan layanan lainnya.

Penting

Layanan back-end untuk identitas terkelola mempertahankan cache per URI sumber daya selama sekitar 24 jam. Diperlukan waktu beberapa jam agar perubahan pada keanggotaan grup atau peran dari identitas terkelola diterapkan. Saat ini tidak mungkin untuk memaksa token identitas terkelola disegarkan sebelum kedaluwarsa. Jika Anda mengubah grup identitas terkelola atau keanggotaan peran untuk menambahkan atau menghapus izin, Anda mungkin perlu menunggu beberapa jam agar sumber daya Azure yang menggunakan identitas memiliki akses yang benar.

Untuk alternatif grup atau keanggotaan peran, lihat Batasan penggunaan identitas terkelola untuk otorisasi.

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 ini 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. Anda dapat mengakses titik akhir REST dari dalam aplikasi dengan menggunakan permintaan HTTP GET standar. Anda dapat menerapkan permintaan 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 menggunakan dua variabel lingkungan yang disediakan dan terlihat seperti contoh berikut:

GET /MSI/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
Host: <ip-address-:-port-in-IDENTITY_ENDPOINT>
X-IDENTITY-HEADER: <value-of-IDENTITY_HEADER>

Contoh respons mungkin terlihat seperti contoh berikut:

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": "00001111-aaaa-2222-bbbb-3333cccc4444"
}

Respons ini sama dengan respons untuk permintaan token akses antar-layanan Microsoft Entra. Untuk mengakses Key Vault, tambahkan nilai access_token ke koneksi klien dengan vault.

Untuk informasi selengkapnya tentang titik akhir REST, lihat Referensi titik akhir REST nanti di artikel ini.

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 menu sebelah kiri untuk halaman aplikasi Anda, pilih Identitas Pengaturan>.

  2. Ikuti langkah-langkah berdasarkan jenis identitas:

    • Untuk identitas yang ditetapkan sistem: Pada tab Yang ditetapkan sistem, alihkanStatus ke Nonaktif. Kemudian pilih Simpan.
    • Untuk identitas yang ditetapkan pengguna: Pilih tab Pengguna yang ditetapkan , pilih kotak centang untuk identitas, lalu pilih Hapus. Pilih Ya untuk mengonfirmasi.

Catatan

Anda juga dapat mengatur pengaturan aplikasi yang hanya menonaktifkan layanan token lokal: WEBSITE_DISABLE_MSI. Namun, itu meninggalkan identitas tetap pada posisinya. Alat masih menunjukkan identitas terkelola sebagai aktif atau diaktifkan. Akibatnya, kami tidak menyarankan Anda menggunakan pengaturan ini.

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 dapat membantu mengurangi serangan pemalsuan permintaan sisi server (SSRF). Platform tersebut memutar nilai.

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

Nama Parameter Di dalam Deskripsi
resource Pertanyaan URI sumber daya Microsoft Entra untuk sumber daya yang memerlukan token. Sumber daya ini bisa menjadi salah satu layanan Azure yang mendukung autentikasi Microsoft Entra atau URI sumber daya lainnya.
api-version Pertanyaan Versi API token yang akan digunakan. Gunakan 2019-08-01.
X-IDENTITY-HEADER Kepala Halaman Nilai IDENTITY_HEADER variabel lingkungan. Header ini digunakan untuk membantu mengurangi serangan SSRF.
client_id Pertanyaan (Opsional) Client ID dari identitas yang ditetapkan pengguna yang akan digunakan. Ini tidak dapat digunakan pada permintaan yang mencakup principal_id, , mi_res_idatau 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 Pertanyaan (Opsional) ID utama dari identitas yang ditetapkan pengguna yang akan digunakan. Parameter object_id adalah alias yang dapat digunakan sebagai gantinya. Ini tidak dapat digunakan pada permintaan yang mencakup client_id, , mi_res_idatau 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 Pertanyaan (Opsional) ID sumber daya Azure dari identitas yang ditetapkan pengguna yang akan digunakan. Ini tidak dapat digunakan pada permintaan yang mencakup principal_id, , client_idatau 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, sertakan salah satu properti opsional. Jika tidak, layanan token mencoba mendapatkan token untuk identitas yang ditetapkan sistem, yang mungkin atau mungkin tidak ada.

Pertimbangkan tutorial berikut: