Een toepassing verifiëren en autoriseren met Microsoft Entra-id voor toegang tot Azure Service Bus-entiteiten

Azure Service Bus ondersteunt het gebruik van Microsoft Entra ID voor het autoriseren van aanvragen voor Service Bus-entiteiten (wachtrijen, onderwerpen, abonnementen of filters). Met Microsoft Entra ID kunt u op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) gebruiken om machtigingen te verlenen aan een beveiligingsprincipaal. De beveiligingsprincipaal kan een gebruiker, groep, toepassingsservice-principal of beheerde identiteit voor Azure-resources zijn.

Een belangrijk voordeel van het gebruik van Microsoft Entra ID met Azure Service Bus is dat u uw referenties niet meer hoeft op te slaan in de code. In plaats daarvan kunt u een OAuth 2.0-toegangstoken aanvragen via het Microsoft Identity Platform. Als de verificatie slaagt, retourneert Microsoft Entra-id een toegangstoken naar de toepassing. De toepassing kan vervolgens het toegangstoken gebruiken om aanvragen voor Service Bus-resources te autoriseren.

U kunt lokale of SAS-sleutelverificatie (Shared Access Signature) uitschakelen voor een Service Bus-naamruimte en alleen Microsoft Entra-verificatie toestaan. Zie Lokale verificatie uitschakelen voor stapsgewijze instructies.

Overzicht

Wanneer een beveiligingsprincipaal (een gebruiker, groep of toepassing) toegang probeert te krijgen tot een Service Bus-entiteit, moet de aanvraag worden geautoriseerd. Met Microsoft Entra ID is toegang tot een resource een proces in twee stappen:

  1. De identiteit van de beveiligingsprincipaal wordt geverifieerd en er wordt een OAuth 2.0-token geretourneerd. De resourcenaam voor het aanvragen van een token is https://servicebus.azure.net.
  2. Het token wordt doorgegeven als onderdeel van een aanvraag aan de Service Bus-service om toegang tot de opgegeven resource te autoriseren.

Voor de verificatiestap is vereist dat een toepassingsaanvraag tijdens runtime een OAuth 2.0-toegangstoken bevat. Als een toepassing wordt uitgevoerd binnen een Azure-entiteit, zoals een virtuele Azure-machine, een virtuele-machineschaalset of een functie-app, kan deze een beheerde identiteit gebruiken om toegang te krijgen tot de resources. Zie Beheerde identiteiten gebruiken met Azure Service Bus voor meer informatie over het verifiëren van aanvragen die een beheerde identiteit aan de Service Bus-service doet.

Voor de autorisatiestap is de toewijzing van een of meer Azure-rollen aan de beveiligingsprincipaal vereist. Service Bus biedt Azure-rollen die sets machtigingen voor Service Bus-resources omvatten. De rollen die zijn toegewezen aan een beveiligingsprincipaal, bepalen de machtigingen die de principal heeft voor Service Bus-resources. Zie ingebouwde Azure-rollen voor Azure Service Bus voor meer informatie over het toewijzen van Azure-rollen aan Service Bus.

Systeemeigen toepassingen en webtoepassingen die aanvragen indienen bij Service Bus, kunnen ook autoriseren met Microsoft Entra-id. In dit artikel leest u hoe u een toegangstoken aanvraagt en gebruikt om aanvragen voor Service Bus-resources te autoriseren.

Ingebouwde Azure-rollen voor Azure Service Bus

Microsoft Entra autoriseert toegangsrechten voor beveiligde resources via Azure RBAC. Azure Service Bus definieert een set ingebouwde Azure-rollen die algemene sets machtigingen omvatten die worden gebruikt voor toegang tot Service Bus-entiteiten. U kunt ook aangepaste rollen definiëren voor toegang tot de gegevens.

