Uwierzytelnianie tożsamości zarządzanej za pomocą identyfikatora Entra firmy Microsoft w celu uzyskania dostępu do zasobów usługi Azure Relay

Tożsamości zarządzane dla zasobów platformy Azure to funkcja międzyplatformowa, która umożliwia utworzenie bezpiecznej tożsamości skojarzonej z wdrożeniem, w ramach którego jest uruchamiany kod aplikacji. Następnie możesz skojarzyć daną tożsamość z rolami kontroli dostępu, które udzielają uprawnień niestandardowych na potrzeby uzyskiwania dostępu do określonych zasobów platformy Azure wymaganych przez aplikację.

Dzięki tożsamościom zarządzanym platforma Azure zarządza tą tożsamością środowiska uruchomieniowego. Nie musisz przechowywać i chronić kluczy dostępu w kodzie aplikacji lub konfiguracji, zarówno dla samej tożsamości, jak i zasobów potrzebnych do uzyskania dostępu. Aplikacja kliencka usługi Relay działająca wewnątrz aplikacji usługi aplikacja systemu Azure lub na maszynie wirtualnej z włączonymi jednostkami zarządzanymi dla zasobów platformy Azure nie musi obsługiwać reguł i kluczy SAS ani żadnych innych tokenów dostępu. Aplikacja kliencka potrzebuje tylko adresu punktu końcowego przestrzeni nazw usługi Relay. Gdy aplikacja nawiąże połączenie, usługa Relay powiąże kontekst jednostki zarządzanej z klientem w operacji pokazanej w przykładzie w dalszej części tego artykułu. Po skojarzeniu z tożsamością zarządzaną klient usługi Relay może wykonywać wszystkie autoryzowane operacje. Autoryzacja jest udzielana przez skojarzenie jednostki zarządzanej z rolami usługi Relay.

Uwaga

Ta funkcja jest ogólnie dostępna we wszystkich regionach, w tym na platformie Microsoft Azure obsługiwanej przez firmę 21Vianet.

Omówienie

Gdy podmiot zabezpieczeń (użytkownik, grupa, aplikacja) próbuje uzyskać dostęp do jednostki usługi Relay, żą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://relay.azure.net. 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 w celu uzyskania dostępu do zasobów.
  2. Następnie token jest przekazywany jako część żądania do usługi Relay w celu autoryzowania dostępu do określonego zasobu (połączeń hybrydowych, przekaźników WCF). Firma Microsoft Entra autoryzuje prawa dostępu do zabezpieczonych zasobów za pośrednictwem kontroli dostępu na podstawie ról (RBAC) platformy Azure. Usługa Azure Relay definiuje zestaw wbudowanych ról platformy Azure, które obejmują typowe zestawy uprawnień używanych do uzyskiwania dostępu do jednostek usługi Relay. Możesz również zdefiniować role niestandardowe na potrzeby uzyskiwania dostępu do danych. Aby uzyskać listę wbudowanych ról obsługiwanych przez usługę Azure Relay, zobacz Role wbudowane platformy Azure dla usługi Azure Relay. Aplikacje natywne i aplikacje internetowe, które wysyłają żądania do usługi Relay, mogą również autoryzować za pomocą identyfikatora Entra firmy Microsoft.

Wbudowane role platformy Azure dla usługi Azure Relay

W przypadku usługi Azure Relay 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 poniższe wbudowane role platformy Azure umożliwiające autoryzowanie dostępu do przestrzeni nazw usługi Relay:

Rola opis
Właściciel usługi Azure Relay Użyj tej roli, aby udzielić pełnego dostępu do zasobów usługi Azure Relay.
Odbiornik usługi Azure Relay Ta rola służy do udzielania dostępu do nasłuchiwania i odczytu jednostek do zasobów usługi Azure Relay.
Nadawca usługi Azure Relay Ta rola służy do udzielania dostępu do odczytu jednostek i wysyłania do zasobów usługi Azure Relay.

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 Azure Relay, począwszy od najwęższego zakresu:

  • Jednostki przekaźnika: przypisanie roli dotyczy określonej jednostki przekaźnika, takiej jak połączenie hybrydowe lub przekaźnik WCF.
  • Przestrzeń nazw przekaźnika: przypisanie roli ma zastosowanie do wszystkich jednostek usługi Relay w przestrzeni nazw.
  • Grupa zasobów: przypisanie roli dotyczy wszystkich zasobów usługi Relay w grupie zasobów.
  • Subskrypcja: przypisanie roli dotyczy wszystkich zasobów usługi Relay 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.

Włączanie tożsamości zarządzanej

