Otentikasi dan otorisasi aplikasi dengan Microsoft Entra ID untuk mengakses entitas Azure Service Bus

Azure Service Bus mendukung penggunaan Microsoft Entra ID untuk mengotorisasi permintaan ke entitas Azure Service Bus (antrean, topik, langganan, atau filter). Dengan Microsoft Entra ID, Anda dapat menggunakan pengendalian akses berbasis peran Azure (Azure RBAC) untuk memberikan hak akses kepada entitas keamanan. Prinsip keamanan dapat berupa pengguna, grup, perwakilan layanan aplikasi, atau identitas terkelola untuk sumber daya Azure.

Keuntungan utama menggunakan MICROSOFT Entra ID dengan Azure Bus Layanan adalah Anda tidak perlu menyimpan kredensial Anda dalam kode lagi. Sebagai gantinya, Anda dapat meminta token akses OAuth 2.0 dari platform Identitas Microsoft. Jika autentikasi berhasil, ID Microsoft Entra mengembalikan token akses ke aplikasi. Aplikasi kemudian dapat menggunakan token akses untuk mengotorisasi permintaan ke sumber daya Azure Service Bus.

Anda dapat menonaktifkan autentikasi kunci tanda tangan akses lokal atau bersama (SAS) untuk namespace Bus Layanan dan hanya mengizinkan autentikasi Microsoft Entra. Untuk instruksi langkah demi langkah, lihat Menonaktifkan autentikasi lokal.

Gambaran Umum

Ketika prinsipal keamanan (pengguna, grup, atau aplikasi) mencoba mengakses entitas Microsoft Azure Service Bus, permintaan harus diotorisasi. Dengan ID Microsoft Entra, akses ke sumber daya adalah proses dua langkah:

  1. Identitas perwakilan keamanan diautentikasi, dan token OAuth 2.0 dikembalikan. Nama sumber daya untuk meminta token adalah https://servicebus.azure.net.
  2. Token diteruskan sebagai bagian dari permohonan ke layanan Service Bus untuk mengotorisasi akses ke sumber daya yang ditentukan.

Langkah otentikasi mengharuskan permintaan aplikasi berisi token akses OAuth 2.0 pada saat runtime. Jika aplikasi berjalan dalam entitas Azure seperti komputer virtual Azure, set skala komputer virtual, atau aplikasi fungsi, aplikasi tersebut dapat menggunakan identitas terkelola untuk mengakses sumber daya. Untuk mempelajari cara mengautentikasi permintaan yang dilakukan identitas terkelola ke layanan Azure Service Bus, lihat Menggunakan identitas terkelola dengan Azure Service Bus.

Langkah otorisasi memerlukan penetapan satu atau beberapa peran Azure ke entitas keamanan. Azure Service Bus menyediakan peran Azure yang mencakup serangkaian izin untuk sumber daya Azure Service Bus. Peran yang ditetapkan kepada perwakilan keamanan menentukan izin yang dimiliki perwakilan tersebut pada sumber daya Service Bus. Untuk mempelajari selengkapnya tentang menetapkan peran Azure ke Azure Service Bus, lihat Peran bawaan Azure untuk Azure Service Bus.

Aplikasi asli dan aplikasi web yang membuat permintaan ke Bus Layanan juga dapat diotorisasi dengan ID Microsoft Entra. Artikel ini memperlihatkan cara meminta token akses dan menggunakannya untuk mengotorisasi permintaan sumber daya Microsoft Azure Service Bus.

Peran bawaan untuk Azure Service Bus

Microsoft Entra mengotorisasi hak akses ke sumber daya aman melalui Azure RBAC. Azure Service Bus mendefinisikan sekumpulan peran bawaan Azure yang mencakup seperangkat izin yang umum digunakan untuk mengakses entitas Service Bus. Anda juga dapat menentukan peran kustom untuk mengakses data.