Wanneer een Azure-rol is toegewezen aan een Microsoft Entra-beveiligingsprincipaal, verleent Azure toegang tot deze resources voor die beveiligingsprincipaal. Toegang kan worden beperkt tot het niveau van het abonnement, de resourcegroep, de Service Bus-naamruimte of de entiteit (wachtrij, onderwerp of abonnement). Een Microsoft Entra-beveiligingsprincipaal kan een gebruiker, een groep, een toepassingsservice-principal of een beheerde identiteit voor Azure-resources zijn.

Voor Azure Service Bus helpt het Azure RBAC-model het beheer van naamruimten en alle gerelateerde resources te beveiligen via Azure Portal en de Azure Resource Management-API. Azure biedt de volgende ingebouwde rollen voor het autoriseren van toegang tot een Service Bus-naamruimte:

Resourcebereik

Voordat u een Azure-rol toewijst een beveiligingsprincipal, moet u het toegangsbereik bepalen dat de beveiligingsprincipal moet hebben. Uit best practices blijkt dat het het beste is om het nauwst mogelijke bereik toe te wijzen.

In de volgende lijst worden de niveaus beschreven waarop u toegang tot Service Bus-resources kunt instellen, te beginnen met het smalste bereik:

  • Wachtrij, onderwerp of abonnement: roltoewijzing is van toepassing op de specifieke Service Bus-entiteit. Op dit moment biedt Azure Portal geen ondersteuning voor het toewijzen van gebruikers, groepen of beheerde identiteiten aan Service Bus Azure-rollen op het niveau van het onderwerpabonnement.

  • Service Bus-naamruimte: roltoewijzing omvat de volledige topologie van Service Bus onder de naamruimte en het wachtrij- of onderwerpabonnement dat eraan is gekoppeld.

  • Resourcegroep: Roltoewijzing is van toepassing op alle Service Bus-resources onder de resourcegroep.

  • Azure-abonnement: roltoewijzing is van toepassing op alle Service Bus-resources in alle resourcegroepen in het abonnement.

Houd er rekening mee dat het maximaal vijf minuten kan duren voordat Azure-roltoewijzingen zijn doorgegeven.

Zie Azure-roldefinities begrijpen voor meer informatie over hoe ingebouwde rollen worden gedefinieerd. Zie Aangepaste Azure-rollen voor informatie over het maken van aangepaste Azure-rollen.

Verificatie vanuit een toepassing

Een belangrijk voordeel van het gebruik van Microsoft Entra-id met Service Bus is dat uw referenties niet meer hoeven te worden opgeslagen in uw code. In plaats daarvan kunt u een OAuth 2.0-toegangstoken aanvragen via het Microsoft Identity Platform.

Microsoft Entra verifieert de beveiligingsprincipaal (een gebruiker, een groep, een service-principal of een beheerde identiteit voor Azure-resources) die de toepassing uitvoert. Als de verificatie slaagt, retourneert Microsoft Entra-id het toegangstoken naar de toepassing. De toepassing kan vervolgens het toegangstoken gebruiken om aanvragen voor Service Bus te autoriseren.

In de volgende secties ziet u hoe u uw systeemeigen toepassing of webtoepassing configureert voor verificatie met Microsoft Identity Platform 2.0. Zie Wat is het Microsoft Identity Platform? voor meer informatie over het platform.

Voor een overzicht van de OAuth 2.0-codeverleningsstroom, zie Microsoft Identity Platform en OAuth 2.0-autorisatiecodeflow.

Uw toepassing registreren bij een Microsoft Entra-tenant

De eerste stap bij het gebruik van Microsoft Entra-id voor het autoriseren van Service Bus-entiteiten is het registreren van uw clienttoepassing bij een Microsoft Entra-tenant vanuit Azure Portal. Wanneer u uw clienttoepassing registreert, geeft u informatie over de toepassing aan Active Directory op. Microsoft Entra-id biedt vervolgens een client-id (ook wel een toepassings-id genoemd) die u kunt gebruiken om uw toepassing te koppelen aan de Microsoft Entra-runtime. Zie Toepassings- en service-principalobjecten in Microsoft Entra-id voor meer informatie over de client-id.

