Authentifizieren einer verwalteten Identität mit Microsoft Entra ID für den Zugriff auf Azure Service Bus-Ressourcen

Verwaltete Identitäten für Azure-Ressourcen stellen für Azure-Dienste eine automatisch verwaltete Identität in Microsoft Entra ID bereit. Sie können diese Identität verwenden, um sich bei jedem Dienst (z. B. Azure Service Bus) zu authentifizieren, der die Microsoft Entra-Authentifizierung unterstützt, ohne Anmeldeinformationen in Ihrem Code zu haben. Wenn Sie mit verwalteten Identitäten nicht vertraut sind, lesen Sie zunächst Verwaltete Identitäten für Azure-Ressourcen, bevor Sie diesen Artikel lesen.

Im Folgenden finden Sie die allgemeinen Schritte zur Verwendung einer verwalteten Identität für den Zugriff auf eine Service Bus-Entität:

  1. Aktivieren Sie die verwaltete Identität für Ihre Client-App oder -Umgebung. Aktivieren Sie beispielsweise die verwaltete Identität für Ihre Azure App Service-App, Azure Functions-App oder einen virtuellen Computer, auf dem Ihre App ausgeführt wird. Folgende Artikel helfen Ihnen bei diesem Schritt:

  2. Weisen Sie die Rolle Azure Service Bus Datenbesitzer, Azure Service Bus-Datenabsender oder Azure Service Bus-Datenempfänger der verwalteten Identität im entsprechenden Bereich zu (Azure-Abonnement, Ressourcengruppe, Service Bus-Namespace oder Service Bus-Warteschlange oder -Thema). Anweisungen zum Zuweisen einer Rolle zu einer verwalteten Identität finden Sie unter Zuweisen von Azure-Rollen mithilfe des Azure-Portals.

  3. Verwenden Sie in Ihrer Anwendung die verwaltete Identität und den Endpunkt für den Service Bus-Namespace, um eine Verbindung mit dem Namespace herzustellen. In .NET verwenden Sie beispielsweise den Konstruktor ServiceBusClient, der unter Verwendung der Parameter TokenCredential und fullyQualifiedNamespace (eine Zeichenfolge, z. B.: cotosons.servicebus.windows.net) eine Verbindung mit Service Bus mithilfe der verwalteten Identität herstellt. Sie übergeben DefaultAzureCredential, das sich von TokenCredential ableitet und die verwalteten Identität verwendet.

    Wichtig

    Sie können die lokale oder SAS-Schlüsselauthentifizierung für einen Service Bus-Namespace deaktivieren und nur die Microsoft Entra-Authentifizierung zulassen. Eine schrittweise Anleitung finden Sie unter Deaktivieren der lokalen Authentifizierung.

Integrierte Azure-Rollen für Azure Service Bus

Microsoft Entra autorisiert den Zugriff auf gesicherte Ressourcen über Azure Rollenbasierte Zugriffssteuerung (Azure RBAC). Azure Service Bus bietet eine Reihe in Azure integrierter Rollen mit allgemeinen Berechtigungen für den Zugriff auf Service Bus-Entitäten. Sie können auch benutzerdefinierte Rollen für den Zugriff auf die Daten definieren.

Azure stellt die folgenden in Azure integrierten Rollen zum Autorisieren des Zugriffs auf einen Service Bus-Namespace bereit:

  • Azure Service Bus-Datenbesitzer: Verwenden Sie diese Rolle, um vollständigen Zugriff auf einen Service Bus-Namespace und seine Entitäten (Warteschlangen, Themen, Abonnements und Filter) zu ermöglichen.
  • Azure Service Bus Datensender: Verwenden Sie diese Rolle, um das Senden von Nachrichten an Service Bus-Warteschlangen und -Themen zu ermöglichen.
  • Azure Service Bus Datenempfänger: Verwenden Sie diese Rolle, um das Empfangen von Nachrichten von Service Bus-Warteschlangen und -Abonnements zu ermöglichen.

Um einer verwalteten Identität im Azure-Portal eine Rolle zuzuweisen, verwenden Sie die Seite Zugriffssteuerung (IAM). Navigieren Sie zu dieser Seite, indem Sie auf der Seite Service Bus-Namespace, auf der Seite Service Bus-Warteschlange oder auf der Seite Service Bus-Thema die Option Zugriffssteuerung (IAM) auswählen. Schrittweise Anweisungen zum Zuweisen einer Rolle finden Sie unter Zuweisen von Azure-Rollen mithilfe des Azure-Portals.

