Authentifizieren und Autorisieren einer Anwendung mit Microsoft Entra-ID für den Zugriff auf Azure Relay-Entitäten
Azure Relay unterstützt die Verwendung der Microsoft Entra-ID zum Autorisieren von Anforderungen an Azure Relay-Entitäten (Hybrid-Verbinden ions, 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 mit Ausnahme von Microsoft Azure, betrieben von 21Vianet, allgemein verfügbar.
Überblick
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 Zugriffsrechte für 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. Systemeigene Anwendungen und Webanwendungen, die Anforderungen an Relay stellen, können auch mit Microsoft Entra ID autorisiert werden.
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 wichtiger Vorteil der Verwendung der Microsoft Entra-ID mit Azure Relay besteht darin, dass Ihre Anmeldeinformationen nicht mehr in Ihrem 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 die Microsoft Entra-ID das Zugriffstoken an die Anwendung zurück, und die Anwendung kann dann das Zugriffstoken verwenden, um Anforderungen 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 die 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 der 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.
Schrittweise Anleitungen zum Registrieren Ihrer Anwendung mit Microsoft Entra-ID finden Sie in der Schnellstartanleitung: Registrieren einer Anwendung mit 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 Artikel weiter oben verlinkt, lesen Sie den Abschnitt "Hinzufügen eines geheimen Clientschlüssels ", um einen geheimen Clientschlüssel zu erstellen.
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 die gleichen Schritte aus, um die Beispielkonsolenanwendung für WCF Relay auszuführen.
Hervorgehobener Code aus dem Beispiel
Im Folgenden finden 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, lesen Sie den Abschnitt "Registrieren Ihrer Anwendung mit Microsoft Entra ID", um sie zu erstellen, und erstellen Sie dann einen geheimen Clientschlüssel als Erwähnung im Abschnitt "Erstellen eines geheimen Clientschlüssels".
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 mithilfe der Suchleiste oben nach microsoft Entra-ID, und wählen Sie sie aus.
- Wählen Sie auf der Seite "Microsoft Entra-ID" im Abschnitt "Verwalten" im linken Menü App-Registrierungen aus.
- Wählen Sie Ihre App-Registrierung aus.
- Auf der Seite für Ihre App-Registrierung werden die Werte für die Anwendungs-ID (Client-ID ) und die 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 Themen: