Azure Service Bus varlıklarına erişmek için Microsoft Entra Id ile bir uygulamanın kimliğini doğrulama ve yetkilendirme

Azure Service Bus, Service Bus varlıklarına (kuyruklar, konular, abonelikler veya filtreler) yönelik istekleri yetkilendirmek için Microsoft Entra Id kullanılmasını destekler. Microsoft Entra Id ile Azure rol tabanlı erişim denetimini (Azure RBAC) kullanarak kullanıcı, grup, uygulama hizmet sorumlusu veya Azure kaynakları için yönetilen kimlik olabilecek bir güvenlik sorumlusuna izinler verilmektedir. Microsoft Entra ID'yi Azure Service Bus ile kullanmanın temel avantajlarından biri, kimlik bilgilerinizi artık kodda depolamanıza gerek olmadığıdır. Bunun yerine, Microsoft kimlik platformu bir OAuth 2.0 erişim belirteci isteyebilirsiniz. Kimlik doğrulaması başarılı olursa, Microsoft Entra Kimliği uygulamaya bir erişim belirteci döndürür ve uygulama, Service Bus kaynaklarına yönelik isteği yetkilendirmek için erişim belirtecini kullanabilir.

Önemli

Service Bus ad alanı için yerel veya SAS anahtarı kimlik doğrulamasını devre dışı bırakabilir ve yalnızca Microsoft Entra kimlik doğrulamasına izin vekleyebilirsiniz. Adım adım yönergeler için bkz . Yerel kimlik doğrulamasını devre dışı bırakma.

Genel bakış

Bir güvenlik sorumlusu (kullanıcı, grup veya uygulama) bir Service Bus varlığına erişmeye çalıştığında, isteğin yetkilendirilmiş olması gerekir. Microsoft Entra Id ile kaynağa erişim iki adımlı bir işlemdir.

  1. İlk olarak, güvenlik sorumlusunun kimliği doğrulanır ve bir OAuth 2.0 belirteci döndürülür. Belirteç istemek için kaynak adı şeklindedir https://servicebus.azure.net.
  2. Ardından belirteç, belirtilen kaynağa erişim yetkisi vermek için Service Bus hizmetine yapılan bir isteğin parçası olarak geçirilir.

Kimlik doğrulama adımı, bir uygulama isteğinin çalışma zamanında bir OAuth 2.0 erişim belirteci içermesini gerektirir. Bir uygulama Azure VM, Sanal Makine Ölçek Kümesi veya Azure İşlevi uygulaması gibi bir Azure varlığı içinde çalışıyorsa, kaynaklara erişmek için yönetilen kimlik kullanabilir. Yönetilen kimlik tarafından Service Bus hizmetinde yapılan isteklerin kimliğini doğrulamayı öğrenmek için bkz . Microsoft Entra Id ve Azure Kaynakları için yönetilen kimliklerle Azure Service Bus kaynaklarına erişimin kimliğini doğrulama.

Yetkilendirme adımı için güvenlik sorumlusuna bir veya daha fazla Azure rolü atanmalıdır. Azure Service Bus, Service Bus kaynakları için izin kümelerini kapsayan Azure rolleri sağlar. Bir güvenlik sorumlusuna atanan roller, sorumlunun Service Bus kaynaklarında sahip olacağı izinleri belirler. Azure Service Bus'a Azure rolleri atama hakkında daha fazla bilgi edinmek için bkz . Azure Service Bus için Azure yerleşik rolleri.

Service Bus'a istekte bulunan yerel uygulamalar ve web uygulamaları da Microsoft Entra Id ile yetkilendirilebilir. Bu makalede, erişim belirteci isteme ve Service Bus kaynaklarına yönelik istekleri yetkilendirmek için bu belirteci kullanma işlemleri gösterilir.

Azure Service Bus için Azure yerleşik rolleri

Microsoft Entra, Azure RBAC aracılığıyla güvenli kaynaklara erişim haklarını yetkiler. Azure Service Bus, Service Bus varlıklarına erişmek için kullanılan yaygın izin kümelerini kapsayan bir azure yerleşik rolleri kümesini tanımlar ve verilere erişmek için özel roller de tanımlayabilirsiniz.