Ressourcenumfang

Bevor Sie einer verwalteten Identität eine Azure-Rolle zuweisen, bestimmen Sie den Zugriffsbereich, den die verwaltete Identität 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 Service Bus-Ressourcen einschränken können, beginnend mit dem kleinstmöglichen Bereich:

  • Warteschlange, Thema oder Abonnement: Die Rollenzuweisung gilt für die jeweilige Service Bus-Entität.

  • Service Bus-Namespace: Die Rollenzuweisung umfasst die gesamte Topologie von Service Bus unter dem Namespace und für die zugeordnete Consumergruppe.

  • Ressourcengruppe: Die Rollenzuweisung gilt für alle Service Bus-Ressourcen unter der Ressourcengruppe.

  • Abonnement: Die Rollenzuweisung gilt für alle Service Bus-Ressourcen in allen Ressourcengruppen im Abonnement.

    Hinweis

    Denken Sie daran, dass die Weitergabe von Azure-Rollenzuweisungen bis zu fünf Minuten dauern kann.

Derzeit wird das Zuweisen von Benutzern, Gruppen oder verwalteten Identitäten zu Service Bus-Azure-Rollen auf Abonnementebene des Themas vom Azure-Portal nicht unterstützt. Im Folgenden finden Sie ein Beispiel für die Verwendung des Azure CLI-Befehls az-role-assignment-create für das Zuweisen einer Identität zu einer Service Bus-Azure-Rolle:

az role assignment create \
    --role $service_bus_role \
    --assignee $assignee_id \
    --scope /subscriptions/$subscription_id/resourceGroups/$resource_group/providers/Microsoft.ServiceBus/namespaces/$service_bus_namespace/topics/$service_bus_topic/subscriptions/$service_bus_subscription

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.

Verwenden von SDKs

In .NET wird das Objekt ServiceBusClient mithilfe eines Konstruktors initialisiert, der einen vollqualifizierten Namespace und ein TokenCredentialverwendet. Das DefaultAzureCredential leitet sich vom TokenCredentialab, das automatisch die verwaltete Identität verwendet, die für die App konfiguriert ist. Der Flow vom Kontext der verwalteten Identität zu Service Bus und der Autorisierungshandshake werden automatisch vom Token Credential verarbeitet. Dies ist ein einfacheres Modell als die Verwendung von SAS.

var client = new ServiceBusClient('cotosons.servicebus.windows.net', new DefaultAzureCredential());

Sie senden und empfangen Nachrichten wie gewohnt mit ServiceBusSender und ServiceBusReceiver oder ServiceBusProcessor.

Vollständige schrittweise Anweisungen zum Senden und Empfangen von Nachrichten mit einer verwalteten Identität finden Sie in den folgenden Schnellstartanleitungen. Diese Schnellstartanleitungen enthalten den Code für die Verwendung eines Dienstprinzipals zum Senden und Empfangen von Nachrichten, aber der Code ist für die Verwendung einer verwalteten Identität identisch.

Hinweis

Die verwaltete Identität kann nur in der Azure-Umgebung, in App Services, auf virtuellen Azure-Computern und in Skalierungsgruppen verwendet werden. Für .NET-Anwendungen bietet die vom Service Bus-NuGet-Paket verwendete Bibliothek „Microsoft.Azure.Services.AppAuthentication“ eine Abstraktion über dieses Protokoll und unterstützt eine lokale Entwicklungsumgebung. Mithilfe dieser Bibliothek können Sie zudem Ihren Code lokal auf dem Entwicklungscomputer testen. Hierzu verwenden Sie Ihr Benutzerkonto aus Visual Studio, aus der Azure CLI 2.0 oder der integrierten Active Directory-Authentifizierung. Weitere Informationen zu Optionen für die lokale Entwicklung mit dieser Bibliothek finden Sie unter Dienst-zu-Dienst-Authentifizierung in Azure Key Vault mithilfe von .NET.

Nächste Schritte

Sehen Sie sich dieses .NET-Webanwendungsbeispiel auf GitHub an, bei dem eine verwaltete Identität verwendet wird, um eine Verbindung mit Service Bus zum Senden und Empfangen von Nachrichten herzustellen. Fügen Sie die Identität des App-Diensts der Rolle Azure Service Bus-Datenbesitzer hinzu.