Een beheerde identiteit verifiëren met Azure Active Directory toegang tot Azure Service Bus-resources
Beheerde identiteiten voor Azure-resources is een azure-functie waarmee u een beveiligde identiteit kunt maken die is gekoppeld aan de implementatie waaronder uw toepassingscode wordt uitgevoerd. Vervolgens kunt u die identiteit koppelen aan toegangsbeheerrollen die aangepaste machtigingen verlenen voor toegang tot specifieke Azure-resources die uw toepassing nodig heeft.
Met beheerde identiteiten beheert het Azure-platform deze runtime-identiteit. U hoeft de toegangssleutels niet op te slaan en te beveiligen in uw toepassingscode of -configuratie, voor de identiteit zelf of voor de resources die u nodig hebt. Een Service Bus-client-app die wordt uitgevoerd in een Azure App Service-toepassing of op een virtuele machine met ingeschakelde beheerde entiteiten voor ondersteuning van Azure-resources, hoeft geen SAS-regels en -sleutels of andere toegangstokens te verwerken. De client-app heeft alleen het eindpuntadres van de Service Bus Messaging-naamruimte nodig. Wanneer de app verbinding maakt, Service Bus de context van de beheerde entiteit aan de client in een bewerking die wordt weergegeven in een voorbeeld verderf in dit artikel. Zodra de client is gekoppeld aan een beheerde identiteit, Service Bus alle geautoriseerde bewerkingen uitvoeren. Autorisatie wordt verleend door een beheerde entiteit te koppelen aan Service Bus rollen.
Overzicht
Wanneer een beveiligingsprincipaal (een gebruiker, groep of toepassing) toegang probeert te krijgen tot een Service Bus entiteit, moet de aanvraag worden geautoriseerd. Met Azure AD is toegang tot een resource een proces dat uit twee stappen bestaat.
- Eerst wordt de identiteit van de beveiligingsprincipaal geverifieerd en wordt een OAuth 2.0-token geretourneerd. De resourcenaam voor het aanvragen van een token is
https://servicebus.azure.net. - Vervolgens wordt het token doorgegeven als onderdeel van een aanvraag aan de Service Bus-service om toegang te verlenen tot de opgegeven resource.
De verificatiestap vereist dat een toepassingsaanvraag een OAuth 2.0-toegangsteken tijdens runtime bevat. Als een toepassing wordt uitgevoerd binnen een Azure-entiteit, zoals een Azure-VM, een virtuele-machineschaalset of een Azure Function-app, kan deze een beheerde identiteit gebruiken voor toegang tot de resources.
Voor de autorisatiestap moeten een of meer Azure-rollen worden toegewezen aan de beveiligingsprincipaal. Azure 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 krijgt. Zie Ingebouwde Azure-rollen voor Azure Service Bus voor meer informatie over het toewijzen van Azure-rollen Service Bus.
Native toepassingen en webtoepassingen die aanvragen indienen bij Service Bus kunnen ook worden geautoriseerd met Azure AD. In dit artikel wordt beschreven hoe u een toegangs token aanvraagt en dit gebruikt om aanvragen voor Service Bus verlenen.
Azure-rollen toewijzen voor toegangsrechten
Azure Active Directory (Azure AD) autoreert toegangsrechten voor beveiligde resources via op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC). Azure Service Bus definieert een set ingebouwde Azure-rollen die algemene sets machtigingen omvat die worden gebruikt voor toegang tot Service Bus-entiteiten en u kunt ook aangepaste rollen definiëren voor toegang tot de gegevens.
Wanneer een Azure-rol wordt toegewezen aan een Azure AD-beveiligingsprincipaal, verleent Azure toegang tot deze resources voor die beveiligingsprincipaal. Toegang kan worden beperkt tot het abonnementsniveau, de resourcegroep of de Service Bus naamruimte. Een Azure AD-beveiligingsprincipaal kan een gebruiker, een groep, een toepassingsservice-principal of een beheerde identiteit voor Azure-resources zijn.
Ingebouwde Azure-rollen voor Azure Service Bus
Voor Azure Service Bus is het beheer van naamruimten en alle gerelateerde resources via de Azure Portal en de Azure Resource Management-API al beveiligd met behulp van het Azure RBAC-model. Azure biedt de onderstaande ingebouwde Azure-rollen voor het autoriseren van toegang tot Service Bus naamruimte:
- Azure Service Bus-gegevenseigenaar:hiermee wordt gegevenstoegang tot Service Bus-naamruimte en de entiteiten ervan (wachtrijen, onderwerpen, abonnementen en filters) mogelijk
- Azure Service Bus Data Sender:gebruik deze rol om verzendtoegang te geven tot Service Bus naamruimte en de entiteiten ervan.
- Azure Service Bus-gegevensontvanger:gebruik deze rol om toegang te verlenen tot Service Bus naamruimte en de entiteiten ervan.
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 beperken, te beginnen met het kleinste bereik:
Wachtrij, onderwerp of abonnement: Roltoewijzing is van toepassing op de specifieke Service Bus entiteit. Momenteel biedt de Azure Portal geen ondersteuning voor het toewijzen van gebruikers/groepen/beheerde identiteiten aan Service Bus Azure-rollen op abonnementsniveau. Hier is een voorbeeld van het gebruik van de Azure CLI-opdracht: az-role-assignment-create om een identiteit toe te wijzen aan een Service Bus Azure-rol:
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_subscriptionService Bus: Roltoewijzing omvat de volledige topologie van Service Bus onder de naamruimte en de consumentengroep die ermee is gekoppeld.
Resourcegroep: Roltoewijzing is van toepassing op alle Service Bus resources onder de resourcegroep.
Abonnement: Roltoewijzing is van toepassing op Service Bus resources in alle resourcegroepen in het abonnement.
Notitie
Houd er rekening mee dat het maximaal vijf minuten kan duren voordat Azure-roltoewijzingen zijn doorgegeven.
Zie Roldefinities begrijpen voor meer informatie over hoe ingebouwde rollen worden gedefinieerd. Zie Aangepaste Azure-rollen voor meer informatie over het maken van aangepaste Azure-rollen.
Beheerde identiteiten op een VM inschakelen
Voordat u beheerde identiteiten voor Azure-resources kunt gebruiken om Service Bus-resources van uw VM te autorschakelen, moet u eerst beheerde identiteiten inschakelen voor Azure-resources op de VM. Zie een van de volgende artikelen voor meer informatie over het inschakelen van beheerde identiteiten voor Azure-resources:
- Azure-portal
- Azure PowerShell
- Azure-CLI
- Azure Resource Manager-sjabloon
- Azure Resource Manager-clientbibliotheken
Machtigingen verlenen aan een beheerde identiteit in Azure AD
Als u een aanvraag bij de Service Bus-service wilt autoreren vanuit een beheerde identiteit in uw toepassing, configureert u eerst azure RBAC-instellingen (op rollen gebaseerd toegangsbeheer) voor die beheerde identiteit. Azure Service Bus definieert Azure-rollen die machtigingen omvatten voor het verzenden en lezen van Service Bus. Wanneer de Azure-rol is toegewezen aan een beheerde identiteit, krijgt de beheerde identiteit toegang tot Service Bus entiteiten binnen het juiste bereik.
Zie Verifiëren en autoriseren met Azure Active Directory voor toegang tot Service Bus-resources voor meer informatie over het toewijzen Service Bus Azure-rollen.
Gebruik Service Bus met beheerde identiteiten voor Azure-resources
Als u Service Bus beheerde identiteiten wilt gebruiken, moet u de identiteit de rol en het juiste bereik toewijzen. De procedure in deze sectie maakt gebruik van een eenvoudige toepassing die wordt uitgevoerd onder een beheerde identiteit en toegang heeft tot Service Bus resources.
Hier gebruiken we een voorbeeld van een webtoepassing die wordt gehost in Azure App Service. Zie Create an ASP.NET Core web app in Azure (Een web-app maken in Azure voor stapsgewijse instructies voor het maken van een webtoepassing)
Nadat de toepassing is gemaakt, volgt u deze stappen:
Ga naar Instellingen en selecteer Identiteit.
Selecteer de Status op Aan.
Selecteer Opslaan om de instelling op te slaan.