Microsoft Entra güvenlik sorumlusuna bir Azure rolü atandığında, Azure bu güvenlik sorumlusu için bu kaynaklara erişim verir. Erişimin kapsamı abonelik düzeyine, kaynak grubuna veya Service Bus ad alanına göre ayarlanabilir. Microsoft Entra güvenlik sorumlusu bir kullanıcı, grup, uygulama hizmet sorumlusu veya Azure kaynakları için yönetilen kimlik olabilir.

Azure Service Bus için, Azure portalı ve Azure kaynak yönetimi API'sini kullanarak ad alanlarının ve tüm ilgili kaynakların yönetimi Azure RBAC modeli kullanılarak zaten korunur. Azure, Service Bus ad alanına erişim yetkisi vermek için aşağıdaki yerleşik rolleri sağlar:

Kaynak kapsamı

Güvenlik sorumlusuna Azure rolü atamadan önce, güvenlik sorumlusunun sahip olması gereken erişim kapsamını belirleyin. En iyi yöntemler, yalnızca mümkün olan en dar kapsamı vermenin her zaman en iyi yöntem olduğunu belirler.

Aşağıdaki listede, en dar kapsamla başlayarak Service Bus kaynaklarına erişimi kapsam olarak kullanabileceğiniz düzeyler açıklanmaktadır:

  • Kuyruk, konu veya abonelik: Rol ataması belirli Service Bus varlığı için geçerlidir. Azure portalı şu anda Abonelik düzeyinde Service Bus Azure rollerine kullanıcı/grup/yönetilen kimlik atamayı desteklememektedir.
  • Service Bus ad alanı: Rol ataması, ad alanı altındaki Service Bus topolojisinin tamamına ve onunla ilişkili tüketici grubuna yayılır.
  • Kaynak grubu: Rol ataması, kaynak grubu altındaki tüm Service Bus kaynaklarına uygulanır.
  • Abonelik: Rol ataması, abonelikteki tüm kaynak gruplarındaki tüm Service Bus kaynaklarına uygulanır.

Not

Azure rol atamalarının yayılması beş dakika kadar sürebilir.

Yerleşik rollerin nasıl tanımlandığı hakkında daha fazla bilgi için bkz . Rol tanımlarını anlama. Azure özel rolleri oluşturma hakkında bilgi için bkz . Azure özel rolleri.

Uygulamadan kimlik doğrulaması yapma

Microsoft Entra ID'yi Service Bus ile kullanmanın temel avantajlarından biri, kimlik bilgilerinizin artık kodunuzda depolanması gerekmediğinden kaynaklanır. Bunun yerine, Microsoft kimlik platformu bir OAuth 2.0 erişim belirteci isteyebilirsiniz. Microsoft Entra, uygulamayı çalıştıran güvenlik sorumlusunun (kullanıcı, grup, hizmet sorumlusu veya Azure kaynakları için yönetilen kimlik) kimliğini doğrular. Kimlik doğrulaması başarılı olursa, Microsoft Entra Id uygulamaya erişim belirtecini döndürür ve uygulama azure Service Bus'a yönelik istekleri yetkilendirmek için erişim belirtecini kullanabilir.

Aşağıdaki bölümlerde yerel uygulamanızı veya web uygulamanızı Microsoft kimlik platformu 2.0 ile kimlik doğrulaması için nasıl yapılandırabileceğiniz gösterilmektedir. Microsoft kimlik platformu 2.0 hakkında daha fazla bilgi için bkz. Microsoft kimlik platformu (v2.0) genel bakış.

OAuth 2.0 kod verme akışına genel bakış için bkz . OAuth 2.0 kod verme akışını kullanarak Microsoft Entra web uygulamalarına erişimi yetkilendirme.

Uygulamanızı bir Microsoft Entra kiracısıyla kaydetme

Service Bus varlıklarını yetkilendirmek için Microsoft Entra Id kullanmanın ilk adımı, istemci uygulamanızı Azure portalından bir Microsoft Entra kiracısına kaydetmektir. İstemci uygulamanızı kaydettiğinizde, AD'ye uygulama hakkında bilgi sağlayacaksınız. Microsoft Entra Id daha sonra uygulamanızı Microsoft Entra çalışma zamanıyla ilişkilendirmek için kullanabileceğiniz bir istemci kimliği (uygulama kimliği olarak da adlandırılır) sağlar. İstemci kimliği hakkında daha fazla bilgi edinmek için bkz . Microsoft Entra Id'de uygulama ve hizmet sorumlusu nesneleri.

Hızlı Başlangıç: Uygulamanızı Microsoft Entra ID'ye kaydetmek için Microsoft kimlik platformu kaydetme adımlarını izleyin.

Not

Uygulamanızı yerel uygulama olarak kaydederseniz, Yeniden Yönlendirme URI'si için geçerli herhangi bir URI belirtebilirsiniz. Yerel uygulamalar için bu değerin gerçek bir URL olması gerekmez. Web uygulamaları için, belirteçlerin sağlandığı URL'yi belirttiğinden yeniden yönlendirme URI'si geçerli bir URI olmalıdır.

Uygulamanızı kaydettikten sonra, Ayarlar altında Uygulama (istemci) Kimliği ve Dizin (kiracı) kimliğini görürsünüz:

Önemli

TenantId ve ApplicationId değerlerini not edin. Uygulamayı çalıştırmak için bu değerlere ihtiyacınız olacaktır.

Screenshot showing the App registration page showing the Application ID and Tenant ID.

Bir uygulamayı Microsoft Entra ID ile kaydetme hakkında daha fazla bilgi için bkz . Uygulamaları Microsoft Entra Id ile tümleştirme.

İstemci gizli dizisi oluşturma

Uygulamaya belirteç isterken kimliğini kanıtlayabilmesi için bir istemci gizli dizisi gerekir. İstemci gizli dizisini eklemek için aşağıdaki adımları izleyin.

  1. Henüz sayfada değilseniz Azure portalında uygulama kaydınıza gidin.

  2. Soldaki menüden Sertifikalar ve gizli diziler'i seçin.

  3. yeni gizli dizi oluşturmak için İstemci gizli dizileri'nin altında Yeni istemci gizli dizisi'ni seçin.

    Screenshot showing the Certificates and secrets page with New client secret button selected.

  4. Gizli dizi için bir açıklama sağlayın, istenen süre sonu aralığını seçin ve ardından Ekle'yi seçin.

    Screenshot showing the Add a client secret page.

  5. Yeni gizli anahtarın değerini hemen güvenli bir konuma kopyalayın. Doldurma değeri size yalnızca bir kez görüntülenir.

    Screenshot showing the Client secrets section with the secret you added.

Service Bus API'sinin izinleri

Uygulamanız bir konsol uygulamasıysa, yerel bir uygulama kaydetmeniz ve gerekli izin kümesine Microsoft.ServiceBus için API izinleri eklemeniz gerekir. Yerel uygulamalar, tanımlayıcı işlevi görecek Microsoft Entra Kimliği'nde de bir yeniden yönlendirme uri'sine ihtiyaç duyar; URI'nin ağ hedefi olması gerekmez. Örnek kod zaten bu URI'yi kullandığından bu örnek için kullanın https://servicebus.microsoft.com .

Azure portalı kullanarak Azure rolleri atama

Service Bus rollerinden birini uygulamanın hizmet sorumlusuna istenen kapsamda (Service Bus ad alanı, kaynak grubu, abonelik) atayın. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.

Rolü ve kapsamını tanımladıktan sonra bu davranışı GitHub'da örnekle test edebilirsiniz.

Service Bus istemcisinin kimliğini doğrulama

Uygulamanızı kaydettikten ve Azure Service Bus'ta veri gönderme/alma izinleri verdikten sonra istemcinizin kimliğini istemci gizli anahtarı kimlik bilgileriyle doğrulayabilirsiniz. Bu sayede Azure Service Bus'a yönelik isteklerde bulunabilirsiniz.

Belirteç alma işleminin desteklendiği senaryoların listesi için .NET GitHub deposu için Microsoft Kimlik Doğrulama Kitaplığı'nın (MSAL) Senaryolar bölümüne bakın.

En son Azure.Messaging.ServiceBus kitaplığını kullanarak, Azure.Identity kitaplığında tanımlanan ClientSecretCredential ile ServiceBusClient kimliğini doğrulayabilirsiniz.

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

Eski .NET paketlerini kullanıyorsanız azure-service-bus örnekleri deposundaki RoleBasedAccessControl örneklerine bakın.

Sonraki adımlar

Service Bus mesajlaşma hizmeti hakkında daha fazla bilgi edinmek için aşağıdaki konu başlıklarına bakın.