Dasar-dasar otorisasi

Otorisasi (sering disingkat sebagai AuthZ) digunakan untuk mengatur izin yang memungkinkan evaluasi akses ke sumber daya atau fungsi. Sebaliknya, autentikasi (sering disingkat sebagai AuthN) difokuskan pada membuktikan bahwa entitas seperti pengguna atau layanan benar-benar seperti yang diklaim.

Otorisasi dapat meliputi menentukan fungsionalitas, sumber daya, atau data yang diizinkan untuk diakses oleh entitas. Otorisasi juga menentukan hal yang dapat dilakukan dengan data. Tindakan otorisasi ini sering disebut sebagai kontrol akses.

Autentikasi dan otorisasi adalah konsep yang tidak terbatas hanya bagi pengguna. Layanan atau aplikasi daemon sering dibangun untuk membuat permintaan sumber daya sebagai diri mereka sendiri daripada atas nama pengguna tertentu. Dalam artikel ini, istilah "entitas" digunakan untuk merujuk ke pengguna atau aplikasi.

Pendekatan otorisasi

Ada beberapa pendekatan umum untuk menangani otorisasi. Kontrol akses berbasis peran saat ini adalah pendekatan yang paling umum menggunakan platform identitas Microsoft.

Autentikasi sebagai otorisasi

Mungkin bentuk otorisasi yang paling sederhana adalah untuk memberikan atau menolak akses berdasarkan apakah entitas yang mengajukan permintaan telah diautentikasi. Jika pemohon dapat membuktikan bahwa mereka adalah siapa yang mereka klaim, mereka dapat mengakses sumber daya atau fungsi yang dilindungi.

Daftar kontrol akses

Otorisasi melalui daftar kontrol akses (ACL) melibatkan memelihara daftar eksplisit entitas tertentu yang memiliki atau tidak memiliki akses ke sumber daya atau fungsi. ACL menawarkan kontrol yang lebih baik atas otentikasi-sebagai-otorisasi tetapi menjadi sulit untuk mengelola seiring meningkatnya jumlah entitas.

Kontrol Akses Berbasis Peran

Kontrol akses berbasis peran (RBAC) mungkin adalah pendekatan yang paling umum untuk menegakkan otorisasi dalam aplikasi. Saat menggunakan RBAC, peran didefinisikan untuk menggambarkan jenis aktivitas yang dapat dilakukan entitas. Developer aplikasi memberikan akses ke peran daripada entitas individu. Administrator kemudian dapat menetapkan peran ke entitas yang berbeda untuk mengontrol mana yang memiliki akses ke sumber daya dan fungsionalitas apa saja.

Dalam implementasi RBAC tingkat lanjut, peran dapat dipetakan ke kumpulan izin, di mana izin menjelaskan tindakan atau aktivitas terperinci yang dapat dilakukan. Peran kemudian dikonfigurasikan sebagai kombinasi izin. Komputasi izin keseluruhan yang ditetapkan untuk entitas dengan menggabungkan izin yang diberikan ke berbagai peran yang ditetapkan entitas. Contoh yang baik dari pendekatan ini adalah implementasi RBAC yang mengatur akses ke sumber daya dalam langganan Azure.

Catatan

RBAC aplikasi berbeda dari Azure RBAC dan Microsoft Entra RBAC. Peran kustom dan peran bawaan Azure sama-sama merupakan bagian dari RBAC Azure, yang membantu Anda mengelola sumber daya Azure. Microsoft Entra RBAC memungkinkan manajemen sumber daya Microsoft Entra.

Kontrol akses berbasis atribut

Kontrol akses berbasis atribut (ABAC) adalah mekanisme kontrol akses yang lebih halus. Dalam pendekatan ini, aturan diterapkan pada entitas, sumber daya yang diakses, dan lingkungan saat ini. Aturan ini menentukan tingkat akses ke sumber daya dan fungsionalitas. Contohnya mungkin hanya mengizinkan pengguna yang merupakan manajer untuk mengakses file yang diidentifikasi dengan tag metadata "manajer selama jam kerja saja" selama jam 9.00 - 17.00 pada hari kerja. Dalam hal ini, akses ditentukan dengan memeriksa atribut pengguna (status sebagai manajer), atribut sumber daya (tag metadata pada file), dan juga atribut lingkungan (waktu saat ini).

Satu keuntungan dari ABAC adalah kontrol akses yang lebih terperinci dan dinamis dapat dicapai melalui evaluasi aturan dan kondisi tanpa perlu membuat sejumlah besar peran yang sangat spesifik dan tugas RBAC.

Salah satu metode untuk mencapai ABAC dengan MICROSOFT Entra ID adalah menggunakan grup dinamis. Grup dinamis memungkinkan administrator untuk secara dinamis menetapkan pengguna ke grup berdasarkan atribut pengguna tertentu dengan nilai yang diinginkan. Misalnya, grup Penulis dapat dibuat di mana semua pengguna dengan judul pekerjaan Penulis secara dinamis ditugaskan ke grup Penulis. Grup dinamis dapat digunakan dalam kombinasi dengan RBAC untuk otorisasi di mana Anda memetakan peran ke grup dan secara dinamis menetapkan pengguna ke grup.

Azure ABAC adalah contoh solusi ABAC yang tersedia saat ini. Azure ABAC dibangun pada Azure RBAC dengan menambahkan kondisi penetapan peran berdasarkan atribut dalam konteks tindakan tertentu.

Menerapkan otorisasi

Logika otorisasi sering diimplementasikan dalam aplikasi atau solusi di mana kontrol akses diperlukan. Dalam banyak kasus, platform pengembangan aplikasi menawarkan middleware atau solusi API lainnya yang menyederhanakan implementasi otorisasi. Contohnya termasuk penggunaan AuthorizeAttribute di ASP.NET atau Route Guards di Angular.

Untuk pendekatan otorisasi yang bergantung pada informasi tentang entitas yang diautentikasi, aplikasi akan mengevaluasi informasi yang dipertukarkan selama autentikasi. Misalnya, dengan menggunakan informasi yang disediakan dalam token keamanan. Jika Anda berencana menggunakan informasi dari token untuk otorisasi, sebaiknya ikuti panduan ini tentang mengamankan aplikasi dengan benar melalui validasi klaim. di Untuk informasi yang tidak terkandung dalam token keamanan, aplikasi mungkin melakukan panggilan tambahan ke sumber daya eksternal.

Tidak sepenuhnya perlu bagi pengembang untuk menanamkan logika otorisasi sepenuhnya dalam aplikasi mereka. Sebaliknya, layanan otorisasi khusus dapat digunakan untuk memusatkan implementasi dan manajemen otorisasi.

Langkah berikutnya