Bagikan melalui


Contoh API yang dilindungi oleh kerangka kerja persetujuan identitas Microsoft

Artikel ini dapat membantu Anda, sebagai pengembang, untuk merancang strategi izin aplikasi Anda untuk memberikan hak istimewa paling sedikit. Sebelum melanjutkan, lihat artikel perlindungan API untuk mempelajari praktik terbaik untuk pendaftaran, izin, dan akses.

Mari kita lihat bagaimana API yang dilindungi oleh platform identitas Microsoft menggunakan kerangka kerja persetujuan identitas Microsoft. Kami menggunakan Microsoft Graph API sebagai contoh kami karena membuat penggunaan kerangka kerja persetujuan platform identitas Microsoft paling ekstensif.

Konvensi penamaan untuk nama izin

Tim Microsoft Graph membuat konvensi penamaan untuk nama izin untuk mempermudah menyambungkan izin ke akses sumber daya yang diaktifkan izin. Nama izin Microsoft Graph mematuhi pola resource.operation.constraint sederhana. Dua operasi utama adalah Read and ReadWrite (yang mencakup pembaruan dan penghapusan).

Elemen batasan memengaruhi tingkat akses yang dimiliki aplikasi Anda dalam direktori. Microsoft Graph mendukung batasan ini:

  • Semua memberikan izin bagi aplikasi Anda untuk melakukan operasi pada semua sumber daya dari jenis yang ditentukan dalam direktori.
  • Bersama memberikan izin bagi aplikasi Anda untuk melakukan operasi pada sumber daya yang dibagikan pengguna lain dengan pengguna yang masuk.
  • AppFolder memberikan izin bagi aplikasi Anda untuk membaca dan menulis file di folder khusus di OneDrive. Batasan ini hanya diekspos pada objek izin File dan hanya valid untuk akun Microsoft.
  • Jika Anda menentukan Tidak ada batasan, aplikasi Anda hanya dapat melakukan operasi pada sumber daya yang dimiliki pengguna yang masuk.

Akses dan operasi terhadap sumber daya tertentu

Mari kita lihat beberapa izin, atau cakupan, untuk objek pengguna di Microsoft Graph untuk melihat bagaimana perancang Microsoft API mengaktifkan akses dan operasi tertentu terhadap sumber daya tertentu:

Izin String Tampilan Deskripsi
User.Read Masuk dan membaca profil pengguna Memungkinkan pengguna untuk masuk ke aplikasi dan memungkinkan aplikasi membaca profil pengguna yang masuk. Ini juga memungkinkan aplikasi untuk membaca informasi perusahaan dasar pengguna yang masuk.
User.ReadWrite Membaca dan menulis akses ke profil pengguna Memungkinkan aplikasi membaca profil lengkap pengguna yang masuk. Ini juga memungkinkan aplikasi untuk memperbarui informasi profil pengguna yang masuk atas nama mereka.

User.Read dan User.ReadWrite ada (dibandingkan dengan satu izin seperti User.Access itu tidak ada) sehingga aplikasi dapat mengikuti prinsip Zero Trust dengan hak istimewa paling sedikit. Jika pengembang tidak memiliki persyaratan dan kode untuk memperbarui profil pengguna, aplikasi tidak meminta User.ReadWrite. Oleh karena itu, penyerang tidak dapat membahayakan aplikasi dan menggunakannya untuk mengubah data.

Perhatikan bahwa User.Read tidak hanya memberikan akses aplikasi ke objek pengguna. Setiap izin mewakili rentang operasi tertentu. Penting bahwa pengembang dan admin membaca deskripsi izin untuk melihat dengan tepat apa yang memungkinkan izin tertentu. User.Read, selain mengaktifkan membaca profil lengkap pengguna saat ini, memungkinkan aplikasi untuk melihat informasi dasar dari objek Organisasi di Microsoft Graph.

Mari kita lihat izin lain:

Izin String Tampilan Deskripsi
User.ReadBasic.All Membaca profil dasar semua pengguna Memungkinkan aplikasi membaca sekumpulan properti profil dasar pengguna lain di organisasi Anda atas nama pengguna yang masuk. Termasuk nama tampilan, nama depan dan keluarga, alamat email, ekstensi terbuka, dan foto. Memungkinkan aplikasi membaca profil lengkap pengguna yang masuk.

Rentang operasi yang User.ReadBasic.All dimulai dengan semua yang User.Read dilakukan. Selain itu, Anda dapat mengakses nama tampilan, nama depan dan keluarga, alamat email, foto, dan ekstensi terbuka untuk pengguna organisasi lain. Rentang operasi tertentu memungkinkan aplikasi untuk memiliki UI pemilih orang yang baik dan merupakan contoh perancang API menggunakan izin untuk mengaktifkan berbagai operasi tertentu.

Mari kita lihat beberapa izin lagi pada objek pengguna Microsoft Graph:

Izin String Tampilan Deskripsi
User.Read.All Membaca profil lengkap semua pengguna Memungkinkan aplikasi membaca kumpulan lengkap properti profil, laporan, dan manajer pengguna lain di organisasi Anda, atas nama pengguna yang masuk.
User.ReadWrite.All Membaca dan menulis profil lengkap semua pengguna Memungkinkan aplikasi membaca dan menulis kumpulan lengkap properti profil, laporan, dan manajer pengguna lain di organisasi Anda, atas nama pengguna yang masuk. Juga memungkinkan aplikasi untuk membuat dan menghapus pengguna dan mengatur ulang kata sandi pengguna atas nama pengguna yang masuk.

User.Read Seperti halnya dan User.ReadWrite, User.Read.All dan User.ReadWrite.All merupakan izin berbeda yang memungkinkan aplikasi untuk mengikuti prinsip Zero Trust hak istimewa paling sedikit.

User.Read.All menarik karena setiap pengguna dalam organisasi memiliki kemampuan ini (misalnya, membuka Outlook, naik dan turun rantai pelaporan). Anda, sebagai individu, dapat melihat profil pengguna lengkap setiap pengguna lain di organisasi Anda. Namun, perancang Microsoft Graph API memutuskan bahwa hanya admin yang harus mengizinkan aplikasi untuk melakukan operasi yang sama karena User.Read.All menyertakan hierarki organisasi penyewa. Jika pelaku jahat mengakses informasi ini, mereka dapat memasang serangan phishing yang ditargetkan di mana email phishing berasal dari manajer seseorang atau manajer manajer mereka.

User.ReadWrite.All adalah berbagai operasi yang kuat. Aplikasi yang diberikan izin ini dapat memperbarui, atau bahkan menghapus, setiap pengguna di penyewa. Sebagai izin yang didelegasikan, saat pengguna berada di depan aplikasi, aplikasi hanya dapat melakukan apa yang dapat dilakukan pengguna saat ini. Pengguna reguler tidak dapat memperbarui atau menghapus pengguna lain terlepas dari izin aplikasi. Namun, ketika admin penyewa menggunakan aplikasi, mereka dapat melakukan operasi ini. Saat memutuskan untuk memberikan atau menolak izin ini, Anda harus mengevaluasi aplikasi dengan mempertimbangkan pengguna admin penyewa.

Mengingat kekuatan User.Read.All dan User.ReadWrite.All, perancang Microsoft Graph API menunjuk izin ini sebagai memerlukan persetujuan admin. Mari kita tambahkan Admin? Kolom ke tabel izin kami untuk menunjukkan kapan izin memerlukan persetujuan admin:

Izin String Tampilan Deskripsi Admin?
User.Read Masuk dan membaca profil pengguna Memungkinkan pengguna untuk masuk ke aplikasi dan memungkinkan aplikasi membaca profil pengguna yang masuk. Ini juga memungkinkan aplikasi untuk membaca informasi perusahaan dasar pengguna yang masuk. Tidak
User.ReadWrite Membaca dan menulis akses ke profil pengguna Memungkinkan aplikasi membaca profil lengkap pengguna yang masuk. Ini juga memungkinkan aplikasi untuk memperbarui informasi profil pengguna yang masuk atas nama mereka. Tidak
User.ReadBasic.All Membaca profil dasar semua pengguna Memungkinkan aplikasi membaca sekumpulan properti profil dasar pengguna lain di organisasi Anda atas nama pengguna yang masuk. Termasuk nama tampilan, nama depan dan keluarga, alamat email, ekstensi terbuka, dan foto. Memungkinkan aplikasi membaca profil lengkap pengguna yang masuk. Tidak
User.Read.All Membaca profil lengkap semua pengguna Memungkinkan aplikasi membaca kumpulan lengkap properti profil, laporan, dan manajer pengguna lain di organisasi Anda, atas nama pengguna yang masuk. Ya
User.ReadWrite.All Membaca dan menulis profil lengkap semua pengguna Memungkinkan aplikasi membaca dan menulis kumpulan lengkap properti profil, laporan, dan manajer pengguna lain di organisasi Anda, atas nama pengguna yang masuk. Juga memungkinkan aplikasi untuk membuat dan menghapus pengguna dan mengatur ulang kata sandi pengguna atas nama pengguna yang masuk. Ya

Seperti yang ditunjukkan dalam artikel Meminta izin yang memerlukan persetujuan administratif, admin penyewa dapat menimpa persyaratan dan menunjuk setiap atau semua izin aplikasi di penyewa mereka sebagai memerlukan persetujuan admin. Anda bijaksana merancang aplikasi untuk menangani dengan baik saat Anda tidak menerima token dari permintaan Anda. Kurangnya persetujuan adalah salah satu dari banyak alasan aplikasi Anda mungkin tidak menerima token.

Langkah berikutnya

  • Memanggil API dari API lain membantu Anda memastikan Zero Trust saat Anda memiliki satu API yang perlu memanggil API lain dan mengembangkan aplikasi Anda dengan aman saat bekerja atas nama pengguna.
  • Memperoleh otorisasi untuk mengakses sumber daya membantu Anda memahami cara terbaik memastikan Zero Trust saat memperoleh izin akses sumber daya untuk aplikasi Anda.
  • Kustomisasi token menjelaskan informasi yang dapat Anda terima di token Microsoft Entra. Ini menjelaskan cara menyesuaikan token untuk meningkatkan fleksibilitas dan kontrol sambil meningkatkan keamanan kepercayaan nol aplikasi dengan hak istimewa paling sedikit.
  • Mengonfigurasi klaim grup dan peran aplikasi dalam token menunjukkan kepada Anda cara mengonfigurasi aplikasi dengan definisi peran aplikasi dan menetapkan grup keamanan ke peran aplikasi. Metode ini membantu meningkatkan fleksibilitas dan kontrol sekaligus meningkatkan keamanan nol kepercayaan aplikasi dengan hak istimewa paling sedikit.
  • Meminta izin yang memerlukan persetujuan administratif menjelaskan izin dan pengalaman persetujuan saat izin aplikasi memerlukan persetujuan administratif.
  • Dalam Mulai Cepat ini: Lindungi API web dengan platform identitas Microsoft, unduh dan jalankan sampel kode yang menunjukkan cara melindungi API web ASP.NET.
  • Dalam Tutorial ini - Transformasi dan lindungi API Anda di Azure API Management, pelajari tentang mengonfigurasi kebijakan umum untuk menyembunyikan info tumpukan teknologi dan URL asli di isi respons HTTP API.
  • Praktik terbaik otorisasi membantu Anda menerapkan model otorisasi, izin, dan persetujuan terbaik untuk aplikasi Anda.