Authentifizierung und Autorisierung über Microsoft Entra ID

In diesem Artikel wird beschrieben, wie Azure Event Grid-Veröffentlichungsclients mithilfe von Microsoft Entra ID authentifiziert wird.

Überblick

Die Microsoft Identity-Plattform bietet integrierte Authentifizierung und Zugriffssteuerungsverwaltung für Ressourcen und Anwendungen, die Microsoft Entra ID als Identitätsanbieter verwenden. Verwenden Sie die Microsoft Identity-Plattform, um Authentifizierungs- und Autorisierungsunterstützung in Ihren Anwendungen bereitzustellen. Sie basiert auf offenen Standards wie OAuth 2.0 und OpenID Connect und bietet Tools und Open-Source-Bibliotheken, die viele Authentifizierungsszenarien unterstützen. Sie bietet erweiterte Features wie bedingten Zugriff, mit denen Sie Richtlinien festlegen können, die mehrstufige Authentifizierung erfordern oder z. B. Zugriff von bestimmten Standorten aus zulassen.

Ein Vorteil, der Ihre Sicherheitslage bei der Verwendung von Microsoft Entra ID verbessert, besteht darin, dass Sie keine Anmeldeinformationen, wie z. B. Authentifizierungsschlüssel, im Code oder in Repositorys speichern müssen. Stattdessen verlassen Sie sich auf den Erhalt von OAuth 2.0-Zugriffstoken von der Microsoft Identity-Plattform, die Ihre Anwendung bei der Authentifizierung mit einer geschützten Ressource verwendet. Sie können Ihre Anwendung für die Ereignisveröffentlichung bei Microsoft Entra ID registrieren und einen Dienstprinzipal abrufen, der Ihrer App zugeordnet ist, die Sie verwalten und verwenden. Stattdessen können Sie verwaltete Identitäten (systemseitig oder vom Benutzer zugewiesen) für ein noch einfacheres Identitätsverwaltungsmodell verwenden, da einige Aspekte des Identitätslebenszyklus für Sie verwaltet werden.

Mit rollenbasierter Zugriffssteuerung (RBAC) können Sie Autorisierung so konfigurieren, dass bestimmte Sicherheitsprinzipale (Identitäten für Benutzer, Gruppen oder Apps) über bestimmte Berechtigungen zum Ausführen von Vorgängen für Azure-Ressourcen verfügen. Auf diese Weise muss dem Sicherheitsprinzipal, der von einer Clientanwendung verwendet wird, die Ereignisse an Event Grid sendet, die RBAC-Rolle EventGrid-Datensender zugeordnet werden.

Sicherheitsprinzipale

Es gibt zwei allgemeine Kategorien von Sicherheitsprinzipalen, die bei Überlegungen zur Authentifizierung eines Event Grid-Veröffentlichungsclients Anwendung finden:

  • Verwaltete Identitäten. Eine verwaltete Identität kann vom System zugewiesen werden, die Sie für eine Azure-Ressource aktivieren. Sie wird nur dieser Ressource zugeordnet. Oder sie kann benutzerseitig zugewiesen werden, den Sie explizit erstellen und benennen. Benutzerseitig zugewiesene verwaltete Identitäten können mehreren Ressourcen zugeordnet werden.
  • Anwendungssicherheitsprinzipal. Es handelt sich um einen Typ von Sicherheitsprinzipal, der eine Anwendung darstellt, die auf Ressourcen zugreift, die durch Microsoft Entra ID geschützt sind.

