Uwierzytelnianie i autoryzacja w usłudze Azure Active Directory

W tym artykule opisano sposób uwierzytelniania klientów Azure Event Grid publikowania przy użyciu usługi Azure Active Directory (Azure AD).

Omówienie

Platforma Microsoft Identity zapewnia zintegrowane uwierzytelnianie i zarządzanie kontrolą dostępu dla zasobów i aplikacji korzystających z usługi Azure Active Directory (Azure AD) jako dostawcy tożsamości. Użyj platformy Microsoft Identity, aby zapewnić obsługę uwierzytelniania i autoryzacji w aplikacjach. Jest ona oparta na otwartych standardach, takich jak OAuth 2.0 i OpenID Connect, a także oferuje narzędzia i biblioteki open source, które obsługują wiele scenariuszy uwierzytelniania. Udostępnia ona zaawansowane funkcje, takie jak dostęp warunkowy , które umożliwiają ustawianie zasad wymagających uwierzytelniania wieloskładnikowego lub zezwalania na dostęp z określonych lokalizacji, na przykład.

Zaletą, która zwiększa stan zabezpieczeń w przypadku używania Azure AD jest to, że nie trzeba przechowywać poświadczeń, takich jak klucze uwierzytelniania, w kodzie lub repozytoriach. Zamiast tego polegasz na pozyskiwaniu tokenów dostępu OAuth 2.0 z platformy tożsamości Microsoft, którą aplikacja przedstawia podczas uwierzytelniania w chronionym zasobie. Aplikację do publikowania zdarzeń można zarejestrować za pomocą Azure AD i uzyskać jednostkę usługi skojarzona z aplikacją, którą zarządzasz i której używasz. Zamiast tego można użyć tożsamości zarządzanych, przypisanych przez system lub przypisanych przez użytkownika, aby jeszcze prostszy model zarządzania tożsamościami był zarządzany przez niektóre aspekty cyklu życia tożsamości.

Kontrola dostępu oparta na rolach (RBAC) umożliwia konfigurowanie autoryzacji w taki sposób, aby określone podmioty zabezpieczeń (tożsamości dla użytkowników, grup lub aplikacji) miały określone uprawnienia do wykonywania operacji na zasobach platformy Azure. W ten sposób podmiot zabezpieczeń używany przez aplikację kliencką wysyłającą zdarzenia do usługi Event Grid musi mieć skojarzona rola RBAC EventGrid Data Sender .

Podmioty zabezpieczeń

Istnieją dwie szerokie kategorie podmiotów zabezpieczeń, które mają zastosowanie podczas omawiania uwierzytelniania klienta publikowania usługi Event Grid:

  • Tożsamości zarządzane. Tożsamość zarządzana może być przypisana przez system, którą można włączyć w zasobie platformy Azure i jest skojarzona tylko z tym zasobem lub przypisanym przez użytkownika, który jawnie utworzysz i nadaj mu nazwę. Tożsamości zarządzane przypisane przez użytkownika mogą być skojarzone z więcej niż jednym zasobem.
  • Podmiot zabezpieczeń aplikacji. Jest to typ podmiotu zabezpieczeń, który reprezentuje aplikację, która uzyskuje dostęp do zasobów chronionych przez Azure AD.

Niezależnie od używanego podmiotu zabezpieczeń, tożsamości zarządzanej lub podmiotu zabezpieczeń aplikacji klient używa tej tożsamości do uwierzytelniania przed Azure AD i uzyskania tokenu dostępu OAuth 2.0 wysyłanego z żądaniami podczas wysyłania zdarzeń do usługi Event Grid. Ten token jest podpisany kryptograficznie i po odebraniu go przez usługę Event Grid token jest weryfikowany. Na przykład odbiorcy (zamierzony odbiorca tokenu) są potwierdzani między innymi jako usługa Event Grid (https://eventgrid.azure.net). Token zawiera informacje o tożsamości klienta. Usługa Event Grid przyjmuje tożsamość i sprawdza, czy klient ma przypisaną rolę EventGrid Data Sender . Dokładniej usługa Event Grid sprawdza, czy tożsamość ma Microsoft.EventGrid/events/send/action uprawnienia w roli RBAC skojarzonej z tożsamością przed zezwoleniem na ukończenie żądania publikowania zdarzeń.

Jeśli używasz zestawu SDK usługi Event Grid, nie musisz martwić się o szczegóły dotyczące sposobu implementowania uzyskiwania tokenów dostępu i dołączania ich do usługi Event Grid, ponieważ zestawy SDK płaszczyzny danych usługi Event Grid wykonują to za Ciebie.

Kroki konfiguracji klienta do korzystania z uwierzytelniania Azure AD

Wykonaj następujące kroki, aby skonfigurować klienta do używania uwierzytelniania Azure AD podczas wysyłania zdarzeń do tematu, domeny lub przestrzeni nazw partnera.

  1. Utwórz lub użyj podmiotu zabezpieczeń, którego chcesz użyć do uwierzytelniania. Możesz użyć tożsamości zarządzanej lub podmiotu zabezpieczeń aplikacji.
  2. Przyznaj jednostce zabezpieczeń uprawnienia do publikowania zdarzeń , przypisując rolę Nadawca danych usługi EventGrid do podmiotu zabezpieczeń.
  3. Użyj zestawu SDK usługi Event Grid, aby opublikować zdarzenia w usłudze Event Grid.

Uwierzytelnianie przy użyciu tożsamości zarządzanej

Tożsamości zarządzane to tożsamości skojarzone z zasobami platformy Azure. Tożsamości zarządzane zapewniają tożsamość używaną przez aplikacje podczas korzystania z zasobów platformy Azure, które obsługują uwierzytelnianie Azure AD. Aplikacje mogą używać tożsamości zarządzanej zasobu hostingu, takiego jak maszyna wirtualna lub usługa aplikacja systemu Azure, aby uzyskać Azure AD tokeny, które są prezentowane z żądaniem podczas publikowania zdarzeń w usłudze Event Grid. Po nawiązaniu połączenia z aplikacją usługa Event Grid wiąże kontekst jednostki zarządzanej z klientem. Po skojarzeniu z tożsamością zarządzaną klient publikowania usługi Event Grid może wykonywać wszystkie autoryzowane operacje. Autoryzacja jest udzielana przez skojarzenie jednostki zarządzanej z rolą RBAC usługi Event Grid.

Tożsamość zarządzana udostępnia usługom platformy Azure automatycznie zarządzaną tożsamość w Azure AD. W przeciwieństwie do innych metod uwierzytelniania nie trzeba przechowywać ani chronić kluczy dostępu ani sygnatur dostępu współdzielonego (SAS) w kodzie lub konfiguracji aplikacji, zarówno dla samej tożsamości, jak i zasobów potrzebnych do uzyskania dostępu.

Aby uwierzytelnić klienta publikowania zdarzeń przy użyciu tożsamości zarządzanych, najpierw zdecyduj, czy hostuje usługę platformy Azure dla aplikacji klienckiej, a następnie włącz tożsamości zarządzane przypisane przez system lub użytkownika w tym wystąpieniu usługi platformy Azure. Można na przykład włączyć tożsamości zarządzane na maszynie wirtualnej, Azure App Service lub Azure Functions.

Po skonfigurowaniu tożsamości zarządzanej w usłudze hostingu przypisz uprawnienie do publikowania zdarzeń do tej tożsamości.

Uwierzytelnianie przy użyciu podmiotu zabezpieczeń aplikacji klienckiej

Oprócz tożsamości zarządzanych kolejną opcją tożsamości jest utworzenie podmiotu zabezpieczeń dla aplikacji klienckiej. W tym celu należy zarejestrować aplikację w usłudze Azure AD. Rejestrowanie aplikacji to gest, za pomocą którego delegujesz kontrolę zarządzania tożsamościami i dostępem, aby Azure AD. Wykonaj kroki opisane w sekcji Rejestrowanie aplikacji i w sekcji Dodawanie wpisu tajnego klienta. Przed rozpoczęciem zapoznaj się z wymaganiami wstępnymi .

Po utworzeniu podmiotu zabezpieczeń aplikacji i wykonania powyższych kroków przypisz uprawnienie do publikowania zdarzeń do tej tożsamości.

Uwaga

Po zarejestrowaniu aplikacji w portalu obiekt aplikacji i jednostka usługi są tworzone automatycznie w dzierżawie głównej. Alternatywnie możesz użyć programu Microsot Graph do zarejestrowania aplikacji. Jeśli jednak zarejestrujesz lub utworzysz aplikację przy użyciu interfejsów API programu Graph Microsoft, utworzenie obiektu jednostki usługi jest osobnym krokiem.

Przypisywanie uprawnień do podmiotu zabezpieczeń w celu publikowania zdarzeń

Tożsamość używana do publikowania zdarzeń w usłudze Event Grid musi mieć uprawnienie Microsoft.EventGrid/events/send/action umożliwiające wysyłanie zdarzeń do usługi Event Grid. To uprawnienie jest uwzględniane we wbudowanej roli RBAC EventGrid Data Sender. Tę rolę można przypisać do podmiotu zabezpieczeń dla danego zakresu, który może być grupą zarządzania, subskrypcją platformy Azure, grupą zasobów lub określonym tematem usługi Event Grid, domeną lub przestrzenią nazw partnera. Wykonaj kroki opisane w temacie Przypisywanie ról platformy Azure , aby przypisać podmiot zabezpieczeń rolę Nadawca danych usługi EventGrid i w ten sposób przyznać aplikacji przy użyciu tego podmiotu zabezpieczeń dostępu do wysyłania zdarzeń. Alternatywnie można zdefiniować rolę niestandardową , która zawiera Microsoft.EventGrid/events/send/action uprawnienia i przypisać rolę niestandardową do podmiotu zabezpieczeń.

Dzięki uprawnieniam kontroli dostępu opartej na rolach można teraz skompilować aplikację kliencją w celu wysyłania zdarzeń do usługi Event Grid.

Uwaga

Usługa Event Grid obsługuje więcej ról RBAC na potrzeby poza wysyłaniem zdarzeń. Aby uzyskać więcej informacji, zobaczRole wbudowane usługi Event Grid.

Publikowanie zdarzeń przy użyciu zestawów SDK klienta usługi Event Grid

Użyj zestawu SDK płaszczyzny danych usługi Event Grid , aby opublikować zdarzenia w usłudze Event Grid. Zestaw SDK usługi Event Grid obsługuje wszystkie metody uwierzytelniania, w tym uwierzytelnianie Azure AD.

Wymagania wstępne

Poniżej przedstawiono wymagania wstępne dotyczące uwierzytelniania w usłudze Event Grid.

Publikowanie zdarzeń przy użyciu uwierzytelniania Azure AD

Aby wysyłać zdarzenia do tematu, domeny lub przestrzeni nazw partnera, możesz skompilować klienta w następujący sposób. Wersja interfejsu API, która po raz pierwszy zapewniła obsługę uwierzytelniania Azure AD, to 2018-01-01. Użyj tej wersji interfejsu API lub nowszej wersji w aplikacji.

Przykład:

Ten fragment kodu w języku C# tworzy klienta wydawcy usługi Event Grid przy użyciu klucza tajnego aplikacji (jednostki usługi) z kluczem tajnym klienta, aby włączyć metodę DefaultAzureCredential, należy dodać bibliotekę Azure.Identity. Jeśli używasz oficjalnego zestawu SDK, będzie on obsługiwać wersję dla Ciebie.

Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", "");
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", "");
Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", "");

EventGridPublisherClient client = new EventGridPublisherClient(new Uri("your-event-grid-topic-domain-or-partner-namespace-endpoint"), new DefaultAzureCredential());

Aby uzyskać więcej informacji, zobacz następujące artykuły:

Wyłączanie uwierzytelniania za pomocą klucza i sygnatury dostępu współdzielonego

Azure AD uwierzytelnianie zapewnia lepszą obsługę uwierzytelniania niż ta oferowana przez uwierzytelnianie za pomocą klucza dostępu lub tokenu sygnatury dostępu współdzielonego (SAS). W przypadku uwierzytelniania Azure AD tożsamość jest weryfikowana względem dostawcy tożsamości Azure AD. Jako deweloper nie musisz obsługiwać kluczy w kodzie, jeśli używasz Azure AD uwierzytelniania. Skorzystasz również ze wszystkich funkcji zabezpieczeń wbudowanych w platformę tożsamości Microsoft, taką jak dostęp warunkowy, co może pomóc w poprawie stanu zabezpieczeń aplikacji.

Po podjęciu decyzji o użyciu uwierzytelniania Azure AD można wyłączyć uwierzytelnianie na podstawie kluczy dostępu lub tokenów SAS.

Uwaga

Klucze asyss lub uwierzytelnianie tokenu SAS jest formą uwierzytelniania lokalnego. Podczas omawiania tej kategorii mechanizmów uwierzytelniania, które nie opierają się na Azure AD, usłyszysz czasami odwołanie do "lokalnego uwierzytelniania". Parametr interfejsu API używany do wyłączania uwierzytelniania lokalnego jest wywoływany odpowiednio. disableLocalAuth

Azure Portal

Podczas tworzenia nowego tematu możesz wyłączyć uwierzytelnianie lokalne na karcie Zaawansowane na stronie Tworzenie tematu .

Zrzut ekranu przedstawiający kartę Zaawansowane na stronie Tworzenie tematu, gdy można wyłączyć uwierzytelnianie lokalne.

W przypadku istniejącego tematu wykonaj następujące kroki, aby wyłączyć uwierzytelnianie lokalne:

  1. Przejdź do strony Temat usługi Event Grid dla tematu i wybierz pozycję Włączone w obszarze Uwierzytelnianie lokalne

    Zrzut ekranu przedstawiający stronę Przegląd istniejącego tematu.

  2. W oknie podręcznym Uwierzytelnianie lokalne wybierz pozycję Wyłączone, a następnie wybierz przycisk OK.

    Zrzut ekranu przedstawiający okno Uwierzytelnianie lokalne.

Interfejs wiersza polecenia platformy Azure

Następujące polecenie interfejsu wiersza polecenia pokazuje sposób tworzenia tematu niestandardowego z wyłączonym uwierzytelnianiem lokalnym. Wyłącz funkcję lokalnego uwierzytelniania jest obecnie dostępna jako wersja zapoznawcza i musisz użyć wersji 2021-06-01-previewinterfejsu API .

az resource create --subscription <subscriptionId> --resource-group <resourceGroup> --resource-type Microsoft.EventGrid/topics --api-version 2021-06-01-preview --name <topicName> --location <location> --properties "{ \"disableLocalAuth\": true}"

W przypadku dokumentacji poniżej przedstawiono wartości typu zasobu, których można użyć zgodnie z tematem, który tworzysz lub aktualizujesz.

Typ tematu Typ zasobu
Domains Microsoft. EventGrid/domeny
Przestrzeń nazw partnera Microsoft. EventGrid/partnerNamespaces
Temat niestandardowy Microsoft. EventGrid/tematy

Azure PowerShell

Jeśli używasz programu PowerShell, użyj następujących poleceń cmdlet, aby utworzyć temat niestandardowy z wyłączonym uwierzytelnianiem lokalnym.


Set-AzContext -SubscriptionId <SubscriptionId>

New-AzResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.EventGrid/topics -ApiVersion 2021-06-01-preview -ResourceName <TopicName> -Location <Location> -Properties @{disableLocalAuth=$true}

Uwaga

Zasoby