Zodra u deze instelling hebt ingeschakeld, wordt er een nieuwe service-identiteit gemaakt in uw Azure Active Directory (Azure AD) en geconfigureerd in de App Service host.
Azure-rollen toewijzen met behulp van de Azure Portal
Wijs een van de Service Bus toe aan de beheerde service-identiteit op het gewenste bereik (Service Bus naamruimte, resourcegroep, abonnement). Zie Azure-rollen toewijzen met behulp van de Azure Portal voor gedetailleerde Azure Portal.
Notitie
Zie Services die ondersteuning bieden voor beheerde identiteiten voor Azure-resources voor een lijst met services die beheerde identiteiten ondersteunen.
De app uitvoeren
Wijzig nu de standaardpagina van de ASP.NET toepassing die u hebt gemaakt. U kunt de webtoepassingscode uit deze opslagplaats GitHub gebruiken.
De pagina Default.aspx is uw landingspagina. De code vindt u in het bestand Default.aspx.cs. Het resultaat is een minimale webtoepassing met enkele invoervelden en met verzend- en ontvangstknoppen die verbinding maken met Service Bus verzenden of ontvangen van berichten.
U kunt zien hoe het ServiceBusClient-object wordt initialiseren met behulp van een constructor die een TokenCredential gebruikt. De DefaultAzureCredential is afgeleid van TokenCredential en kan hier worden doorgegeven. Er zijn dus geen geheimen om te bewaren en te gebruiken. De stroom van de beheerde identiteitscontext naar Service Bus en de autorisatiehandhake worden automatisch verwerkt door de tokenreferenties. Het is een eenvoudiger model dan het gebruik van SAS.
Nadat u deze wijzigingen hebt aangebracht, publiceert en voer u de toepassing uit. U kunt eenvoudig de juiste publicatiegegevens verkrijgen door een publicatieprofiel te downloaden en vervolgens te importeren in Visual Studio:

Als u berichten wilt verzenden of ontvangen, voert u de naam in van de naamruimte en de naam van de entiteit die u hebt gemaakt. Klik vervolgens op verzenden of ontvangen.
Notitie
- De beheerde identiteit werkt alleen in de Azure-omgeving, in App Services, azure-VM's en schaalsets. Voor .NET-toepassingen biedt de bibliotheek Microsoft.Azure.Services.AppAuthentication, die wordt gebruikt door het nuGet-pakket Service Bus, een abstractie over dit protocol en ondersteunt deze een lokale ontwikkelervaring. Met deze bibliotheek kunt u uw code ook lokaal testen op uw ontwikkelmachine, met behulp van uw gebruikersaccount van Visual Studio, Azure CLI 2.0 of geïntegreerde Active Directory-verificatie. Zie Service-to-service authentication to Azure Key Vault using .NET (Service-naar-serviceverificatievoor het gebruik van .NET) voor meer informatie over lokale ontwikkelopties met deze bibliotheek.
Volgende stappen
Zie de volgende onderwerpen Service Bus meer informatie over uw berichten: