Delen via


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:

  1. 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:

  2. 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.

  3. 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 en fullyQualifiedNamespace (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 van TokenCredential de beheerde identiteit. Stel DefaultAzureCredentialOptionsde ManagedIdentityClientId 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:

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 .