Bagaimana 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

Identitas terkelola untuk App Service dan Azure Functions tidak akan berperilaku seperti yang diharapkan jika aplikasi Anda dimigrasikan ke seluruh langganan/penyewa. Aplikasi perlu mendapatkan identitas baru, yang dilakukan dengan menonaktifkan dan mengaktifkan kembali fitur tersebut. 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 oleh Azure Active Directory (Azure AD) memungkinkan aplikasi Anda dengan mudah mengakses sumber daya lain yang dilindungi Azure AD seperti Azure Key Vault. Identitas dikelola oleh platform Azure dan tidak mengharuskan Anda memprovisikan atau memutar rahasia. Untuk mengetahui informasi selengkapnya tentang identitas terkelola di Azure AD, 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.

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.

Catatan

Untuk menemukan identitas terkelola untuk aplikasi web atau aplikasi slot Anda di portal Azure, di bawah Aplikasi perusahaan, lihat di bagian Pengaturan pengguna. Biasanya, nama slotnya mirip dengan <app name>/slots/<slot name>.

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. Dalam tab Ditetapkan pengguna, klik Tambahkan.

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

    Identitas terkelola di App Service

Penting

Jika Anda memilih Tambahkan setelah memilih identitas yang ditetapkan pengguna untuk ditambahkan, aplikasi Anda akan dihidupkan 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 lebih lanjut sumber daya mana yang mendukung token Azure Active Directory, lihat Layanan Azure yang mendukung autentikasi Microsoft Azure AD.

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 terkelola, aplikasi dapat memperoleh token untuk sumber daya Azure yang dilindungi oleh Azure Active Directory, 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 Azure AD. 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 identitas

Saat Anda menghapus identitas yang ditetapkan sistem, identitas tersebut akan dihapus dari Azure Active Directory. Identitas yang ditetapkan sistem juga secara otomatis dihapus dari Azure Active Directory 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: Klik tab Yang Ditetapkan Pengguna, pilih kotak centang untuk identitas, dan klik Hapus. Ketik 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
sumber daya Kueri URI sumber daya Azure AD dari sumber daya yang tokennya harus didapatkan. Dapat berupa salah satu Layanan Azure yang mendukung autentikasi Azure AD 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