Authentifizieren und Autorisieren einer Anwendung mit Microsoft Entra ID für den Zugriff auf Azure Relay-Entitäten
Azure Relay unterstützt die Verwendung von Microsoft Entra ID zum Autorisieren von Anforderungen an Azure Relay-Entitäten (Hybridverbindungen, WCF Relays). Mit Microsoft Entra ID können Sie die rollenbasierte Zugriffssteuerung von Azure (Azure-RBAC) verwenden, um einem Sicherheitsprinzipal Berechtigungen zu gewähren. Bei diesem Prinzipal kann es sich um ein Benutzerkonto, eine Gruppe oder einen Anwendungsdienstprinzipal handeln. Weitere Informationen zu Rollen und Rollenzuweisungen finden Sie unter Grundlegendes zu den verschiedenen Rollen.
Hinweis
Dieses Feature ist in allen Regionen allgemein verfügbar, außer in Microsoft Azure, betrieben von 21Vianet.
Übersicht
Wenn ein Sicherheitsprinzipal (ein Benutzer, eine Gruppe, eine Anwendung) versucht, auf eine Relay-Entität zuzugreifen, muss die Anforderung autorisiert werden. Mit Microsoft Entra ID ist der Zugriff auf eine Ressource ein zweistufiger Prozess.
- Zunächst wird die Identität des Sicherheitsprinzipals authentifiziert und ein OAuth 2.0-Token zurückgegeben. Der Ressourcenname zum Anfordern eines Tokens ist
https://relay.azure.net
. Wenn eine Anwendung in einer Azure-Entität, z.B. einem virtuellen Azure-Computer, einer VM-Skalierungsgruppe oder einer Azure Functions-App, ausgeführt wird, kann der Zugriff auf die Ressourcen über eine verwaltete Identität erfolgen. - Anschließend wird das Token als Teil einer Anforderung an den Relay-Dienst übergeben, um den Zugriff auf die angegebene Ressource (Hybridverbindungen, WCF-Relays) zu autorisieren. Microsoft Entra autorisiert Rechte für den Zugriff auf geschützte Ressourcen über die rollenbasierte Zugriffssteuerung in Azure (Azure Role-Based Access Control, Azure RBAC). Azure Relay bietet eine Reihe integrierter Rollen mit allgemeinen Berechtigungen für den Zugriff auf Relay-Entitäten. Sie können auch benutzerdefinierte Rollen für den Zugriff auf die Daten definieren. Eine Liste der von Azure Relay unterstützten integrierten Rollen finden Sie unter Integrierte Azure-Rollen für Azure Relay. Native Anwendungen und Webanwendungen, die Anforderungen an Relay senden, können die Autorisierung ebenfalls mit Microsoft Entra ID durchführen.
Integrierte Azure-Rollen für Azure Relay
Bei Azure Relay ist die Verwaltung der Namespaces und aller zugehörigen Ressourcen über das Azure-Portal und die Azure-Ressourcenverwaltungs-API bereits durch das Azure RBAC-Modell geschützt. Azure stellt die folgenden integrierten Azure-Rollen zum Autorisieren des Zugriffs auf einen Relay-Namespace bereit:
Rolle | Beschreibung |
---|---|
Azure Relay-Besitzer | Mit dieser Rolle können Sie Vollzugriff auf Azure Relay-Ressourcen gewähren. |
Azure Relay-Listener | Mit dieser Rolle können Sie Lausch- und Entitätslese-zugriff auf Azure Relay-Ressourcen gewähren. |
Azure Relay-Absender | Mit dieser Rolle können Sie Sende- und Entitätslese-zugriff auf Azure Relay-Ressourcen gewähren. |
Ressourcenumfang
Bevor Sie einem Sicherheitsprinzipal eine Azure-Rolle zuweisen, legen Sie den Zugriffsbereich fest, den der Sicherheitsprinzipal haben soll. Es hat sich als am besten bewährt, stets nur den kleinstmöglichen Umfang an Zugriffsrechten zu gewähren.
In der folgenden Liste werden die Ebenen beschrieben, auf denen Sie den Zugriff auf Azure Relay-Ressourcen einschränken können, beginnend mit dem kleinstmöglichen Umfang:
- Relay-Entitäten: Die Rollenzuweisung gilt für eine bestimmte Relay-Entität, z. B. eine Hybridverbindung oder ein WCF-Relay.
- Relay-Namespace: Die Rollenzuweisung gilt für alle Relay-Entitäten unter dem Namespace.
- Ressourcengruppe: Die Rollenzuweisung gilt für alle Relay-Ressourcen unter der Ressourcengruppe.
- Abonnement: Die Rollenzuweisung gilt für alle Relay-Ressourcen in allen Ressourcengruppen im Abonnement.
Hinweis
Denken Sie daran, dass die Weitergabe von Azure-Rollenzuweisungen bis zu fünf Minuten dauern kann. Weitere Informationen dazu, wie integrierte Rollen definiert sind, finden Sie unter Grundlegendes zu Rollendefinitionen. Informationen zum Erstellen von benutzerdefinierten Azure-Rollen finden Sie unter Benutzerdefinierte Azure-Rollen.
Authentifizieren über eine App
Ein wesentlicher Vorteil der Verwendung von Microsoft Entra ID mit Azure Relay besteht darin, dass Ihre Anmeldeinformationen nicht mehr im Code gespeichert werden müssen. Stattdessen können Sie ein OAuth 2.0-Zugriffstoken von Microsoft Identity Platform anfordern. Microsoft Entra übernimmt die Authentifizierung des Sicherheitsprinzipals (Benutzer, Gruppe oder Dienstprinzipal), der die Anwendung ausführt. Wenn die Authentifizierung erfolgreich ist, gibt Microsoft Entra ID das Zugriffstoken an die Anwendung zurück, und die Anwendung kann dann das Zugriffstoken verwenden, um Anfragen an Azure Relay zu autorisieren.
In den folgenden Abschnitten wird gezeigt, wie Sie Ihre Konsolenanwendung für die Authentifizierung mit Microsoft Identity Platform 2.0 konfigurieren. Weitere Informationen finden Sie in der Übersicht über Microsoft Identity Platform (v2.0).
Eine Übersicht über den Datenfluss für OAuth 2.0-Codeberechtigungen finden Sie unter Autorisieren des Zugriffs auf Microsoft Entra-Webanwendungen mit dem Flow zum Erteilen des OAuth 2.0-Codes.
Registrieren Ihrer Anwendung mit Microsoft Entra ID Mandanten
Der erste Schritt bei der Verwendung von Microsoft Entra ID zum Autorisieren von Azure Relay-Entitäten besteht darin, Ihre Clientanwendung mit einem Microsoft Entra-Mandanten aus dem Azure-Portal zu registrieren. Wenn Sie Ihre Clientanwendung registrieren, stellen Sie Azure AD Informationen zu Ihrer Anwendung bereit. Microsoft Entra ID stellt dann eine Client-ID (auch als Anwendungs-ID bezeichnet) bereit, mit der Sie Ihre Anwendung zur Laufzeit Microsoft Entra zuordnen können.
Eine Schritt-für-Schritt-Anleitung zum Registrieren Ihrer Anwendung bei Microsoft Entra ID finden Sie unter Schnellstart: Registrieren einer Anwendung bei Microsoft Entra ID.
Wichtig
Notieren Sie sich die Werte von Verzeichnis-ID (Mandant) und Anwendungs-ID (Client). Sie benötigen diese Werte, um die Beispielanwendung auszuführen.
Erstellen eines Clientgeheimnisses
Die Anwendung benötigt zum Beweis ihrer Identität einen geheimen Clientschlüssel, wenn sie ein Token anfordert. Im selben oben verlinkten Artikel finden Sie im Abschnitt Hinzufügen eines geheimen Clientschlüssels Informationen zum Erstellen eines geheimen Clientschlüssels.
Wichtig
Notieren Sie sich den Geheimen Clientschlüssel. Sie benötigen ihn, um die Beispielanwendung auszuführen.
Zuweisen von Azure-Rollen über das Azure-Portal
Weisen Sie eine der Azure Relay-Rollen dem Dienstprinzipal der Anwendung im gewünschten Bereich (Relayentität, Namespace, Ressourcengruppe, Abonnement) zu. Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.
Ausführen des Beispiels
Laden Sie das Konsolenanwendungsbeispiel von GitHub herunter.
Führen Sie die Anwendung gemäß den Anweisungen im README-Artikel lokal auf Ihrem Computer aus.
Hinweis
Führen Sie dieselben Schritte aus, um die Beispielkonsolenanwendung für WCF Relay auszuführen.
Hervorgehobener Code aus dem Beispiel
Hier sehen Sie den Code aus dem Beispiel, der zeigt, wie Sie die Microsoft Entra-Authentifizierung verwenden, um eine Verbindung mit dem Azure Relay-Dienst herzustellen.
Erstellen Sie ein TokenProvider-Objekt mithilfe der
TokenProvider.CreateAzureActiveDirectoryTokenProvider
-Methode.Wenn Sie noch keine App-Registrierung erstellt haben, finden Sie Informationen zum Erstellen im Abschnitt Registrieren Ihrer Anwendung bei Microsoft Entra ID, und erstellen Sie dann einen geheimen Clientschlüssel, wie im Abschnitt Erstellen eines geheimen Clientschlüssels beschrieben.
Wenn Sie eine vorhandene App-Registrierung verwenden möchten, befolgen Sie diese Anweisungen, um die Anwendungs-ID (Client) und die Verzeichnis-ID (Mandant) abzurufen.
- Melden Sie sich beim Azure-Portal an.
- Suchen Sie über die Suchleiste oben nach Microsoft Entra ID, und wählen Sie den Eintrag aus.
- Wählen Sie auf der Seite Microsoft Entra ID im linken Menü im Abschnitt Verwalten die Option App-Registrierungen aus.
- Wählen Sie Ihre App-Registrierung aus.
- Auf der Seite für Ihre App-Registrierung werden die Werte für Anwendungs-ID (Client) und Verzeichnis-ID (Mandant) angezeigt.
Gehen Sie wie folgt vor, um den geheimen Clientschlüssel abzurufen:
- Wählen Sie auf der Seite Ihrer App-Registrierung im linken Menü Zertifikate und Geheimnisse aus.
- Verwenden Sie die Schaltfläche „Kopieren“ in der Spalte Wert für das Geheimnis im Abschnitt Geheime Clientschlüssel.
static TokenProvider GetAadTokenProvider(string clientId, string tenantId, string clientSecret) { return TokenProvider.CreateAzureActiveDirectoryTokenProvider( async (audience, authority, state) => { IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId) .WithAuthority(authority) .WithClientSecret(clientSecret) .Build(); var authResult = await app.AcquireTokenForClient(new [] { $"{audience}/.default" }).ExecuteAsync(); return authResult.AccessToken; }, $"https://login.microsoftonline.com/{tenantId}"); }
Erstellen Sie ein HybridConnectionListener- oder HybridConnectionClient-Objekt, indem Sie den Hybridverbindungs-URI und den Tokenanbieter übergeben, den Sie im vorherigen Schritt erstellt haben.
Listener:
var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);
Absender:
var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);
Beispiele
- Hybridverbindungen: .NET, Java, JavaScript
- WCF Relay: .NET
Nächste Schritte
- Weitere Informationen zur Azure RBAC finden Sie im Artikel Was ist die rollenbasierte Zugriffssteuerung in Azure (Azure Role-Based Access Control, Azure RBAC)?.
- Informationen zum Zuweisen und Verwalten von Azure-Rollenzuweisungen mit Azure PowerShell, der Azure-Befehlszeilenschnittstelle oder der REST-API finden Sie in diesen Artikeln:
- Hinzufügen oder Entfernen von Azure-Rollenzuweisungen mithilfe von Azure PowerShell
- Hinzufügen oder Entfernen von Azure-Rollenzuweisungen mithilfe der Azure-Befehlszeilenschnittstelle
- Hinzufügen oder Entfernen von Rollenzuweisungen mithilfe von Azure RBAC und der REST-API
- Hinzufügen von Azure-Rollenzuweisungen mithilfe von Azure Resource Manager-Vorlagen
Weitere Informationen zu Azure Relay finden Sie in den folgenden Artikeln.