Uwierzytelnianie i autoryzacja przy użyciu identyfikatora Entra firmy Microsoft
W tym artykule opisano sposób uwierzytelniania klientów publikowania usługi Azure Event Grid przy użyciu identyfikatora Entra firmy Microsoft.
Omówienie
Platforma Microsoft Identity zapewnia zintegrowane zarządzanie uwierzytelnianiem i kontrolą dostępu dla zasobów i aplikacji korzystających z identyfikatora Entra firmy Microsoft jako dostawcy tożsamości. Użyj Platforma tożsamości Microsoft, 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 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 identyfikatora Entra firmy Microsoft, jest to, że nie musisz przechowywać poświadczeń, takich jak klucze uwierzytelniania, w kodzie lub repozytoriach. Zamiast tego polegasz na pozyskiwaniu tokenów dostępu OAuth 2.0 z Platforma tożsamości Microsoft, które aplikacja przedstawia podczas uwierzytelniania w chronionym zasobie. Aplikację do publikowania zdarzeń można zarejestrować za pomocą identyfikatora Entra firmy Microsoft i uzyskać jednostkę usługi skojarzona z aplikacją, którą zarządzasz i używasz. Zamiast tego można użyć tożsamości zarządzanych, przypisanych przez system lub przypisanych przez użytkownika, dla jeszcze prostszego modelu 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 określone 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ą 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óra jest włączona w zasobie platformy Azure i jest skojarzona tylko z tym zasobem lub przypisanym przez użytkownika, który jawnie utworzysz i nadajesz 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 identyfikator Entra firmy Microsoft.
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 identyfikatorem Entra firmy Microsoft i uzyskać token dostępu OAuth 2.0, który jest wysyłany 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 mówiąc, 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ółowe informacje na temat sposobu implementowania uzyskiwania tokenów dostępu i dołączania go z każdym żądaniem do usługi Event Grid, ponieważ zestawy SDK płaszczyzny danych usługi Event Grid robią to za Ciebie.
Kroki konfiguracji klienta do korzystania z uwierzytelniania firmy Microsoft Entra
Wykonaj następujące kroki, aby skonfigurować klienta do korzystania z uwierzytelniania firmy Microsoft Entra podczas wysyłania zdarzeń do obszaru nazw tematów, domeny lub partnera.
- 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.
- Przyznaj jednostce zabezpieczeń uprawnienia do publikowania zdarzeń , przypisując rolę Nadawca danych usługi EventGrid do podmiotu zabezpieczeń.
- 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 firmy Microsoft Entra. Aplikacje mogą używać tożsamości zarządzanej zasobu hostingu, takiego jak maszyna wirtualna lub usługa aplikacja systemu Azure, aby uzyskać tokeny entra firmy Microsoft, 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 usłudze Microsoft Entra ID. Kontrastując z innymi metodami uwierzytelniania, nie musisz 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, do których chcesz uzyskać dostęp.
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 tożsamości zarządzane przypisane przez system lub przypisane przez 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, usługę aplikacja systemu Azure lub usługę 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ę przy użyciu identyfikatora Entra firmy Microsoft. Rejestrowanie aplikacji to gest, za pomocą którego delegujesz kontrolę zarządzania tożsamościami i dostępem do identyfikatora Entra firmy Microsoft. 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ć programu Microsoft Graph do zarejestrowania aplikacji. Jeśli jednak zarejestrujesz lub utworzysz aplikację przy użyciu interfejsów API programu Microsoft Graph, 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 zawarte w wbudowanej roli RBAC Event Grid 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 artykule Przypisywanie ról platformy Azure, aby przypisać jednostkę 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żesz zdefiniować rolę niestandardową, która zawiera Microsoft.EventGrid/events/send/action
uprawnienie i przypisać rolę niestandardową do podmiotu zabezpieczeń.
Dzięki uprawnieniam kontroli dostępu opartej na rolach możesz 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, zobacz Role 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 firmy Microsoft Entra.
Oto przykładowy kod, który publikuje zdarzenia w usłudze Event Grid przy użyciu zestawu SDK platformy .NET. Punkt końcowy tematu można uzyskać na stronie Przegląd tematu usługi Event Grid w witrynie Azure Portal. Ma on format: https://<TOPIC-NAME>.<REGION>-1.eventgrid.azure.net/api/events
.
ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredential();
EventGridPublisherClient client = new EventGridPublisherClient( new Uri("<TOPIC ENDPOINT>"), managedIdentityCredential);
EventGridEvent egEvent = new EventGridEvent(
"ExampleEventSubject",
"Example.EventType",
"1.0",
"This is the event data");
// Send the event
await client.SendEventAsync(egEvent);
Wymagania wstępne
Poniżej przedstawiono wymagania wstępne dotyczące uwierzytelniania w usłudze Event Grid.
- Zainstaluj zestaw SDK w aplikacji.
- Zainstaluj bibliotekę klienta tożsamości platformy Azure. Zestaw SDK usługi Event Grid zależy od biblioteki klienta tożsamości platformy Azure do uwierzytelniania.
- Temat, domena lub przestrzeń nazw partnera utworzona, do której aplikacja wysyła zdarzenia.
Publikowanie zdarzeń przy użyciu uwierzytelniania entra firmy Microsoft
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 firmy Microsoft Entra, to 2018-01-01
. Użyj tej wersji interfejsu API lub nowszej wersji w aplikacji.
Przykład:
Ten fragment kodu języka C# tworzy klienta wydawcy usługi Event Grid przy użyciu klucza tajnego aplikacji (jednostki usługi) w celu włączenia metody DefaultAzureCredential, którą należy dodać do biblioteki Azure.Identity. Jeśli używasz oficjalnego zestawu SDK, zestaw SDK obsługuje wersję.
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:
- Biblioteka klienta usługi Azure Event Grid dla języka Java
- Biblioteka klienta usługi Azure Event Grid dla platformy .NET
- Biblioteka klienta usługi Azure Event Grid dla języka JavaScript
- Biblioteka klienta usługi Azure Event Grid dla języka Python
Wyłączanie uwierzytelniania klucza i sygnatury dostępu współdzielonego
Uwierzytelnianie firmy Microsoft Entra zapewnia lepszą obsługę uwierzytelniania niż jest to oferowane przez uwierzytelnianie za pomocą klucza dostępu lub tokenu sygnatury dostępu współdzielonego (SAS). W przypadku uwierzytelniania firmy Microsoft Entra tożsamość jest weryfikowana względem dostawcy tożsamości Firmy Microsoft Entra. Jako deweloper nie musisz obsługiwać kluczy w kodzie, jeśli używasz uwierzytelniania Microsoft Entra. Skorzystasz również ze wszystkich funkcji zabezpieczeń wbudowanych w platformę tożsamości Firmy Microsoft, takich jak dostęp warunkowy, który może pomóc w ulepszaniu stanu zabezpieczeń aplikacji.
Po podjęciu decyzji o użyciu uwierzytelniania firmy Microsoft Entra możesz wyłączyć uwierzytelnianie na podstawie kluczy dostępu lub tokenów SAS.
Uwaga
Klucze dostępu lub uwierzytelnianie tokenu SAS to forma uwierzytelniania lokalnego. Podczas omawiania tej kategorii mechanizmów uwierzytelniania, które nie korzystają z identyfikatora Entra firmy Microsoft, usłyszysz czasami odwołanie do "lokalnego uwierzytelniania". Parametr interfejsu API używany do wyłączania uwierzytelniania lokalnego jest wywoływany odpowiednio tak: disableLocalAuth
.
Azure Portal
Podczas tworzenia nowego tematu można wyłączyć uwierzytelnianie lokalne na karcie Zaawansowane na stronie Tworzenie tematu.
W przypadku istniejącego tematu wykonaj następujące kroki, aby wyłączyć uwierzytelnianie lokalne:
Przejdź do strony Temat usługi Event Grid dla tematu i wybierz pozycję Włączone w obszarze Uwierzytelnianie lokalne
W oknie podręcznym Uwierzytelnianie lokalne wybierz pozycję Wyłączone, a następnie wybierz przycisk OK.
Interfejs wiersza polecenia platformy Azure
Następujące polecenie interfejsu wiersza polecenia pokazuje sposób tworzenia tematu niestandardowego z wyłączonym uwierzytelnianiem lokalnym. Funkcja wyłącz uwierzytelnianie lokalne jest obecnie dostępna jako wersja zapoznawcza i musisz użyć wersji 2021-06-01-preview
interfejsu 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 dokumentacji poniżej przedstawiono wartości typów zasobów, których można użyć zgodnie z tematem, który tworzysz lub aktualizujesz.
Typ tematu | Typ zasobu |
---|---|
Domeny | 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
- Aby dowiedzieć się więcej o korzystaniu z klucza dostępu lub uwierzytelniania sygnatury dostępu współdzielonego, zobacz Uwierzytelnianie klientów publikowania przy użyciu kluczy lub tokenów SAS
- Ten artykuł dotyczy uwierzytelniania podczas publikowania zdarzeń w usłudze Event Grid (ruch przychodzący zdarzenia). Uwierzytelnianie usługi Event Grid podczas dostarczania zdarzeń (ruch wychodzący zdarzeń) jest tematem artykułu Uwierzytelnianie dostarczania zdarzeń do procedur obsługi zdarzeń.
Zasoby
- Zestawy SDK płaszczyzny danych
- Zestaw JAVA SDK: przewodnik migracji przykładów | usługi GitHub | z poprzedniej wersji zestawu SDK
- Zestaw SDK platformy .NET: przewodnik migracji przykładów | usługi GitHub | z poprzedniej wersji zestawu SDK
- Zestaw PYTHON SDK: przewodnik migracji przykładów | usługi GitHub | z poprzedniej wersji zestawu SDK
- Zestaw SDK języka JavaScript: przewodnik migracji przykładów | usługi GitHub | z poprzedniej wersji zestawu SDK
- Blog dotyczący zestawu SDK usługi Event Grid
- Biblioteka klienta tożsamości platformy Azure
- Dowiedz się więcej o tożsamościach zarządzanych
- Dowiedz się, jak używać tożsamości zarządzanych dla usług App Service i Azure Functions
- Dowiedz się więcej o aplikacjach i jednostkach usługi
- Dowiedz się więcej o rejestrowaniu aplikacji za pomocą platformy Microsoft Identity.
- Dowiedz się, jak działa autoryzacja (kontrola dostępu RBAC).
- Dowiedz się więcej o wbudowanych rolach RBAC usługi Event Grid, w tym o roli nadawcy danych usługi Event Grid. Lista ról usługi Event Grid.
- Dowiedz się więcej o przypisywaniu ról RBAC do tożsamości.
- Dowiedz się, jak definiować niestandardowe role RBAC.
- Dowiedz się więcej o obiektach aplikacji i jednostki usługi w usłudze Microsoft Entra ID.
- Dowiedz się więcej o tokenach dostępu platformy Microsoft Identity Platform.
- Dowiedz się więcej o przepływie kodu uwierzytelniania OAuth 2.0 i platformie microsoft Identity Platform