Authentifizieren einer verwalteten Identität mit Microsoft Entra ID für den Zugriff auf Azure Relay-Ressourcen
Verwaltete Identitäten für Azure-Ressourcen ist ein Azure-übergreifendes Feature, mit dem Sie eine sichere Identität für die Bereitstellung erstellen können, in der Ihr Anwendungscode ausgeführt wird. Sie können dieser Identität dann Zugriffssteuerungsrollen zuordnen, um benutzerdefinierte Berechtigungen für den Zugriff auf bestimmte Azure-Ressourcen zu gewähren, die Ihre Anwendung benötigt.
Die Azure-Plattform verwaltet diese Laufzeitidentität mit verwalteten Identitäten. Sie müssen keine Zugriffsschlüssel in Ihrem Anwendungscode speichern und schützen – weder für die Identität selbst noch für die Ressourcen, auf die zugegriffen werden muss. Eine Relay-Client-App, die innerhalb einer Azure App Service-Anwendung oder in einem virtuellen Computer mit aktivierter Unterstützung für verwaltete Identitäten für Azure-Ressourcen ausgeführt wird, muss keine SAS-Regeln und -Schlüssel oder andere Zugriffstoken verarbeiten. Die Client-App benötigt nur die Endpunktadresse des Relay-Namespace. Wenn die App eine Verbindung herstellt, bindet Relay den Kontext der verwalteten Identität an den Client. Der entsprechende Vorgang wird weiter unten in diesem Artikel in einem Beispiel gezeigt. Nach der Zuordnung zu einer verwalteten Identität kann ein Relay-Client alle autorisierten Vorgänge ausführen. Die Autorisierung wird durch Zuordnung von Relay-Rollen zu einer verwalteten Identität gewährt.
Hinweis
Dieses Feature ist in allen Regionen allgemein verfügbar, einschließlich 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.
Aktivieren einer verwalteten Identität
Aktivieren Sie zunächst die verwaltete Identität für die Azure-Ressource, die auf Azure Relay-Entitäten (Hybridverbindungen oder WCF Relays) zugreifen muss. Wenn Ihre Relay-Clientanwendung beispielsweise auf einem virtuellen Azure-Computer ausgeführt wird, aktivieren Sie die verwaltete Identität für den virtuellen Computer gemäß den Anweisungen im Artikel Konfigurieren der verwalteten Identität für einen virtuellen Azure-Computer. Nachdem Sie diese Einstellung aktiviert haben, wird eine neue verwaltete Dienstidentität in Microsoft Entra ID erstellt.
Eine Liste der Dienste, die verwaltete Identitäten unterstützen, finden Sie unter Dienste, die verwaltete Identitäten für Azure-Ressourcen unterstützen.
Zuweisen einer Azure Relay-Rolle zur verwalteten Identität
Nachdem Sie die verwaltete Identität aktiviert haben, weisen Sie der Identität im entsprechenden Bereich eine der Azure Relay-Rollen (Azure Relay-Besitzer, Azure Relay-Listener oder Azure Relay-Absender) zu. Wenn die Azure-Rolle einer verwalteten Identität zugewiesen wurde, wird der verwalteten Identität der Zugriff auf Relay-Entitäten im entsprechenden Bereich erteilt.
Im folgenden Abschnitt wird eine einfache Anwendung verwendet, die unter einer verwalteten Identität auf einer Azure-VM-Instanz ausgeführt wird und auf Relay-Ressourcen zugreift.
Beispiel-App auf einem virtuellen Computer, der auf Relay-Entitäten zugreift
Laden Sie die Beispielkonsolenanwendung für Hybridverbindungen von GitHub auf Ihren Compute herunter.
Erstellen Sie eine Azure-VM. Verwenden Sie für dieses Beispiel ein Windows 10-Image.
Aktivieren Sie eine systemseitig oder eine benutzerseitig zugewiesenen verwaltete Identität für die Azure-VM. Anweisungen hierzu finden Sie unter Aktivieren einer Identität für eine VM.
Weisen Sie der verwalteten Dienstidentität im gewünschten Bereich (Relay-Entität, Relay-Namespace, Ressourcengruppe, Abonnement) eine der Relay-Rollen zu. Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.
Erstellen Sie die Konsolen-App lokal auf Ihrem lokalen Computer gemäß den Anweisungen in dem README-Dokument.
Kopieren Sie die ausführbare Datei aus dem Ordner „<Ihr lokaler Pfad>\RoleBasedAccessControl\bin\Debug“ auf den VM. Sie können RDP verwenden, um eine Verbindung mit der Azure-VM herzustellen. Weitere Informationen hierzu finden Sie unter Gewusst wie: Herstellen einer Verbindung mit einem virtuellen Azure-Computer unter Windows und Anmelden auf diesem Computer.
Führen Sie „RoleBasedAccessControl.exe“ auf dem virtuellen Azure-Computer aus, wie im README-Dokument beschrieben.
Hinweis
Führen Sie dieselben Schritte aus, um die Konsolenanwendung für WCF Relay-Instanzen 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.CreateManagedIdentityTokenProvider
-Methode.- Wenn Sie eine systemseitig zugewiesene verwaltete Identität verwenden:
TokenProvider.CreateManagedIdentityTokenProvider();
- Wenn Sie eine benutzerseitig zugewiesene verwaltete Identität verwenden, finden Sie die Client-ID für die benutzerseitig zugewiesene verwaltete Identität auf der Seite Verwaltete Identität im Azure-Portal. Anleitungen finden Sie unter Auflisten benutzerseitig zugewiesener verwalteter Identitäten.
var managedCredential = new ManagedIdentityCredential(clientId); tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedCredential);
- Wenn Sie eine systemseitig zugewiesene verwaltete Identität verwenden:
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 zu Azure Relay finden Sie in den folgenden Artikeln.