Unabhängig vom verwendeten Sicherheitsprinzipal, einer verwalteten Identität oder einem Anwendungssicherheitsprinzipal verwendet Ihr Client diese Identität, um sich bei Microsoft Entra ID zu authentifizieren und ein OAuth 2.0-Zugriffstoken abzurufen, das mit Anforderungen gesendet wird, wenn Ereignisse an Event Grid gesendet werden. Dieses Token wird kryptografisch signiert. Sobald es von Event Grid empfangen wird, wird das Token überprüft. Beispielsweise wird die Zielgruppe (der beabsichtigte Empfänger des Tokens) als Event Grid (https://eventgrid.azure.net) bestätigt. Das Token enthält Informationen zur Clientidentität. Event Grid überprüft anhand dieser Identität, ob dem Client die Rolle EventGrid-Datensender zugewiesen ist. Genauer gesagt überprüft Event Grid, ob die Identität über die Microsoft.EventGrid/events/send/action-Berechtigung in einer RBAC-Rolle verfügt, die der Identität zugeordnet ist, bevor die Ereignisveröffentlichungsanforderung abgeschlossen werden kann.

Wenn Sie das Event Grid-SDK verwenden, müssen Sie sich keine Gedanken darüber machen, wie Sie den Abruf von Zugriffstoken implementieren und in jede Anforderung an Event Grid integrieren, da dies von den Event Grid-Datenebenen-SDKs für Sie erledigt wird.

Clientkonfigurationsschritte zur Verwendung von Microsoft Entra-Authentifizierung

Führen Sie die folgenden Schritte aus, um Ihren Client für die Verwendung von Microsoft Entra-Authentifizierung beim Senden von Ereignissen an ein Thema, eine Domäne oder einen Partnernamespace zu konfigurieren.

  1. Erstellen oder verwenden Sie einen Sicherheitsprinzipal, den Sie für die Authentifizierung verwenden möchten. Sie können eine verwaltete Identität oder einen Anwendungssicherheitsprinzipal verwenden.
  2. Erteilen Sie einem Sicherheitsprinzipal die Berechtigung zum Veröffentlichen von Ereignissen, indem Sie dem Sicherheitsprinzipal die Rolle EventGrid-Datensender zuweisen.
  3. Verwenden Sie das Event Grid-SDK, um Ereignisse in einer Event Grid-Instanz zu veröffentlichen.

Authentifizieren mit einer verwalteten Identität

Verwaltete Identitäten sind Identitäten, die Azure-Ressourcen zugeordnet sind. Verwaltete Identitäten stellen eine Identität bereit, die Anwendungen verwenden, wenn sie Azure-Ressourcen nutzen, die Microsoft Entra-Authentifizierung unterstützen. Anwendungen können die verwaltete Identität der Hostingressource (z. B. eines virtuellen Computers oder eines Azure-App-Diensts) verwenden, um Microsoft Entra-Token abzurufen, die bei der Veröffentlichung von Ereignissen in Event Grid mit der Anforderung übermittelt werden. Wenn die App eine Verbindung herstellt, bindet Event Grid den Kontext der verwalteten Entität an den Client. Nach der Zuordnung zu einer verwalteten Identität können vom Event Grid-Veröffentlichungsclient sämtliche autorisierten Vorgänge ausgeführt werden. Die Autorisierung wird durch Zuordnen einer verwalteten Entität zu einer RBAC-Rolle von Event Grid gewährt.

Mit der verwalteten Identität wird in Microsoft Entra ID eine automatisch verwaltete Identität für Azure-Dienste bereitgestellt. Im Gegensatz zu anderen Authentifizierungsmethoden müssen Sie weder Zugriffsschlüssel noch Shared Access Signatures (SAS) in Ihrem Anwendungscode oder ihrer Konfiguration speichern und schützen, weder für die Identität selbst noch für die Ressourcen, auf die Sie zugreifen müssen.

Um Ihren Ereignisveröffentlichungsclient mit verwalteten Identitäten zu authentifizieren, entscheiden Sie sich zuerst für den Azure-Hostingdienst für Ihre Clientanwendung und aktivieren dann system- oder benutzerseitig zugewiesene verwaltete Identitäten für diese Azure-Dienstinstanz. Beispielsweise können Sie verwaltete Identitäten für eine VM, eine Azure App Service-Instanz oder Azure Functions aktivieren.

Nachdem Sie eine verwaltete Identität in einem Hostingdienst konfiguriert haben, weisen Sie dieser Identität die Berechtigung zum Veröffentlichen von Ereignissen zu.

Authentifizieren mithilfe eines Sicherheitsprinzipals einer Clientanwendung

Neben verwalteten Identitäten besteht eine weitere Identitätsoption in der Erstellung eines Sicherheitsprinzipals für Ihre Clientanwendung. Zu diesem Zweck müssen Sie Ihre Anwendung mit Microsoft Entra ID registrieren. Die Registrierung Ihrer Anwendung ist eine Geste, mit der Sie die Identitäts- und Zugriffsverwaltungssteuerung an Microsoft Entra ID delegieren. Führen Sie die Schritte im Abschnitt Registrieren einer Anwendung und im Abschnitt Hinzufügen eines Clientgeheimnisses aus. Überprüfen Sie unbedingt die Voraussetzungen, bevor Sie beginnen.

Sobald Sie über einen Anwendungssicherheitsprinzipal verfügen und die oben genannten Schritte befolgt haben, weisen Sie die Berechtigung zum Veröffentlichen von Ereignissen für diese Identität zu.

Hinweis

Wenn Sie eine Anwendung im Portal registrieren, werden automatisch ein Anwendungsobjekt und ein Dienstprinzipal in Ihrem Basismandanten erstellt. Alternativ können Sie Microsot-Graph verwenden, um Ihre Anwendung zu registrieren. Wenn Sie eine Anwendung mit den Microsoft Graph-APIs registrieren oder erstellen, wird das Dienstprinzipalobjekt jedoch in einem separaten Schritt erstellt.

Zuweisen der Berechtigung zu einem Sicherheitsprinzipal zum Veröffentlichen von Ereignissen

Die Identität, die zum Veröffentlichen von Ereignissen in Event Grid verwendet wird, muss über die Berechtigung Microsoft.EventGrid/events/send/action verfügen, die es ihr ermöglicht, Ereignisse an Event Grid zu senden. Diese Berechtigung ist in der integrierten RBAC-Rolle Event Grid-Datensender enthalten. Diese Rolle kann einem Sicherheitsprinzipal für einen bestimmten Bereich zugewiesen werden. Dies kann eine Verwaltungsgruppe, ein Azure-Abonnement, eine Ressourcengruppe oder ein bestimmtes Event Grid-Thema, eine Domäne oder ein Partnernamespace sein. Führen Sie die Schritte unter Zuweisen von Azure-Rollen aus, um einem Sicherheitsprinzipal die Rolle EventGrid-Datensender zuzuweisen und auf diese Weise einer Anwendung mithilfe dieses Sicherheitsprinzipals Zugriff zum Senden von Ereignissen zu gewähren. Alternativ können Sie eine benutzerdefinierte Rolle definieren, die die Berechtigung Microsoft.EventGrid/events/send/action enthält, und diese benutzerdefinierte Rolle Ihrem Sicherheitsprinzipal zuweisen.

Da nun die RBAC-Privilegien geregelt sind, können Sie Ihre Clientanwendung erstellen, um Ereignisse an Event Grid zu senden.

Hinweis

Event Grid unterstützt weitere RBAC-Rollen für Zwecke, die über das Senden von Ereignissen hinausgehen. Weitere Informationen finden Sie unter Integrierte Event Grid-Rollen.

Veröffentlichen von Ereignissen mit Client-SDKs von Event Grid

Verwenden Sie das Datenebenen-SDK von Event Grid, um Ereignisse in Event Grid zu veröffentlichen. Event Grid-SDKs unterstützen alle Authentifizierungsmethoden, einschließlich Microsoft Entra-Authentifizierung.

Hier sehen Sie den Beispielcode, der Ereignisse mithilfe des .NET SDK in Event Grid veröffentlicht. Sie können den Themenendpunkt auf der Seite Übersicht für Ihr Event Grid-Thema im Azure-Portal abrufen. Sie hat das 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);

