Uwierzytelnianie i autoryzacja za pomocą Azure Active Directory

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

Omówienie

Platforma Microsoft Identity zapewnia zintegrowane zarządzanie uwierzytelnianiem i kontrolą dostępu dla zasobów i aplikacji, które używają Azure Active Directory (Azure AD) jako dostawcy tożsamości. Użyj platformy tożsamości firmy Microsoft, aby zapewnić obsługę uwierzytelniania i autoryzacji w aplikacjach. Jest ona oparta na otwartych standardach, takich jak OAuth 2.0 i OpenID Połączenie i oferuje narzędzia i biblioteki open source, które obsługują wiele scenariuszy uwierzytelniania. Udostępnia 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 korzystania z usługi 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ć w usłudze Azure AD i uzyskać jednostkę usługi skojarzona z aplikacją, którą zarządzasz i której używasz. Zamiast tego możesz użyć tożsamości zarządzanych, przypisanych przez system lub przypisanych przez użytkownika, aby uzyskać jeszcze prostszy model zarządzania tożsamościami, ponieważ niektóre aspekty cyklu życia tożsamości są zarządzane.

Kontrola dostępu oparta na rolach (RBAC) umożliwia skonfigurowanie autoryzacji w taki sposób, że niektóre podmioty zabezpieczeń (tożsamości dla użytkowników, grup lub aplikacji) mają określone uprawnienia do wykonywania operacji na zasobach platformy Azure. W ten sposób podmiot zabezpieczeń używany przez aplikację kliencką, która wysyła zdarzenia do usługi Event Grid, musi mieć skojarzona z nią rolę 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óra jest włączona w zasobie platformy Azure i jest skojarzona tylko z tym zasobem lub przypisanym użytkownikiem, który jawnie utworzysz i nadasz 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 usługę 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 usługą Azure AD i uzyskania tokenu dostępu OAuth 2.0 wysyłanego z żądaniami podczas wysyłania zdarzeń do usługi Event Grid. 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 jako usługa Event Grid (https://eventgrid.azure.net), między innymi. 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 robią to za Ciebie.

Kroki konfiguracji klienta umożliwiające korzystanie z uwierzytelniania w usłudze Azure AD

Wykonaj następujące kroki, aby skonfigurować klienta do korzystania z uwierzytelniania usługi 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ń uprawnienie do publikowania zdarzeń , przypisując rolę Nadawca danych 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 obsługujących uwierzytelnianie usługi 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ć tokeny usługi Azure AD, 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 przyznawana przez skojarzenie jednostki zarządzanej z rolą RBAC usługi Event Grid.

Tożsamość zarządzana zapewnia usługom platformy Azure automatyczną tożsamość zarządzaną w usłudze Azure AD. W przeciwieństwie do innych metod uwierzytelniania nie trzeba przechowywać i 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 się na hostowanie usługi platformy Azure dla aplikacji klienckiej, a następnie włącz przypisane przez system lub przypisane przez użytkownika tożsamości zarządzane 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ę tożsamości i zarządzania dostępem do usługi 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

Podczas rejestrowania aplikacji w portalu obiekt aplikacji i jednostka usługi są tworzone automatycznie w dzierżawie głównej. Alternatywnie możesz użyć Graph Microsot do zarejestrowania aplikacji. Jeśli jednak zarejestrujesz lub utworzysz aplikację przy użyciu interfejsów API Graph firmy 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ędnione 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 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ą zawierającą uprawnienia i przypisać do podmiotu Microsoft.EventGrid/events/send/action zabezpieczeń rolę niestandardową.

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

Uwaga

Usługa Event Grid obsługuje więcej ról RBAC do celów poza wysyłaniem zdarzeń. Aby uzyskać więcej informacji, zobacz Wbudowane role usługi Grid WYvent.

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 usługi 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 usługi 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 usługi 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) w celu włączenia metody 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

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

Po podjęciu decyzji o użyciu uwierzytelniania usługi Azure AD możesz 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 usłudze 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 .

Screenshot showing the Advanced tab of Create Topic page when you can disable local authentication.

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

    Screenshot showing the Overview page of an existing topic.

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

    Screenshot showing the Local Authentication window.

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/domains
Przestrzeń nazw partnera Microsoft.EventGrid/partnerNamespaces
Temat niestandardowy Microsoft.EventGrid/topics

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