Uwierzytelnianie i autoryzacja aplikacji przy użyciu identyfikatora Entra firmy Microsoft w celu uzyskania dostępu do jednostek usługi Azure Service Bus

Usługa Azure Service Bus obsługuje używanie identyfikatora Entra firmy Microsoft do autoryzowania żądań do jednostek usługi Service Bus (kolejek, tematów, subskrypcji lub filtrów). Za pomocą identyfikatora Entra firmy Microsoft możesz użyć kontroli dostępu opartej na rolach (RBAC) platformy Azure, aby udzielić uprawnień jednostce zabezpieczeń, która może być użytkownikiem, grupą, jednostką usługi aplikacji lub tożsamością zarządzaną dla zasobów platformy Azure. Kluczową zaletą korzystania z identyfikatora Entra firmy Microsoft w usłudze Azure Service Bus jest to, że nie trzeba już przechowywać poświadczeń w kodzie. Zamiast tego możesz zażądać tokenu dostępu OAuth 2.0 z Platforma tożsamości Microsoft. Jeśli uwierzytelnianie powiedzie się, identyfikator Entra firmy Microsoft zwraca token dostępu do aplikacji, a aplikacja może następnie użyć tokenu dostępu, aby autoryzować żądanie do zasobów usługi Service Bus.

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.

Omówienie

Gdy podmiot zabezpieczeń (użytkownik, grupa lub aplikacja) próbuje uzyskać dostęp do jednostki usługi Service Bus, żądanie musi być autoryzowane. W przypadku identyfikatora Entra firmy Microsoft dostęp do zasobu jest procesem dwuetapowym.

  1. Najpierw tożsamość podmiotu zabezpieczeń jest uwierzytelniana, a token OAuth 2.0 jest zwracany. Nazwa zasobu do żądania tokenu to https://servicebus.azure.net.
  2. Następnie token jest przekazywany w ramach żądania do usługi Service Bus w celu autoryzowania dostępu do określonego zasobu.

Krok uwierzytelniania wymaga, aby żądanie aplikacji zawiera token dostępu OAuth 2.0 w czasie wykonywania. Jeśli aplikacja działa w ramach jednostki platformy Azure, takiej jak maszyna wirtualna platformy Azure, zestaw skalowania maszyn wirtualnych lub aplikacja funkcji platformy Azure, może użyć tożsamości zarządzanej, aby uzyskać dostęp do zasobów. Aby dowiedzieć się, jak uwierzytelniać żądania wysyłane przez tożsamość zarządzaną do usługi Service Bus, zobacz Uwierzytelnianie dostępu do zasobów usługi Azure Service Bus przy użyciu identyfikatora Entra firmy Microsoft i tożsamości zarządzanych dla zasobów platformy Azure.

Krok autoryzacji wymaga przypisania co najmniej jednej roli platformy Azure do podmiotu zabezpieczeń. Usługa Azure Service Bus udostępnia role platformy Azure, które obejmują zestawy uprawnień dla zasobów usługi Service Bus. Role przypisane do podmiotu zabezpieczeń określają uprawnienia, które podmiot zabezpieczeń będzie miał w zasobach usługi Service Bus. Aby dowiedzieć się więcej na temat przypisywania ról platformy Azure do usługi Azure Service Bus, zobacz Role wbudowane platformy Azure dla usługi Azure Service Bus.

Aplikacje natywne i aplikacje internetowe, które wysyłają żądania do usługi Service Bus, mogą również autoryzować za pomocą identyfikatora Entra firmy Microsoft. W tym artykule pokazano, jak zażądać tokenu dostępu i użyć go do autoryzowania żądań dotyczących zasobów usługi Service Bus.

Wbudowane role platformy Azure dla usługi Azure Service Bus

Firma Microsoft Entra autoryzuje prawa dostępu do zabezpieczonych zasobów za pośrednictwem kontroli dostępu opartej na rolach platformy Azure. Usługa Azure Service Bus definiuje zestaw wbudowanych ról platformy Azure obejmujących typowe zestawy uprawnień używanych do uzyskiwania dostępu do jednostek usługi Service Bus, a także definiowanie ról niestandardowych na potrzeby uzyskiwania dostępu do danych.