Voraussetzungen

Im Folgenden finden Sie die Voraussetzungen für die Authentifizierung bei Event Grid.

Veröffentlichen von Ereignissen mithilfe der Microsoft Entra-Authentifizierung

Um Ereignisse an ein Thema, eine Domäne oder einen Partnernamespace zu senden, können Sie den Client auf folgende Weise erstellen. Die API-Version, die zuerst Unterstützung für Microsoft Entra-Authentifizierung bereitgestellt hat, ist 2018-01-01. Verwenden Sie diese API-Version oder eine neuere Version in Ihrer Anwendung.

Beispiel:

Dieser C#-Codeschnipsel erstellt einen Event Grid-Herausgeberclient unter Verwendung einer Anwendung (Dienstprinzipal) mit einem geheimen Clientschlüssel. Um die DefaultAzureCredential-Methode zu aktivieren, müssen Sie die Azure.Identity-Bibliothek hinzufügen. Wenn Sie das offizielle SDK verwenden, verarbeitet das SDK die Version für Sie.

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());

Weitere Informationen finden Sie in den folgenden Artikeln:

Deaktivieren von Zugriffsschlüssel- und SAS-Authentifizierung (Shared Access Signature)

Microsoft Entra-Authentifizierung bietet eine bessere Authentifizierungsunterstützung als Authentifizierung mit Zugriffsschlüsseln oder SAS-Token (Shared Access Signature). Bei Microsoft Entra-Authentifizierung wird die Identität anhand des Microsoft Entra-Identitätsanbieters überprüft. Als Entwickler müssen Sie keine Schlüssel in Ihrem Code verwalten, wenn Sie Microsoft Entra-Authentifizierung verwenden. Sie profitieren auch von allen Sicherheitsfeatures, die in die Microsoft Identity-Plattform integriert sind, z. B. von bedingtem Zugriff. Diese Features können Ihnen helfen, die Sicherheit Ihrer Anwendung zu verbessern.

Sobald Sie sich für die Verwendung von Microsoft Entra-Authentifizierung entschieden haben, können Sie Authentifizierung auf Grundlage von Zugriffsschlüsseln oder SAS-Tokens deaktivieren.

Hinweis

Authentifizierung mit Zugriffsschlüsseln oder SAS-Token ist eine Form der lokalen Authentifizierung. Wenn es um diese Kategorie von Authentifizierungsmechanismen geht, die sich nicht auf Microsoft Entra ID stützen, wird manchmal von „lokaler Authentifizierung“ gesprochen. Der API-Parameter, der zum Deaktivieren der lokalen Authentifizierung verwendet wird, wird entsprechend disableLocalAuth genannt.

Azure-Portal

Wenn Sie ein neues Thema erstellen, können Sie lokale Authentifizierung auf der Registerkarte Erweitert der Seite Thema erstellen deaktivieren.

Screenshot: Registerkarte „Erweitert“ der Seite „Thema erstellen“, auf der Sie lokale Authentifizierung deaktivieren können.

Führen Sie für ein vorhandenes Thema die folgenden Schritte aus, um lokale Authentifizierung zu deaktivieren:

  1. Navigieren Sie zur Seite Event Grid-Thema für das Thema, und wählen Sie unter Lokale Authentifizierung die Option Aktiviert aus.

    Screenshot: Übersichtsseite eines vorhandenen Themas.

  2. Wählen Sie im Popupfenster Lokale Authentifizierung die Option Deaktiviert und dann OK aus.

    Screenshot: Fenster „Lokale Authentifizierung“.

Die Azure CLI

Der folgende CLI-Befehl zeigt, wie Sie ein benutzerdefiniertes Thema mit deaktivierter lokaler Authentifizierung erstellen. Das Feature zum Deaktivieren lokaler Authentifizierung ist derzeit als Vorschau verfügbar, und Sie müssen API-Version 2021-06-01-preview verwenden.

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}"

Als Referenz werden die folgenden Ressourcentypwerte angegeben, die Sie gemäß dem Thema verwenden können, das Sie erstellen oder aktualisieren.

Thementyp Ressourcentyp
Domänen Microsoft.EventGrid/domains
Partnernamespace Microsoft.EventGrid/partnerNamespaces
Benutzerdefiniertes Thema Microsoft.EventGrid/topics

Azure PowerShell

Wenn Sie PowerShell verwenden, verwenden Sie die folgenden Cmdlets, um ein benutzerdefiniertes Thema mit deaktivierter lokaler Authentifizierung zu erstellen.


Set-AzContext -SubscriptionId <SubscriptionId>

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

Hinweis

Ressourcen