Als u uw toepassing wilt registreren bij Microsoft Entra-id, volgt u de stappen in Een toepassing registreren in Microsoft Entra-id.

Notitie

Als u uw toepassing registreert als een systeemeigen toepassing, kunt u elke geldige URI voor de omleidings-URI opgeven. Voor systeemeigen toepassingen hoeft deze waarde geen echte URL te zijn. Voor webtoepassingen moet de omleidings-URI een geldige URI zijn, omdat hiermee de URL wordt opgegeven waarnaar tokens worden opgegeven.

Nadat u uw toepassing hebt geregistreerd, worden de id van de toepassing (client) en de id van de map (tenant) weergegeven onder Instellingen. Noteer deze waarden. U hebt ze nodig om de toepassing uit te voeren.

Schermopname van een toepassings-id en tenant-id in het deelvenster voor app-registratie.

Een clientgeheim maken

De toepassing heeft een clientgeheim nodig om de identiteit ervan te bewijzen bij het aanvragen van een token. Voer de volgende stappen uit om het clientgeheim toe te voegen:

  1. Ga in Azure Portal naar uw app-registratie als u zich nog niet op de pagina bevindt.

  2. Selecteer certificaten en geheimen in het linkermenu.

  3. Selecteer onder Clientgeheimenhet nieuwe clientgeheim om een nieuw geheim te maken.

    Schermopname van de knop voor het maken van een clientgeheim in het deelvenster voor certificaten en geheimen.

  4. Geef een beschrijving op voor het geheim, kies het verloopinterval en selecteer vervolgens Toevoegen.

    Schermopname van het deelvenster voor het toevoegen van een clientgeheim.

  5. Kopieer onmiddellijk de waarde van het nieuwe geheim naar een veilige locatie. De volledige waarde wordt slechts eenmaal weergegeven.

    Schermopname van het gebied voor clientgeheimen, samen met de knop voor het kopiëren van een geheim.

Machtigingen toevoegen voor de Service Bus-API

Als uw toepassing een consoletoepassing is, moet u een systeemeigen toepassing registreren en API-machtigingen toevoegen aan Microsoft.ServiceBus, die behoren tot de set van vereiste machtigingen.

Systeemeigen toepassingen hebben ook een omleidings-URI in Microsoft Entra ID nodig, die als een identificator fungeert. De URI hoeft geen netwerkbestemming te zijn. Gebruik https://servicebus.microsoft.com dit voorbeeld omdat de voorbeeldcode die URI al gebruikt.

Toewijzing van Azure-rollen via Azure Portal

Wijs een van de Service Bus-rollen toe aan de service-principal van de toepassing op het gewenste bereik (entiteit, Service Bus-naamruimte, resourcegroep of Azure-abonnement). Zie Azure-rollen toewijzen met behulp van Azure Portal voor gedetailleerde stappen.

Nadat u de rol en het bereik ervan hebt gedefinieerd, kunt u dit gedrag testen met het voorbeeld op GitHub.

Verificatie van de Service Bus-client

Nadat u uw toepassing hebt geregistreerd en deze machtigingen hebt verleend voor het verzenden/ontvangen van gegevens in Azure Service Bus, kunt u uw client verifiëren met de inloggegevens van het clientgeheim. Met deze verificatie kunt u aanvragen indienen voor Azure Service Bus.

Zie de sectie Scenario's van de Microsoft Authentication Library (MSAL) voor .NET GitHub-opslagplaats voor een lijst met scenario's waarvoor het verkrijgen van tokens wordt ondersteund.

Met behulp van de nieuwste Azure.Messaging.ServiceBus-bibliotheek kunt u ServiceBusClient verifiëren met ClientSecretCredential, dat is gedefinieerd in de Azure.Identity-bibliotheek .

TokenCredential credential = new ClientSecretCredential("<tenant_id>", "<client_id>", "<client_secret>");
var client = new ServiceBusClient("<fully_qualified_namespace>", credential);

Als u de oudere .NET-pakketten gebruikt, raadpleegt u de Azure RBAC-voorbeelden voor Service Bus op GitHub.