Po przypisaniu roli platformy Azure do podmiotu zabezpieczeń firmy Microsoft Entra platforma Azure udziela dostępu do tych zasobów dla tego podmiotu zabezpieczeń. Zakres dostępu można ograniczyć do poziomu subskrypcji, grupy zasobów lub przestrzeni nazw usługi Service Bus. Podmiot zabezpieczeń firmy Microsoft Entra może być użytkownikiem, grupą, jednostką usługi aplikacji lub tożsamością zarządzaną dla zasobów platformy Azure.

W przypadku usługi Azure Service Bus zarządzanie przestrzeniami nazw i wszystkimi powiązanymi zasobami za pośrednictwem witryny Azure Portal i interfejsu API zarządzania zasobami platformy Azure jest już chronione przy użyciu modelu RBAC platformy Azure. Platforma Azure udostępnia następujące wbudowane role umożliwiające autoryzowanie dostępu do przestrzeni nazw usługi Service Bus:

  • Właściciel danych usługi Azure Service Bus: użyj tej roli, aby zapewnić pełny dostęp do zasobów usługi Service Bus.
  • Nadawca danych usługi Azure Service Bus: użyj tej roli, aby udzielić dostępu do przestrzeni nazw usługi Service Bus i jej jednostek.
  • Odbiornik danych usługi Azure Service Bus: użyj tej roli, aby udzielić dostępu do przestrzeni nazw usługi Service Bus i jej jednostek.

Zakres zasobu

Przed przypisaniem roli platformy Azure do podmiotu zabezpieczeń określ zakres dostępu, który powinien mieć podmiot zabezpieczeń. 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. Obecnie witryna Azure Portal nie obsługuje przypisywania użytkowników/grup/tożsamości zarządzanych do ról platformy Azure usługi Service Bus na poziomie subskrypcji.
  • Przestrzeń nazw usługi Service Bus: przypisanie roli obejmuje całą topologię usługi Service Bus w przestrzeni nazw i do skojarzonej z nią grupy odbiorców.
  • 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.

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.

Uwierzytelnianie przy użyciu aplikacji

Kluczową zaletą korzystania z identyfikatora Entra firmy Microsoft z usługą Service Bus jest to, że poświadczenia nie muszą być już przechowywane w kodzie. Zamiast tego możesz zażądać tokenu dostępu OAuth 2.0 z Platforma tożsamości Microsoft. Firma Microsoft Entra uwierzytelnia podmiot zabezpieczeń (użytkownika, grupy, jednostki usługi lub tożsamości zarządzanej dla zasobów platformy Azure) z uruchomioną aplikacją. Jeśli uwierzytelnianie powiedzie się, identyfikator Entra firmy Microsoft zwraca token dostępu do aplikacji, a aplikacja może następnie użyć tokenu dostępu do autoryzowania żądań do usługi Azure Service Bus.

W poniższych sekcjach pokazano, jak skonfigurować aplikację natywną lub aplikację internetową do uwierzytelniania przy użyciu Platforma tożsamości Microsoft 2.0. Aby uzyskać więcej informacji na temat Platforma tożsamości Microsoft 2.0, zobacz omówienie Platforma tożsamości Microsoft (wersja 2.0).

Aby zapoznać się z omówieniem przepływu udzielania kodu OAuth 2.0, zobacz Autoryzowanie dostępu do aplikacji internetowych firmy Microsoft Entra przy użyciu przepływu udzielania kodu OAuth 2.0.

Rejestrowanie aplikacji w dzierżawie firmy Microsoft Entra

Pierwszym krokiem używania identyfikatora Entra firmy Microsoft do autoryzowania jednostek usługi Service Bus jest zarejestrowanie aplikacji klienckiej w dzierżawie firmy Microsoft Entra w witrynie Azure Portal. Podczas rejestrowania aplikacji klienckiej należy podać informacje o aplikacji w usłudze AD. Identyfikator Entra firmy Microsoft udostępnia następnie identyfikator klienta (nazywany również identyfikatorem aplikacji), którego można użyć do skojarzenia aplikacji ze środowiskiem uruchomieniowym Microsoft Entra. Aby dowiedzieć się więcej o identyfikatorze klienta, zobacz Application and service principal objects in Microsoft Entra ID (Obiekty aplikacji i jednostki usługi w identyfikatorze Entra firmy Microsoft).