Saat peran Azure ditetapkan ke prinsipal keamanan Microsoft Entra, Azure memberikan akses ke sumber daya tersebut untuk prinsipal keamanan tersebut. Akses dapat dilingkup ke tingkat langganan, grup sumber daya, namespace Service Bus, atau entitas (antrean, topik, atau langganan). Perwakilan keamanan Microsoft Entra dapat berupa pengguna, grup, perwakilan layanan aplikasi, atau identitas terkelola untuk sumber daya Azure.

Untuk Azure Service Bus, model Azure RBAC membantu melindungi manajemen namespace layanan dan semua sumber daya terkait melalui portal Microsoft Azure dan API manajemen sumber daya Azure. Azure menyediakan peran bawaan berikut untuk mengotorisasi akses ke namespace Bus Layanan:

Cakupan sumber daya

Sebelum Anda menetapkan peran Azure ke perwakilan keamanan, tentukan cakupan akses yang harus dimiliki perwakilan keamanan. Praktik terbaik menyarankan untuk selalu mengizinkan cakupan sesempit mungkin.

Daftar berikut ini menjelaskan tingkat tempat Anda dapat mencakup akses ke sumber daya Microsoft Azure Service Bus, dimulai dengan lingkup tersempit:

  • Antrean, topik, atau langganan: Penetapan peran berlaku untuk entitas Azure Service Bus tertentu. Saat ini, portal Microsoft Azure tidak mendukung penetapan pengguna, grup, atau identitas terkelola ke peran Azure Service Bus di tingkat langganan topik.

  • Service Bus namespace: Penetapan peran mencakup seluruh topologi Service Bus di bawah namespace dan ke langganan Queue atau topik yang terkait dengannya.

  • Grup Sumber Daya: Penetapan peran berlaku untuk semua sumber daya Microsoft Azure Service Bus di bawah grup sumber daya.

  • Langganan Azure: Penetapan peran berlaku untuk semua sumber daya Azure Service Bus di semua grup sumber daya dalam langganan.

Selalu ingat bahwa penetapan peran Azure mungkin membutuhkan waktu hingga lima menit untuk disebarluaskan.

Untuk informasi selengkapnya tentang bagaimana peran bawaan ditentukan, lihat Memahami definisi peran Azure. Untuk informasi tentang membuat peran kustom Azure, lihat Peran kustom Azure.

Autentikasi dari sebuah aplikasi

Keuntungan utama menggunakan ID Microsoft Entra dengan Bus Layanan adalah kredensial Anda tidak perlu lagi disimpan dalam kode Anda. Sebagai gantinya, Anda dapat meminta token akses OAuth 2.0 dari platform Identitas Microsoft.

Microsoft Entra mengautentikasi prinsipal keamanan (pengguna, grup, perwakilan layanan, atau identitas terkelola untuk sumber daya Azure) yang menjalankan aplikasi. Jika autentikasi berhasil, ID Microsoft Entra mengembalikan token akses ke aplikasi. Aplikasi kemudian dapat menggunakan token akses untuk mengotorisasi permintaan ke Service Bus.

Bagian berikut menunjukkan cara mengonfigurasi aplikasi asli atau aplikasi web Anda untuk autentikasi dengan platform identitas Microsoft 2.0. Untuk informasi selengkapnya tentang platform ini, lihat Apa itu platform identitas Microsoft?.

Untuk gambaran umum alur pemberian kode OAuth 2.0, lihat Platform identitas Microsoft dan alur kode otorisasi OAuth 2.0.

Daftarkan aplikasi Anda pada tenan Microsoft Entra

Langkah pertama dalam menggunakan ID Microsoft Entra untuk mengotorisasi entitas Bus Layanan adalah mendaftarkan aplikasi klien Anda dengan penyewa Microsoft Entra dari portal Azure. Saat mendaftarkan aplikasi klien, Anda menyediakan informasi tentang aplikasi ke Direktori Aktif. Microsoft Entra ID kemudian menyediakan ID klien (juga disebut ID aplikasi) yang dapat Anda gunakan untuk mengaitkan aplikasi Anda dengan runtime Microsoft Entra. Untuk mempelajari selengkapnya tentang ID klien, lihat Objek aplikasi dan layanan utama di Microsoft Entra ID.

Untuk mendaftarkan aplikasi Anda dengan ID Microsoft Entra, ikuti langkah-langkah dalam Mendaftarkan aplikasi di ID Microsoft Entra.

Catatan

Jika Anda mendaftarkan aplikasi sebagai aplikasi asli, Anda dapat menentukan URI yang valid untuk URI pengalihan. Untuk aplikasi asli, nilai ini tidak harus menjadi URL nyata. Untuk aplikasi web, URI pengalihan harus merupakan URI yang valid, karena menentukan URL yang disediakan token.

Setelah Anda mendaftarkan aplikasi, ID Aplikasi (klien) dan ID Direktori (penyewa) muncul di bawah Pengaturan. Catat nilai-nilai ini. Anda akan membutuhkannya untuk menjalankan aplikasi.

Cuplikan layar yang memperlihatkan ID aplikasi dan ID penyewa di panel untuk pendaftaran aplikasi.

Membuat rahasia klien

Aplikasi ini membutuhkan rahasia klien untuk membuktikan identitasnya saat meminta token. Untuk menambahkan rahasia klien, ikuti langkah-langkah berikut:

  1. Di portal Microsoft Azure, buka pendaftaran aplikasi jika Anda belum berada di halaman.

  2. Di menu sebelah kiri, pilih Sertifikat & rahasia.

  3. Pada Rahasia klien, pilih Rahasia klien baru untuk membuat rahasia baru.

    Cuplikan layar yang memperlihatkan tombol untuk membuat rahasia klien di panel untuk sertifikat dan rahasia.

  4. Berikan deskripsi untuk rahasia, pilih interval kedaluwarsa, lalu pilih Tambahkan.

    Cuplikan layar yang memperlihatkan panel untuk menambahkan rahasia klien.

  5. Segera salin nilai rahasia baru ke lokasi yang aman. Nilai lengkap hanya muncul sekali.

    Cuplikan layar yang memperlihatkan area untuk rahasia klien, bersama dengan tombol untuk menyalin rahasia.

Menambahkan izin untuk API Azure Service Bus

Jika aplikasi Anda adalah aplikasi konsol, Anda harus mendaftarkan aplikasi asli dan menambahkan izin API ke set izin yang diperlukan untuk Microsoft.ServiceBus.

Aplikasi asli juga memerlukan URI pengalihan di ID Microsoft Entra, yang berfungsi sebagai pengidentifikasi. URI tidak perlu menjadi tujuan jaringan. Gunakan https://servicebus.microsoft.com untuk contoh ini, karena kode sampel sudah menggunakan URI tersebut.

Penetapan peran Azure melalui portal Microsoft Azure

Tetapkan salah satu peran Bus Layanan kepada prinsipal layanan aplikasi pada lingkup yang diinginkan (entitas, namespace Bus Layanan, grup sumber daya, atau langganan Azure). Untuk langkah-langkah mendetail, lihat Menetapkan peran Azure menggunakan portal Azure.

Setelah menentukan peran dan cakupannya, Anda dapat menguji perilaku ini dengan sampel di GitHub.

Autentikasi klien Azure Service Bus

Setelah mendaftarkan aplikasi dan memberinya izin untuk mengirim/menerima data di Azure Service Bus, Anda dapat mengautentikasi klien Anda dengan kredensial rahasia klien. Autentikasi ini memungkinkan Anda membuat permintaan terhadap Azure Service Bus.

Untuk daftar skenario yang mendukung akuisisi token, lihat bagian Skenariorepositori Microsoft Authentication Library (MSAL) untuk .NET GitHub.

Dengan menggunakan pustaka Azure.Messaging.ServiceBus terbaru, Anda dapat mengautentikasi ServiceBusClient dengan ClientSecretCredential, yang ditentukan dalam pustaka Azure.Identity .

TokenCredential credential = new ClientSecretCredential("<tenant_id>", "<client_id>", "<client_secret>");
var client = new ServiceBusClient("<fully_qualified_namespace>", credential);

Jika Anda menggunakan paket .NET yang lebih lama, lihat sampel Azure RBAC untuk Service Bus di GitHub.