Najpierw włącz tożsamość zarządzaną dla zasobu platformy Azure, który musi uzyskiwać dostęp do jednostek usługi Azure Relay (połączeń hybrydowych lub przekaźników WCF). Jeśli na przykład aplikacja kliencka usługi Relay jest uruchomiona na maszynie wirtualnej platformy Azure, włącz tożsamość zarządzaną dla maszyny wirtualnej, postępując zgodnie z instrukcjami w artykule Konfigurowanie tożsamości zarządzanej dla maszyny wirtualnej platformy Azure. Po włączeniu tego ustawienia w identyfikatorze Entra firmy Microsoft zostanie utworzona nowa tożsamość usługi zarządzanej.

Aby uzyskać listę usług obsługujących tożsamości zarządzane, zobacz Usługi obsługujące tożsamości zarządzane dla zasobów platformy Azure.

Przypisywanie roli usługi Azure Relay do tożsamości zarządzanej

Po włączeniu tożsamości zarządzanej przypisz jedną z ról usługi Azure Relay (właściciela usługi Azure Relay, odbiornika usługi Azure Relay lub nadawcy usługi Azure Relay) do tożsamości w odpowiednim zakresie. Po przypisaniu roli platformy Azure do tożsamości zarządzanej tożsamość zarządzana ma dostęp do jednostek usługi Relay w odpowiednim zakresie.

W poniższej sekcji użyto prostej aplikacji, która działa w ramach tożsamości zarządzanej w wystąpieniu maszyny wirtualnej platformy Azure i uzyskuje dostęp do zasobów usługi Relay.

Przykładowa aplikacja na maszynie wirtualnej korzystająca z jednostek usługi Relay

  1. Pobierz przykładową aplikację konsolową hybrid Połączenie ions na komputer z usługi GitHub.

  2. Tworzenie maszyny wirtualnej platformy Azure. W tym przykładzie użyj obrazu systemu Windows 10.

  3. Włącz tożsamość przypisaną przez system lub tożsamość przypisaną przez użytkownika dla maszyny wirtualnej platformy Azure. Aby uzyskać instrukcje, zobacz Włączanie tożsamości dla maszyny wirtualnej.

  4. Przypisz jedną z ról przekaźnika do tożsamości usługi zarządzanej w żądanym zakresie (jednostka przekaźnika, przestrzeń nazw usługi Relay, grupa zasobów, subskrypcja). Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

  5. Skompiluj aplikację konsolową lokalnie na komputerze lokalnym zgodnie z instrukcjami z dokumentu README.

  6. Skopiuj plik wykonywalny w ścieżce <>lokalnej\RoleBasedAccessControl\bin\Debug do maszyny wirtualnej. Za pomocą protokołu RDP możesz nawiązać połączenie z maszyną wirtualną platformy Azure. Aby uzyskać więcej informacji, zobacz Jak nawiązać połączenie i zalogować się do maszyny wirtualnej platformy Azure z systemem Windows.

  7. Uruchom RoleBasedAccessControl.exe na maszynie wirtualnej platformy Azure zgodnie z instrukcjami z dokumentu README.

    Uwaga

    Wykonaj te same kroki, aby uruchomić aplikację konsolową dla przekaźników WCF.

Wyróżniony kod z przykładu

Oto kod z przykładu, który pokazuje, jak używać uwierzytelniania Microsoft Entra w celu nawiązania połączenia z usługą Azure Relay.

  1. Utwórz obiekt TokenProvider przy użyciu TokenProvider.CreateManagedIdentityTokenProvider metody .

    • Jeśli używasz tożsamości zarządzanej przypisanej przez system:
      TokenProvider.CreateManagedIdentityTokenProvider();
      
    • Jeśli używasz tożsamości zarządzanej przypisanej przez użytkownika, pobierz identyfikator klienta tożsamości przypisanej przez użytkownika ze strony Tożsamość zarządzana w witrynie Azure Portal. Aby uzyskać instrukcje, zobacz Wyświetlanie listy tożsamości zarządzanych przypisanych przez użytkownika.
      var managedCredential = new ManagedIdentityCredential(clientId);
      tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedCredential);    
      
  2. Utwórz obiekt Hybrid Połączenie ionListener lub Hybrid Połączenie ionClient, przekazując identyfikator URI połączenia hybrydowego i dostawcę tokenu utworzonego w poprzednim kroku.

    Odbiornik:

    var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);    
    

    Nadawcy:

    var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);    
    

Przykłady

Następne kroki

Aby dowiedzieć się więcej na temat usługi Azure Relay, zobacz następujące artykuły.