Dela via


Använda hanterade identiteter med Azure Service Bus

Hanterade identiteter för Azure-resurser ger Azure-tjänster en automatiskt hanterad identitet i Microsoft Entra ID. Du kan använda den här identiteten för att autentisera till Azure Service Bus utan att lagra autentiseringsuppgifter i koden.

Den här artikeln beskriver hur du aktiverar en hanterad identitet, tilldelar lämplig Service Bus-roll och ansluter till Service Bus från programkoden.

Kommentar

Om du inte är bekant med hanterade identiteter kan du läsa Hanterad identitet för Azure-resurser.

Förutsättningar

Om du vill använda hanterade identiteter med Azure Service Bus behöver du:

Viktigt!

Du kan inaktivera lokal autentisering eller SAS-nyckelautentisering för ett Service Bus-namnområde och endast tillåta Microsoft Entra-autentisering. Stegvisa instruktioner finns i Inaktivera lokal autentisering.

Tilldela en Service Bus-roll till den hanterade identiteten

Microsoft Entra auktoriserar åtkomst till skyddade resurser via rollbaserad åtkomstkontroll i Azure (RBAC). Azure Service Bus tillhandahåller inbyggda Azure-roller som omfattar vanliga uppsättningar med behörigheter som används för att komma åt Service Bus-entiteter. Du kan också definiera anpassade roller.

I följande tabell visas de inbyggda Azure-rollerna för att auktorisera åtkomst till ett Service Bus-namnområde:

Befattning Beskrivning
Azure Service Bus-dataägare Fullständig åtkomst till Service Bus-namnområdet och dess entiteter (köer, ämnen, prenumerationer och filter)
Azure Service Bus-datasändare Skicka meddelanden till Service Bus-köer och ämnen
Azure Service Bus-datamottagare Ta emot meddelanden från Service Bus-köer och prenumerationer

Tilldela en roll i Azure-portalen

Så här tilldelar du en roll till en hanterad identitet i Azure-portalen:

  1. Gå till ditt Service Bus-namnområde, din kö eller ditt ämne.
  2. Välj Åtkomstkontroll (IAM) från den vänstra menyn.
  3. Välj Lägg till>Lägg till rolltilldelning.
  4. På fliken Roll väljer du lämplig Service Bus-dataroll.
  5. På fliken Medlemmar väljer du Hanterad identitet och sedan Välj medlemmar.
  6. Välj den hanterade identiteten för din Azure-resurs.
  7. Välj Granska + tilldela.

Mer information finns i Tilldela Azure-roller med hjälp av Azure-portalen.

Välj resursomfång

Innan du tilldelar en Azure-roll ska du fastställa den åtkomstomfattning som den hanterade identiteten behöver. Bevilja endast det minsta möjliga omfånget.

I följande lista beskrivs de nivåer där du kan begränsa åtkomsten till Service Bus-resurser, med början med det smalaste omfånget:

  • , ämne eller prenumeration: Rolltilldelning gäller för den specifika Service Bus-entiteten.

  • Service Bus-namnområde: Rolltilldelningen sträcker sig över hela topologin för Service Bus under namnområdet.

  • Resursgrupp: Rolltilldelning gäller för alla Service Bus-resurser under resursgruppen.

  • Prenumeration: Rolltilldelning gäller för alla Service Bus-resurser i alla resursgrupper i prenumerationen.

    Kommentar

    Det kan ta upp till fem minuter att sprida Azure-rolltilldelningar.

Tilldela en roll genom Azure CLI

Azure-portalen stöder inte tilldelning av hanterade identiteter till Service Bus-roller på ämnesprenumerationsnivå. Använd kommandot Azure CLI az role assignment create för att tilldela en roll i valfritt omfång:

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

Mer information om hur inbyggda roller definieras finns i Förstå rolldefinitioner. Information om hur du skapar anpassade Azure-roller finns i Anpassade Azure-roller.

Kommentar

Om källtjänsten eller appen inte startas om när du tar bort dess hanterade identitet från Service Bus RBAC-rollen kan källappen fortsätta att skicka eller ta emot meddelanden till eller från Service Bus-entiteten tills token upphör att gälla (standardtokens giltighet är 24 timmar). Detta beteende är av design.

När du har tagit bort källans hanterade identitet från RBAC-rollen startar du om källappen eller -tjänsten för att omedelbart upphäva en token och förhindra att den skickar eller tar emot meddelanden från Service Bus-entiteten.

Ansluta till Service Bus med hanterad identitet i Azure SDK:er

Azure SDK:er för .NET, Java, JavaScript och Python stöder hanterad identitetsautentisering med Service Bus. I följande exempel visas hur du ansluter med .NET SDK.

I .NET initieras ServiceBusClient-objektet med hjälp av en konstruktor som tar ett fullständigt kvalificerat namnområde och en TokenCredential. DefaultAzureCredential Härleds från TokenCredential, som automatiskt använder den hanterade identitet som konfigurerats för appen. Flödet av den hanterade identitetskontexten till Service Bus och handskakningen för auktorisering hanteras automatiskt av tokenautentiseringsuppgifterna. Det är en enklare modell än att använda SAS.

var client = new ServiceBusClient("contoso.servicebus.windows.net", new DefaultAzureCredential());

Du skickar och tar emot meddelanden som vanligt med hjälp av ServiceBusSender och ServiceBusReceiver eller ServiceBusProcessor.

Stegvisa instruktioner för att skicka och ta emot meddelanden med hjälp av en hanterad identitet finns i följande snabbstarter. Dessa snabbstarter har koden för att använda tjänstens huvudnamn för att skicka och ta emot meddelanden, men koden är densamma för att använda en hanterad identitet.

Kommentar

Hanterade identiteter fungerar endast i Azure-miljön, på App Service, virtuella Azure-datorer och skalningsuppsättningar. För .NET-program tillhandahåller Microsoft.Azure.Services.AppAuthentication-biblioteket, som Service Bus NuGet-paketet använder, en abstraktion över det här protokollet och stöder en lokal utvecklingsupplevelse. Med det här biblioteket kan du också testa koden lokalt på utvecklingsdatorn med ditt användarkonto från Visual Studio, Azure CLI eller Microsoft Entra Integrated Authentication. Mer information om lokala utvecklingsalternativ med det här biblioteket finns i Tjänst-till-tjänst-autentisering till Azure Key Vault med hjälp av .NET.

Nästa steg