Menggunakan identitas terkelola untuk mengakses sumber daya Azure Service Bus

Identitas terkelola untuk sumber daya Azure memungkinkan aplikasi Anda mengautentikasi ke Azure Service Bus tanpa menyimpan kredensial dalam kode Anda. Azure secara otomatis menangani identitas dan kredensialnya untuk Anda.

Menyimpan kredensial dalam kode menciptakan risiko keamanan dan overhead pemeliharaan. Identitas terkelola menghilangkan kekhawatiran ini dengan memberikan manajemen kredensial otomatis melalui Microsoft Entra ID.

Artikel ini memperlihatkan kepada Anda cara mengonfigurasi autentikasi identitas terkelola untuk Bus Layanan sehingga aplikasi Anda dapat mengirim dan menerima pesan dengan aman tanpa kredensial yang dikodekan secara permanen.

Prasyarat

Untuk menggunakan identitas terkelola dengan Azure Service Bus, Anda memerlukan:

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.

Menetapkan peran Bus Layanan ke identitas terkelola

Microsoft Entra mengotorisasi akses ke sumber daya aman melalui kontrol akses berbasis peran Azure (RBAC). Azure Service Bus menyediakan peran bawaan Azure yang mencakup serangkaian izin umum untuk mengakses entitas Bus Layanan. Anda juga dapat menentukan peran kustom.

Tabel berikut ini mencantumkan peran bawaan Azure untuk mengotorisasi akses ke namespace Bus Layanan:

Peranan Deskripsi
Pemilik Data Azure Service Bus Akses penuh ke namespace Bus Layanan dan entitasnya (antrean, topik, langganan, dan filter)
Azure Service Bus Pengirim Data Kemampuan untuk mengirim pesan ke antrean dan topik di Azure Bus Layanan
Penerima Data Azure Service Bus Kemampuan menerima pesan dari antrean dan langganan Bus Layanan

Memahami tingkat cakupan RBAC Bus Layanan

Sebelum Anda menetapkan peran Azure, tentukan cakupan akses yang dibutuhkan identitas terkelola. Berikan hanya cakupan sesempit mungkin.

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

  • Antrean, topik, atau langganan topik: Penetapan peran hanya berlaku untuk entitas olahpesan tertentu.
  • Bus Layanan namespace: Penetapan peran mencakup seluruh topologi Bus Layanan di bawah namespace tersebut.
  • Grup Sumber Daya: Penetapan peran berlaku untuk semua sumber daya Microsoft Azure Bus Layanan di bawah grup sumber daya.
  • langganan Azure: Penetapan peran berlaku untuk semua sumber daya Bus Layanan di semua grup sumber daya dalam langganan Azure.

Penetapan peran Azure mungkin memerlukan waktu hingga lima menit untuk disebarluaskan.

Menetapkan peran ke identitas terkelola di portal Microsoft Azure

  1. Masuk ke namespace, antrean, atau topik Layanan Bus Anda.

  2. Di menu sebelah kiri, pilih Kontrol akses (IAM).

  3. Pilih Tambahkan>Tambahkan penugasan peran.

  4. Pada tab Peran , pilih peran data Azure Bus Layanan yang sesuai.

  5. Pada tab Anggota, pilih Identitas> terkelolaPilih anggota.

  6. Pilih identitas terkelola untuk sumber daya Azure Anda.

  7. Pilih Tinjau + beri tugas.

Untuk informasi selengkapnya, lihat Menetapkan peran Azure menggunakan portal Microsoft Azure.

Menetapkan peran dengan menggunakan Azure CLI

Portal Microsoft Azure tidak mendukung penetapan identitas terkelola ke peran Azure Bus Layanan di tingkat langganan topik. Gunakan perintah az role assignment create Azure CLI untuk menetapkan peran di cakupan apa pun:

az role assignment create \
    --role $service_bus_role \
    --assignee $assignee_id \
    --scope /subscriptions/$subscription_id/resourceGroups/$resource_group/providers/Microsoft.ServiceBus/namespaces/$service_bus_namespace/topics/$service_bus_topic/subscriptions/$service_bus_subscription

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

Catatan

Jika layanan sumber atau aplikasi tidak dimulai ulang setelah Anda menghapus identitas terkelolanya dari peran RBAC Bus Layanan, aplikasi sumber mungkin terus mengirim atau menerima pesan ke atau dari entitas Bus Layanan sampai token kedaluwarsa. (Validitas token default adalah 24 jam.) Perilaku ini dirancang.

Setelah Anda menghapus identitas terkelola milik sumber dari peran RBAC, mulai ulang aplikasi atau layanan sumber untuk langsung kadaluarsa token serta mencegahnya mengirim atau menerima pesan dari entitas Bus Layanan.

Menyambungkan ke Azure Bus Layanan dengan menggunakan identitas terkelola di Azure SDK

Azure SDK untuk .NET, Java, JavaScript, dan Python mendukung autentikasi identitas terkelola dengan Bus Layanan. Contoh berikut menunjukkan cara menyambungkan dengan menggunakan .NET SDK.

Di .NET, objek ServiceBusClient diinisialisasi dengan menggunakan konstruktor yang membutuhkan namespace yang sepenuhnya terdefinisi dan kredensial token (TokenCredential). DefaultAzureCredential berasal dari TokenCredential, yang secara otomatis menggunakan identitas terkelola yang dikonfigurasi untuk aplikasi. Kredensial token secara otomatis menangani alur konteks identitas terkelola ke Azure Bus Layanan dan jabat tangan otorisasi. Ini adalah model yang lebih sederhana daripada menggunakan SAS.

var client = new ServiceBusClient("contoso.servicebus.windows.net", new DefaultAzureCredential());

Kirim dan terima pesan seperti biasa dengan menggunakan ServiceBusSender dan ServiceBusReceiver atau ServiceBusProcessor.

Untuk petunjuk langkah demi langkah untuk mengirim dan menerima pesan dengan menggunakan identitas terkelola, lihat panduan cepat berikut ini. Mulai cepat ini menyertakan kode untuk menggunakan prinsipal layanan guna mengirim dan menerima pesan, namun kodenya tetap sama ketika menggunakan identitas terkelola.

Catatan

Identitas terkelola hanya berfungsi di dalam lingkungan Azure, di Azure App Service, mesin virtual Azure, dan set skala. Untuk aplikasi .NET, pustaka Microsoft.Azure.Services.AppAuthentication (digunakan oleh paket Bus Layanan NuGet) menyediakan abstraksi atas protokol ini dan mendukung pengembangan lokal. Anda dapat menguji kode secara lokal menggunakan akun pengguna dari Visual Studio, Azure CLI, atau autentikasi terintegrasi Microsoft Entra. Untuk informasi selengkapnya, lihat pustaka klien App Authentication untuk .NET.