Wykonaj kroki opisane w przewodniku Szybki start: rejestrowanie aplikacji przy użyciu Platforma tożsamości Microsoft w celu zarejestrowania aplikacji przy użyciu identyfikatora Microsoft Entra ID.

Uwaga

Jeśli zarejestrujesz aplikację jako aplikację natywną, możesz określić dowolny prawidłowy identyfikator URI dla identyfikatora URI przekierowania. W przypadku aplikacji natywnych ta wartość nie musi być rzeczywistym adresem URL. W przypadku aplikacji internetowych identyfikator URI przekierowania musi być prawidłowym identyfikatorem URI, ponieważ określa adres URL, do którego podano tokeny.

Po zarejestrowaniu aplikacji zobaczysz identyfikator aplikacji (klienta) i identyfikator katalogu (dzierżawy) w obszarze Ustawienia:

Ważne

Zanotuj wartości TenantId i ApplicationId. Te wartości będą potrzebne do uruchomienia aplikacji.

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

Aby uzyskać więcej informacji na temat rejestrowania aplikacji w usłudze Microsoft Entra ID, zobacz Integrowanie aplikacji z identyfikatorem Entra firmy Microsoft.

Tworzenie wpisu tajnego klienta

Aplikacja potrzebuje klucza tajnego klienta, aby potwierdzić swoją tożsamość podczas żądania tokenu. Aby dodać klucz tajny klienta, wykonaj następujące kroki.

  1. Przejdź do rejestracji aplikacji w witrynie Azure Portal, jeśli nie jesteś jeszcze na stronie.

  2. Wybierz pozycję Certyfikaty i wpisy tajne w menu po lewej stronie.

  3. W obszarze Wpisy tajne klienta wybierz pozycję Nowy klucz tajny klienta, aby utworzyć nowy wpis tajny.

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

  4. Podaj opis wpisu tajnego i wybierz żądany interwał wygaśnięcia, a następnie wybierz pozycję Dodaj.

    Screenshot showing the Add a client secret page.

  5. Natychmiast skopiuj wartość nowego wpisu tajnego do bezpiecznej lokalizacji. Wartość wypełnienia jest wyświetlana tylko raz.

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

Uprawnienia interfejsu API usługi Service Bus

Jeśli aplikacja jest aplikacją konsolową, musisz zarejestrować aplikację natywną i dodać uprawnienia interfejsu API dla biblioteki Microsoft.ServiceBus do wymaganego zestawu uprawnień . Aplikacje natywne wymagają również identyfikatora URI przekierowania w identyfikatorze Entra firmy Microsoft, który służy jako identyfikator. Identyfikator URI nie musi być miejscem docelowym sieci. Użyj https://servicebus.microsoft.com w tym przykładzie, ponieważ przykładowy kod używa już tego identyfikatora URI.

Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal

Przypisz jedną z ról usługi Service Bus do jednostki usługi aplikacji w żądanym zakresie (przestrzeń nazw usługi Service Bus, grupa zasobów, subskrypcja). Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

Po zdefiniowaniu roli i jej zakresu możesz przetestować to zachowanie za pomocą przykładu w usłudze GitHub.

Uwierzytelnianie klienta usługi Service Bus

Po zarejestrowaniu aplikacji i udzieleniu jej uprawnień do wysyłania/odbierania danych w usłudze Azure Service Bus możesz uwierzytelnić klienta przy użyciu poświadczeń wpisu tajnego klienta, co umożliwi wysyłanie żądań względem usługi Azure Service Bus.

Aby zapoznać się z listą scenariuszy, w których są obsługiwane uzyskiwanie tokenów, zobacz sekcję Scenariusze w repozytorium Microsoft Authentication Library (MSAL) dla repozytorium GitHub platformy .NET.

Korzystając z najnowszej biblioteki Azure.Messaging.ServiceBus , możesz uwierzytelnić element ServiceBusClient za pomocą elementu ClientSecretCredential, który jest zdefiniowany w bibliotece Azure.Identity .

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

Jeśli używasz starszych pakietów .NET, zapoznaj się z przykładami RoleBasedAccessControl w repozytorium przykładów azure-service-bus.

Następne kroki

Aby dowiedzieć się więcej na temat obsługi komunikatów usługi Service Bus, zobacz następujące tematy.