Mengautentikasi identitas terkelola dengan ID Microsoft Entra untuk mengakses sumber daya Azure Bus Layanan
Identitas terkelola untuk sumber daya Azure memberikan layanan Azure identitas terkelola otomatis di Microsoft Entra ID. Anda dapat menggunakan identitas ini untuk mengautentikasi ke layanan apa pun seperti Azure Bus Layanan yang mendukung autentikasi Microsoft Entra, tanpa memiliki kredensial dalam kode Anda. Jika Anda tidak terbiasa dengan identitas terkelola, lihat Identitas terkelola untuk sumber daya Azure sebelum melanjutkan membaca artikel ini.
Berikut adalah langkah-langkah tingkat tinggi untuk menggunakan identitas terkelola untuk mengakses entitas Bus Layanan:
Aktifkan identitas terkelola untuk aplikasi atau lingkungan klien Anda. Misalnya, aktifkan identitas terkelola untuk aplikasi Azure App Service, aplikasi Azure Functions, atau komputer virtual tempat aplikasi Anda berjalan. Berikut adalah artikel yang membantu Anda dengan langkah ini:
Tetapkan peran Azure Bus Layanan Data Owner, Azure Bus Layanan Data Sender, atau Azure Bus Layanan Data Receiver ke identitas terkelola pada cakupan yang sesuai (langganan Azure, grup sumber daya, namespace Bus Layanan, atau antrean atau topik Bus Layanan). Untuk instruksi menetapkan peran ke identitas terkelola, lihat Menetapkan peran Azure menggunakan portal Azure.
Di aplikasi Anda, gunakan identitas terkelola dan titik akhir untuk Bus Layanan namespace layanan untuk menyambungkan ke namespace.
Misalnya, di .NET, Anda menggunakan konstruktor ServiceBusClient yang mengambil
TokenCredential
danfullyQualifiedNamespace
(string, misalnya:cotosons.servicebus.windows.net
) parameter untuk menyambungkan ke Bus Layanan menggunakan identitas terkelola. Anda meneruskan DefaultAzureCredential, yang berasal dariTokenCredential
dan menggunakan identitas terkelola. DiDefaultAzureCredentialOptions
, aturManagedIdentityClientId
ke ID identitas terkelola klien.string fullyQualifiedNamespace = "<your namespace>.servicebus.windows.net>"; string userAssignedClientId = "<your managed identity client ID>"; var credential = new DefaultAzureCredential( new DefaultAzureCredentialOptions { ManagedIdentityClientId = userAssignedClientId }); var sbusClient = new ServiceBusClient(fullyQualifiedNamespace, credential);
Penting
Anda dapat menonaktifkan autentikasi kunci lokal atau SAS untuk namespace Bus Layanan dan hanya mengizinkan autentikasi Microsoft Entra. Untuk instruksi langkah demi langkah, lihat Menonaktifkan autentikasi lokal.
Peran bawaan untuk Azure Service Bus
Microsoft Entra mengotorisasi akses ke sumber daya aman melalui kontrol akses berbasis peran Azure (RBAC). Azure Bus Layanan menentukan sekumpulan peran bawaan Azure yang mencakup serangkaian izin umum yang digunakan untuk mengakses entitas Bus Layanan. Anda juga dapat menentukan peran kustom untuk mengakses data.
Azure menyediakan peran bawaan Azure berikut untuk mengotorisasi akses ke namespace Bus Layanan:
- Pemilik Data Azure Service Bus: Gunakan peran ini untuk memungkinkan akses penuh ke namespace layanan Bus Layanan beserta entitasnya (antrean, topik, langganan, dan filter)
- Pengirim Data Azure Service Bus: Gunakan peran ini untuk memungkinkan pengiriman pesan ke antrean dan topik Bus Layanan.
- Penerima Data Azure Service Bus: Gunakan peran ini untuk memungkinkan penerimaan pesan dari antrean dan langganan Bus Layanan.
Untuk menetapkan peran ke identitas terkelola di portal Azure, gunakan halaman Kontrol akses (IAM). Navigasi ke halaman ini dengan memilih Kontrol akses (IAM) pada halaman Bus Layanan Namespace layanan atau halaman antrean Bus Layanan, atau halaman topik Bus Layanan. Untuk instruksi langkah demi langkah untuk menetapkan peran, lihat Menetapkan peran Azure menggunakan portal Azure.
Cakupan sumber daya
Sebelum Anda menetapkan peran Azure ke identitas terkelola, tentukan cakupan akses yang harus dimiliki identitas terkelola. Praktik terbaik memerintahkan bahwa yang terbaik selalu hanya memberikan 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 Microsoft Azure Service Bus tertentu.
Bus Layanan namespace: Penetapan peran mencakup seluruh topologi Bus Layanan di bawah namespace layanan.
Grup Sumber Daya: Penetapan peran berlaku untuk semua sumber daya Microsoft Azure Service Bus di bawah grup sumber daya.
Langganan: Penetapan peran berlaku untuk semua sumber daya Microsoft Azure Service Bus di semua grup sumber daya dalam langganan.
Catatan
Ingatlah bahwa penetapan peran Azure mungkin membutuhkan waktu hingga lima menit untuk disebarluaskan.
Saat ini, portal Azure tidak mendukung penetapan pengguna, grup, atau identitas terkelola untuk Bus Layanan peran Azure di tingkat langganan topik. Berikut adalah contoh penggunaan perintah Azure CLI: az-role-assignment-create untuk menetapkan identitas ke peran Service Bus Azure:
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. Untuk informasi tentang membuat peran kustom Azure, lihat Peran kustom Azure.
Menggunakan SDK
Di .NET, objek ServiceBusClient diinisialisasi dengan menggunakan konstruktor yang mengambil namespace layanan yang sepenuhnya memenuhi syarat dan TokenCredential
. Berasal DefaultAzureCredential
dari TokenCredential
, yang secara otomatis menggunakan identitas terkelola yang dikonfigurasi untuk aplikasi. Alur konteks identitas terkelola ke Microsoft Azure Service Bus dan jabat tangan otorisasi secara otomatis ditangani oleh info masuk token. Ini adalah model yang lebih sederhana daripada menggunakan SAS.
var client = new ServiceBusClient('cotosons.servicebus.windows.net', new DefaultAzureCredential());
Anda mengirim dan menerima pesan seperti biasa menggunakan ServiceBusSender dan ServiceBusReceiver atau ServiceBusProcessor.
Untuk petunjuk langkah demi langkah lengkap untuk mengirim dan menerima pesan menggunakan identitas terkelola, lihat mulai cepat berikut ini. Mulai cepat ini memiliki kode untuk menggunakan perwakilan layanan untuk mengirim dan menerima pesan, tetapi kodenya sama untuk menggunakan identitas terkelola.
Catatan
Identitas terkelola hanya berfungsi di dalam lingkungan Azure, pada layanan Aplikasi, komputer virtual Azure, dan set skala. Untuk aplikasi .NET, pustaka Microsoft.Azure.Services.AppAuthentication, yang digunakan oleh paket Service Bus NuGet, memberikan abstraksi atas protokol ini dan mendukung pengalaman pengembangan lokal. Pustaka ini juga memungkinkan Anda menguji kode secara lokal di komputer pengembangan, menggunakan akun pengguna dari Visual Studio, Azure CLI 2.0, atau Autentikasi Terintegrasi Direktori Aktif. Untuk informasi selengkapnya tentang opsi pengembangan lokal dengan pustaka ini, lihat Autentikasi layanan-ke-layanan ke Azure Key Vault menggunakan .NET.
Langkah berikutnya
Lihat sampel aplikasi web .NET ini di GitHub, yang menggunakan identitas terkelola untuk terhubung ke Bus Layanan untuk mengirim dan menerima pesan. Tambahkan identitas layanan aplikasi ke peran Pemilik Data Azure Bus Layanan.