Azure Service Bus kaynaklarına erişmek için Microsoft Entra Id ile yönetilen kimliğin kimliğini doğrulama
Azure kaynakları için yönetilen kimlikler, Azure hizmetlerine Microsoft Entra ID üzerinde otomatik olarak yönetilen bir kimlik sağlar. Kodunuzda kimlik bilgileri olmadan Microsoft Entra kimlik doğrulamasını destekleyen Azure Service Bus gibi herhangi bir hizmette kimlik doğrulaması yapmak için bu kimliği kullanabilirsiniz. Yönetilen kimlikleri bilmiyorsanız, bu makaleyi okumaya devam etmeden önce bkz . Azure kaynakları için yönetilen kimlikler.
Service Bus varlığına erişmek için yönetilen kimlik kullanmaya yönelik üst düzey adımlar şunlardır:
İstemci uygulamanız veya ortamınız için yönetilen kimliği etkinleştirin. Örneğin, Azure Uygulaması Hizmeti uygulamanız, Azure İşlevleri uygulamanız veya uygulamanızın çalıştığı bir sanal makine için yönetilen kimliği etkinleştirin. Bu adımda size yardımcı olacak makaleler şunlardır:
Uygun kapsamdaki yönetilen kimliğe Azure Service Bus Veri Sahibi, Azure Service Bus Veri Göndereni veya Azure Service Bus Veri Alıcısı rolü atayın (Azure aboneliği, kaynak grubu, Service Bus ad alanı veya Service Bus kuyruğu veya konusu). Yönetilen kimliğe rol atama yönergeleri için bkz . Azure portalını kullanarak Azure rolleri atama.
Uygulamanızda, ad alanına bağlanmak için yönetilen kimliği ve uç noktayı Service Bus ad alanına kullanın.
Örneğin, .NET'te, yönetilen kimliği kullanarak Service Bus'a bağlanmak için ve
fullyQualifiedNamespace
(örneğin:cotosons.servicebus.windows.net
) parametrelerini alanTokenCredential
ServiceBusClient oluşturucusunu kullanırsınız. Yönetilen kimliktenTokenCredential
türetilen ve kullanan DefaultAzureCredential değerini geçirirsiniz. içindeDefaultAzureCredentialOptions
, istemcinin yönetilen kimliğinin kimliği olarak ayarlayınManagedIdentityClientId
.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);
Ö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.
Azure Service Bus için Azure yerleşik rolleri
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 yaygın izin kümelerini kapsayan bir dizi Azure yerleşik rolü tanımlar. Verilere erişmek için özel roller de tanımlayabilirsiniz.
Azure, Service Bus ad alanına erişim yetkisi vermek için aşağıdaki Azure yerleşik rollerini sağlar:
- Azure Service Bus Veri Sahibi: Service Bus ad alanına ve varlıklarına (kuyruklar, konular, abonelikler ve filtreler) tam erişim sağlamak için bu rolü kullanın
- Azure Service Bus Veri Göndereni: Service Bus kuyruklarına ve konu başlıklarına ileti göndermeye izin vermek için bu rolü kullanın.
- Azure Service Bus Veri Alıcısı: Service Bus kuyruklarından ve aboneliklerinden ileti almaya izin vermek için bu rolü kullanın.
Azure portalında yönetilen kimliğe rol atamak için Erişim denetimi (IAM) sayfasını kullanın. Service Bus Ad Alanı sayfasında, Service Bus kuyruğu sayfasında veya Service Bus konu sayfasında Erişim denetimi (IAM) öğesini seçerek bu sayfaya gidin. Rol atamaya yönelik adım adım yönergeler için bkz . Azure portalını kullanarak Azure rolleri atama.
Kaynak kapsamı
Yönetilen kimliğe Azure rolü atamadan önce, yönetilen kimliğin 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.
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.
Şu anda Azure portalı, konunun abonelik düzeyinde Service Bus Azure rollerine kullanıcı, grup veya yönetilen kimlik atamayı desteklememektedir. Service Bus Azure rolüne kimlik atamak için azure CLI komutunu kullanma örneği aşağıda verilmiştir: az-role-assignment-create :
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.
SDK'ları kullanma
.NET'te ServiceBusClient nesnesi, tam ad alanı ve TokenCredential
bir alan oluşturucu kullanılarak başlatılır. , DefaultAzureCredential
uygulama için yapılandırılan yönetilen kimliği otomatik olarak kullanan 'den TokenCredential
türetilir. 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('cotosons.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 tam adım adım yönergeler için aşağıdaki hızlı başlangıçlara bakın. Bu hızlı başlangıçlar, ileti göndermek ve almak için hizmet sorumlusu kullanma koduna sahiptir, ancak kod yönetilen kimlik kullanmak için aynıdır.
Not
Yönetilen kimlik yalnızca Azure ortamında, Uygulama hizmetlerinde, Azure VM'lerinde ve ölçek kümelerinde çalışır. .NET uygulamaları için, Service Bus NuGet paketi tarafından kullanılan 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 2.0 veya Active Directory 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 bkz . .NET kullanarak Azure Key Vault'ta hizmet-hizmet kimlik doğrulaması.
Sonraki adımlar
İleti göndermek ve almak için Service Bus'a bağlanmak için yönetilen kimlik kullanan GitHub'da bu .NET web uygulaması örneğine bakın. Uygulama hizmetinin kimliğini Azure Service Bus Veri Sahibi rolüne ekleyin.