Een beheerde identiteit verifiëren met Microsoft Entra-id voor toegang tot Azure Service Bus-resources
Beheerde identiteiten voor Azure-resources bieden Azure-services met een automatisch beheerde identiteit in Microsoft Entra ID. U kunt deze identiteit gebruiken om te verifiëren bij elke service, zoals Azure Service Bus die ondersteuning biedt voor Microsoft Entra-verificatie, zonder referenties in uw code te hebben. Als u niet bekend bent met beheerde identiteiten, raadpleegt u Beheerde identiteiten voor Azure-resources voordat u doorgaat met het lezen van dit artikel.
Hier volgen de stappen op hoog niveau voor het gebruik van een beheerde identiteit voor toegang tot een Service Bus-entiteit:
Schakel beheerde identiteit in voor uw client-app of -omgeving. Schakel bijvoorbeeld beheerde identiteit in voor uw Azure-app Service-app, Azure Functions-app of een virtuele machine waarop uw app wordt uitgevoerd. Hier volgen de artikelen die u helpen bij deze stap:
Wijs de rol Azure Service Bus-gegevenseigenaar, Azure Service Bus-gegevenszender of Azure Service Bus-gegevensontvanger toe aan de beheerde identiteit op het juiste bereik (Azure-abonnement, resourcegroep, Service Bus-naamruimte of Service Bus-wachtrij of -onderwerp). Zie Azure-rollen toewijzen met behulp van Azure Portal voor instructies voor het toewijzen van een rol aan een beheerde identiteit.
Gebruik in uw toepassing de beheerde identiteit en het eindpunt voor Service Bus-naamruimte om verbinding te maken met de naamruimte.
In .NET gebruikt u bijvoorbeeld de ServiceBusClient-constructor die parameters gebruikt
TokenCredential
enfullyQualifiedNamespace
(bijvoorbeeld:cotosons.servicebus.windows.net
) om verbinding te maken met Service Bus met behulp van de beheerde identiteit. U geeft DefaultAzureCredential door, die is afgeleid van en gebruikmaakt vanTokenCredential
de beheerde identiteit. StelDefaultAzureCredentialOptions
deManagedIdentityClientId
id van de beheerde identiteit van de client in.string fullyQualifiedNamespace = "<your namespace>.servicebus.windows.net>"; string userAssignedClientId = "<your managed identity client ID>"; var credential = new DefaultAzureCredential( new DefaultAzureCredentialOptions { ManagedIdentityClientId = userAssignedClientId }); var sbusClient = new ServiceBusClient(fullyQualifiedNamespace, credential);
Belangrijk
U kunt lokale of SAS-sleutelverificatie uitschakelen voor een Service Bus-naamruimte en alleen Microsoft Entra-verificatie toestaan. Zie Lokale verificatie uitschakelen voor stapsgewijze instructies.
Ingebouwde Azure-rollen voor Azure Service Bus
Microsoft Entra autoriseert toegang tot beveiligde resources via op rollen gebaseerd toegangsbeheer (RBAC) van Azure. 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.
Azure biedt de volgende ingebouwde Azure-rollen voor het autoriseren van toegang tot een Service Bus-naamruimte:
- Azure Service Bus-gegevenseigenaar: gebruik deze rol om volledige toegang tot de Service Bus-naamruimte en de bijbehorende entiteiten toe te staan (wachtrijen, onderwerpen, abonnementen en filters)
- Azure Service Bus-gegevenszender: gebruik deze rol om het verzenden van berichten naar Service Bus-wachtrijen en -onderwerpen toe te staan.
- Azure Service Bus-gegevensontvanger: gebruik deze rol om het ontvangen van berichten van Service Bus-wachtrijen en -abonnementen toe te staan.
Als u een rol wilt toewijzen aan een beheerde identiteit in Azure Portal, gebruikt u de pagina Toegangsbeheer (IAM). Navigeer naar deze pagina door Toegangsbeheer (IAM) te selecteren op de pagina Service Bus-naamruimte of service bus-wachtrijpagina of service bus-onderwerppagina . Zie Azure-rollen toewijzen met behulp van Azure Portal voor stapsgewijze instructies voor het toewijzen van een rol.
Resourcebereik
Voordat u een Azure-rol toewijst aan een beheerde identiteit, bepaalt u het toegangsbereik dat de beheerde identiteit 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.
Service Bus-naamruimte: roltoewijzing omvat de volledige topologie van Service Bus onder de naamruimte.
Resourcegroep: Roltoewijzing is van toepassing op alle Service Bus-resources onder de resourcegroep.
Abonnement: Roltoewijzing is van toepassing op alle 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.
Op dit moment biedt Azure Portal geen ondersteuning voor het toewijzen van gebruikers, groepen of beheerde identiteiten aan Service Bus Azure-rollen op abonnementsniveau van het onderwerp. Hier volgt 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_subscription
Zie Roldefinities begrijpen voor meer informatie over hoe ingebouwde rollen worden gedefinieerd. Zie Aangepaste Azure-rollen voor informatie over het maken van aangepaste Azure-rollen.
Met behulp van SDK's
In .NET wordt het ServiceBusClient-object geïnitialiseerd met behulp van een constructor die een volledig gekwalificeerde naamruimte en een TokenCredential
. De DefaultAzureCredential
afgeleiden van TokenCredential
, die automatisch de beheerde identiteit gebruikt die voor de app is geconfigureerd. De stroom van de context van de beheerde identiteit naar Service Bus en de autorisatiehanddruk worden automatisch verwerkt door de tokenreferentie. Het is een eenvoudiger model dan het gebruik van SAS.
var client = new ServiceBusClient('cotosons.servicebus.windows.net', new DefaultAzureCredential());
U verzendt en ontvangt berichten zoals gebruikelijk met ServiceBusSender en ServiceBusReceiver of ServiceBusProcessor.
Zie de volgende quickstarts voor volledige stapsgewijze instructies voor het verzenden en ontvangen van berichten met behulp van een beheerde identiteit. Deze quickstarts hebben de code om een service-principal te gebruiken voor het verzenden en ontvangen van berichten, maar de code is hetzelfde voor het gebruik van een beheerde identiteit.
Notitie
De beheerde identiteit werkt alleen binnen de Azure-omgeving, op App-services, Azure-VM's en schaalsets. Voor .NET-toepassingen biedt de bibliotheek Microsoft.Azure.Services.AppAuthentication, die wordt gebruikt door het Service Bus NuGet-pakket, een abstractie van dit protocol en biedt ondersteuning voor een lokale ontwikkelervaring. Met deze bibliotheek kunt u uw code ook lokaal testen op uw ontwikkelcomputer, met behulp van uw gebruikersaccount van Visual Studio, Azure CLI 2.0 of geïntegreerde Active Directory-verificatie. Zie Service-to-service-verificatie voor Azure Key Vault met behulp van .NET voor meer informatie over lokale ontwikkelopties met deze bibliotheek.
Volgende stappen
Zie dit voorbeeld van een .NET-webtoepassing op GitHub, dat gebruikmaakt van een beheerde identiteit om verbinding te maken met Service Bus om berichten te verzenden en te ontvangen. Voeg de identiteit van de app-service toe aan de rol Azure Service Bus-gegevenseigenaar .