Aracılığıyla paylaş


Azure Service Bus ile yönetilen kimlikleri kullanma

Azure kaynakları için yönetilen kimlikler, Azure hizmetlerine Microsoft Entra ID üzerinde otomatik olarak yönetilen bir kimlik sağlar. Kimlik bilgilerini kodunuzda depolamadan Azure Service Bus'ta kimlik doğrulaması yapmak için bu kimliği kullanabilirsiniz.

Bu makalede yönetilen kimliği etkinleştirme, uygun Service Bus rolünü atama ve uygulama kodunuzdan Service Bus'a bağlanma adımları gösterilmektedir.

Not

Yönetilen kimlikler hakkında bilginiz yoksa bkz. Azure kaynakları için yönetilen kimlikler.

Önkoşullar

Azure Service Bus ile yönetilen kimlikleri kullanmak için şunları yapmanız gerekir:

Ö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.

Yönetilen kimliğe Service Bus rolü atama

Microsoft Entra, Azure rol tabanlı erişim denetimi (RBAC) aracılığıyla güvenli kaynaklara erişim yetkisi sağlar. Azure Service Bus, Service Bus varlıklarına erişmek için kullanılan ortak izin kümelerini kapsayan Azure yerleşik rolleri sağlar. Özel roller de tanımlayabilirsiniz.

Aşağıdaki tabloda, Service Bus ad alanına erişim yetkisi vermek için azure yerleşik rolleri listelenmiştir:

Rol Açıklama
Azure Service Bus Veri Sahibi Service Bus ad alanına ve varlıklarına (kuyruklar, konular, abonelikler ve filtreler) tam erişim
Azure Service Bus Veri Gönderici Service Bus kuyruklarına ve konu başlıklarına ileti gönderme
Azure Service Bus Veri Alıcısı Service Bus kuyruklarından ve aboneliklerinden ileti alma

Azure portalında rol atama

Azure portalında yönetilen kimliğe rol atamak için:

  1. Service Bus ad alanınıza, kuyruğunuza veya konu başlığınıza gidin.
  2. Soldaki menüden Erişim denetimi (IAM) öğesini seçin.
  3. Ekle>Rol ataması ekle’yi seçin.
  4. Rol sekmesinde uygun Service Bus veri rolünü seçin.
  5. Üyeler sekmesinde Yönetilen kimlik'i ve ardından Üye seç'i seçin.
  6. Azure kaynağınız için yönetilen kimliği seçin.
  7. Gözden geçir + ata'yı seçin.

Daha fazla bilgi için bkz. Azure portalını kullanarak Azure rolleri atama.

Kaynak kapsamını seçin

Azure rolü atamadan önce yönetilen kimliğin ihtiyaç duyduğu erişim kapsamını belirleyin. Yalnızca mümkün olan en dar kapsamı verin.

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.

  • Service Bus ad alanı: Rol ataması, ad alanı altındaki Service Bus topolojisinin tamamına 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.

Azure CLI kullanarak rol atama

Azure portalı, konu abonelik düzeyinde Service Bus rollerine yönetilen kimlik atamayı desteklemez. Herhangi bir kapsamda rol atamak için Azure CLI az role assignment create komutunu kullanın:

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

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.

Not

Service Bus RBAC rolünden yönetilen kimliğini kaldırdıktan sonra kaynak hizmet veya uygulama yeniden başlatılmazsa, kaynak uygulama, belirtecin süresi dolana kadar Service Bus varlığından ileti göndermeye veya almaya devam edebilir (varsayılan belirteç geçerlilik süresi 24 saattir). Bu davranış, tasarım gereğidir.

Kaynağın yönetilen kimliğini RBAC rolünden kaldırdıktan sonra, belirtecin süresinin hemen dolması ve Service Bus varlığından ileti gönderilmesini veya alınmasını önlemek için kaynak uygulamayı veya hizmeti yeniden başlatın.

Azure SDK'larında yönetilen kimlik kullanarak Service Bus'a bağlanma

.NET, Java, JavaScript ve Python için Azure SDK'ları, Service Bus ile yönetilen kimlik doğrulamasını destekler. Aşağıdaki örnekte .NET SDK'sını kullanarak nasıl bağlandığınız gösterilmektedir.

.NET'te ServiceBusClient nesnesi, bir tam niteleyici ad alanı ve bir TokenCredential kullanarak bir oluşturucu tarafından başlatılır. DefaultAzureCredential TokenCredential'den türetilir ve uygulama için yapılandırılan yönetilen kimliği otomatik olarak kullanır. Yönetilen kimlik bağlamının Service Bus'a akışı ve yetkilendirme el sıkışması, belirteç kimlik bilgileri tarafından otomatik olarak işlenir. SAS kullanmaktan daha basit bir modeldir.

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

ServiceBusSender ve ServiceBusReceiver veya ServiceBusProcessor kullanarak iletileri her zamanki gibi gönderip alırsınız.

Yönetilen kimlik kullanarak ileti göndermeye ve almaya yönelik adım adım yönergeler için aşağıdaki hızlı başlangıçlara bakın. Bu hızlı başlangıç kılavuzları, bir hizmet temsilcisi kullanarak mesaj gönderip almak için gerekli olan koda sahiptir, ancak yönetilen kimlik kullanımı için kod aynıdır.

Not

Yönetilen kimlikler yalnızca Azure ortamında, App Service'te, Azure VM'lerinde ve ölçek kümelerinde çalışır. .NET uygulamaları için, Service Bus NuGet paketinin kullandığı Microsoft.Azure.Services.AppAuthentication kitaplığı bu protokol üzerinde bir soyutlama sağlar ve yerel geliştirme deneyimini destekler. Bu kitaplık ayrıca Visual Studio, Azure CLI veya Microsoft Entra Tümleşik Kimlik Doğrulaması'ndan kullanıcı hesabınızı kullanarak kodunuzu geliştirme makinenizde yerel olarak test etmenizi sağlar. Bu kitaplıkla yerel geliştirme seçenekleri hakkında daha fazla bilgi için, .NET kullanarak Azure Key Vault'ta hizmet-hizmet kimlik doğrulaması başlıklı makaleye bakın.

Sonraki adımlar