Uwierzytelnianie tożsamości zarządzanej przy użyciu identyfikatora Entra firmy Microsoft w celu uzyskania dostępu do zasobów usługi Azure Service Bus
Tożsamości zarządzane dla zasobów platformy Azure udostępniają usługom platformy Azure automatycznie zarządzaną tożsamość w usłudze Microsoft Entra ID. Tej tożsamości można użyć do uwierzytelniania w dowolnej usłudze, takiej jak Usługa Azure Service Bus, która obsługuje uwierzytelnianie firmy Microsoft Entra bez konieczności posiadania poświadczeń w kodzie. Jeśli nie znasz tożsamości zarządzanych, zobacz Tożsamości zarządzane dla zasobów platformy Azure przed przejściem do artykułu.
Poniżej przedstawiono ogólne kroki używania tożsamości zarządzanej w celu uzyskania dostępu do jednostki usługi Service Bus:
Włącz tożsamość zarządzaną dla aplikacji klienckiej lub środowiska. Na przykład włącz tożsamość zarządzaną dla aplikacji usługi aplikacja systemu Azure Service, aplikacji usługi Azure Functions lub maszyny wirtualnej, w której działa aplikacja. Poniżej przedstawiono artykuły ułatwiające wykonanie tego kroku:
Przypisz rolę właściciela danych usługi Azure Service Bus, nadawcy danych usługi Azure Service Bus lub odbiorcy danych usługi Azure Service Bus do tożsamości zarządzanej w odpowiednim zakresie (subskrypcja platformy Azure, grupa zasobów, przestrzeń nazw usługi Service Bus lub kolejka lub temat usługi Service Bus). Aby uzyskać instrukcje dotyczące przypisywania roli do tożsamości zarządzanej, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
W aplikacji użyj tożsamości zarządzanej i punktu końcowego do przestrzeni nazw usługi Service Bus, aby nawiązać połączenie z przestrzenią nazw.
Na przykład na platformie .NET należy użyć konstruktora ServiceBusClient , który przyjmuje
TokenCredential
parametry ifullyQualifiedNamespace
(na przykład:cotosons.servicebus.windows.net
) do nawiązywania połączenia z usługą Service Bus przy użyciu tożsamości zarządzanej. Należy przekazać wartość DefaultAzureCredential, która pochodzi zTokenCredential
tożsamości zarządzanej i używa jej. WDefaultAzureCredentialOptions
pliku ustawManagedIdentityClientId
wartość na identyfikator tożsamości zarządzanej klienta.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);
Ważne
Możesz wyłączyć uwierzytelnianie za pomocą klucza lokalnego lub sygnatury dostępu współdzielonego dla przestrzeni nazw usługi Service Bus i zezwolić tylko na uwierzytelnianie firmy Microsoft Entra. Aby uzyskać instrukcje krok po kroku, zobacz Wyłączanie uwierzytelniania lokalnego.
Wbudowane role platformy Azure dla usługi Azure Service Bus
Firma Microsoft Entra autoryzuje dostęp do zabezpieczonych zasobów za pośrednictwem kontroli dostępu na podstawie ról (RBAC) platformy Azure. Usługa Azure Service Bus definiuje zestaw wbudowanych ról platformy Azure, które obejmują typowe zestawy uprawnień używanych do uzyskiwania dostępu do jednostek usługi Service Bus. Możesz również zdefiniować role niestandardowe na potrzeby uzyskiwania dostępu do danych.
Platforma Azure udostępnia następujące wbudowane role platformy Azure umożliwiające autoryzowanie dostępu do przestrzeni nazw usługi Service Bus:
- Właściciel danych usługi Azure Service Bus: ta rola umożliwia pełny dostęp do przestrzeni nazw usługi Service Bus i jej jednostek (kolejek, tematów, subskrypcji i filtrów)
- Nadawca danych usługi Azure Service Bus: ta rola umożliwia wysyłanie komunikatów do kolejek i tematów usługi Service Bus.
- Odbiornik danych usługi Azure Service Bus: ta rola umożliwia odbieranie komunikatów z kolejek i subskrypcji usługi Service Bus.
Aby przypisać rolę do tożsamości zarządzanej w witrynie Azure Portal, użyj strony Kontrola dostępu (IAM ). Przejdź do tej strony, wybierając pozycję Kontrola dostępu (IAM) na stronie przestrzeń nazw usługi Service Bus lub na stronie kolejki usługi Service Bus lub na stronie tematu usługi Service Bus. Aby uzyskać instrukcje krok po kroku dotyczące przypisywania roli, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
Zakres zasobu
Przed przypisaniem roli platformy Azure do tożsamości zarządzanej określ zakres dostępu, który powinien mieć tożsamość zarządzana. Najlepsze rozwiązania określają, że zawsze najlepiej przyznać tylko najwęższy możliwy zakres.
Poniższa lista zawiera opis poziomów, na których można określić zakres dostępu do zasobów usługi Service Bus, począwszy od najwęższego zakresu:
Kolejka, temat lub subskrypcja: Przypisanie roli ma zastosowanie do określonej jednostki usługi Service Bus.
Przestrzeń nazw usługi Service Bus: przypisanie roli obejmuje całą topologię usługi Service Bus w przestrzeni nazw.
Grupa zasobów: przypisanie roli dotyczy wszystkich zasobów usługi Service Bus w grupie zasobów.
Subskrypcja: przypisanie roli dotyczy wszystkich zasobów usługi Service Bus we wszystkich grupach zasobów w subskrypcji.
Uwaga
Pamiętaj, że propagacja przypisań ról platformy Azure może potrwać do pięciu minut.
Obecnie witryna Azure Portal nie obsługuje przypisywania użytkowników, grup ani tożsamości zarządzanych do ról platformy Azure usługi Service Bus na poziomie subskrypcji tematu. Oto przykład użycia polecenia interfejsu wiersza polecenia platformy Azure: az-role-assignment-create w celu przypisania tożsamości do roli platformy Azure usługi Service Bus:
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
Aby uzyskać więcej informacji na temat sposobu definiowania ról wbudowanych, zobacz Omówienie definicji ról. Aby uzyskać informacje na temat tworzenia ról niestandardowych platformy Azure, zobacz Role niestandardowe platformy Azure.
Używanie zestawów SDK
Na platformie .NET obiekt ServiceBusClient jest inicjowany przy użyciu konstruktora, który przyjmuje w pełni kwalifikowaną przestrzeń nazw i TokenCredential
. Element DefaultAzureCredential
pochodzi z TokenCredential
klasy , która automatycznie używa tożsamości zarządzanej skonfigurowanej dla aplikacji. Przepływ kontekstu tożsamości zarządzanej do usługi Service Bus i uzgadnianie autoryzacji są automatycznie obsługiwane przez poświadczenia tokenu. Jest to prostszy model niż użycie sygnatury dostępu współdzielonego.
var client = new ServiceBusClient('cotosons.servicebus.windows.net', new DefaultAzureCredential());
Komunikaty są wysyłane i odbierane w zwykły sposób przy użyciu usług ServiceBusSender i ServiceBusReceiver lub ServiceBusProcessor.
Aby uzyskać szczegółowe instrukcje dotyczące wysyłania i odbierania komunikatów przy użyciu tożsamości zarządzanej, zobacz następujące przewodniki Szybki start. Te przewodniki Szybki start zawierają kod służący do wysyłania i odbierania komunikatów za pomocą jednostki usługi, ale kod jest taki sam w przypadku korzystania z tożsamości zarządzanej.
Uwaga
Tożsamość zarządzana działa tylko w środowisku platformy Azure w usługach App Services, maszynach wirtualnych platformy Azure i zestawach skalowania. W przypadku aplikacji .NET biblioteka Microsoft.Azure.Services.AppAuthentication, która jest używana przez pakiet NuGet usługi Service Bus, zapewnia abstrakcję tego protokołu i obsługuje lokalne środowisko programistyczne. Ta biblioteka umożliwia również lokalne testowanie kodu na komputerze deweloperskim przy użyciu konta użytkownika z poziomu programu Visual Studio, interfejsu wiersza polecenia platformy Azure 2.0 lub zintegrowanego uwierzytelniania usługi Active Directory. Aby uzyskać więcej informacji na temat lokalnych opcji programowania w tej bibliotece, zobacz Service-to-service authentication to Azure Key Vault using .NET (Uwierzytelnianie typu usługa-usługa w usłudze Azure Key Vault przy użyciu platformy .NET).
Następne kroki
Zobacz ten przykład aplikacji internetowej platformy .NET w usłudze GitHub, który używa tożsamości zarządzanej do nawiązywania połączenia z usługą Service Bus w celu wysyłania i odbierania komunikatów. Dodaj tożsamość usługi app service do roli właściciela danych usługi Azure Service Bus.