Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure Service Bus stöder användning av Microsoft Entra-ID för att auktorisera begäranden till Service Bus-entiteter (köer, ämnen, prenumerationer eller filter). Med Microsoft Entra ID kan du använda rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att bevilja behörigheter till ett säkerhetsobjekt. Säkerhetsobjektet kan vara en användare, grupp, programtjänsthuvudnamn eller hanterad identitet för Azure-resurser.
En viktig fördel med att använda Microsoft Entra-ID med Azure Service Bus är att du inte behöver lagra dina autentiseringsuppgifter i koden längre. I stället kan du begära en OAuth 2.0-åtkomsttoken från Microsofts identitetsplattform. Om autentiseringen lyckas returnerar Microsoft Entra ID en åtkomsttoken till programmet. Programmet kan sedan använda åtkomsttoken för att auktorisera begäranden till Service Bus-resurser.
Du kan inaktivera autentisering med lokal eller delad åtkomstsignatur (SAS) för ett Service Bus-namnområde och endast tillåta Microsoft Entra-autentisering. Stegvisa instruktioner finns i Inaktivera lokal autentisering.
Översikt
När ett säkerhetsobjekt (en användare, grupp eller ett program) försöker komma åt en Service Bus-entitet måste begäran auktoriseras. Med Microsoft Entra-ID är åtkomst till en resurs en tvåstegsprocess:
- Säkerhetsprincipens identitet autentiseras och en OAuth 2.0-token returneras. Resursnamnet för att begära en token är
https://servicebus.azure.net. - Token skickas som en del av en begäran till Service Bus-tjänsten för att auktorisera åtkomst till den angivna resursen.
Autentiseringssteget kräver att en programansökan innehåller en OAuth-2.0-åtkomsttoken vid körningstid. Om ett program körs inom en Azure-entitet, till exempel en virtuell Azure-dator, en VM-skalningsuppsättning eller en funktionsapp, kan det använda en hanterad identitet för att komma åt resurserna. Information om hur du autentiserar begäranden som en hanterad identitet gör till Service Bus-tjänsten finns i Använda hanterade identiteter med Azure Service Bus.
Auktoriseringssteget kräver tilldelning av en eller flera Azure-roller till säkerhetsobjektet. Service Bus tillhandahåller Azure-roller som omfattar uppsättningar med behörigheter för Service Bus-resurser. De roller som tilldelas en säkerhetsprincipal avgör vilka behörigheter denna har på Service Bus-resurser. Mer information om hur du tilldelar Azure-roller till Service Bus finns i Inbyggda Azure-roller för Azure Service Bus.
Inbyggda program och webbprogram som gör begäranden till Service Bus kan också auktorisera med Microsoft Entra-ID. Den här artikeln visar hur du begär en åtkomsttoken och använder den för att auktorisera begäranden för Service Bus-resurser.
Inbyggda Azure-roller för Azure Service Bus
Microsoft Entra auktoriserar åtkomsträttigheter till skyddade resurser via Azure RBAC. Azure Service Bus definierar en uppsättning inbyggda Azure-roller som omfattar vanliga uppsättningar med behörigheter som används för att få åtkomst till Service Bus-entiteter. Du kan också definiera anpassade roller för åtkomst till data.
När en Azure-roll tilldelas ett Microsoft Entra-säkerhetsobjekt ger Azure åtkomst till dessa resurser för det säkerhetsobjektet. Åtkomst kan begränsas till prenumerationsnivå, resursgrupp, Service Bus-namnområde eller entitet (kö, ämne eller prenumeration). Ett Microsoft Entra-säkerhetsobjekt kan vara en användare, en grupp, ett huvudnamn för programtjänsten eller en hanterad identitet för Azure-resurser.
För Azure Service Bus hjälper Azure RBAC-modellen till att skydda hanteringen av namnområden och alla relaterade resurser via Azure-portalen och Azure-resurshanterings-API:et. Azure tillhandahåller följande inbyggda roller för att auktorisera åtkomst till ett Service Bus-namnområde:
- Azure Service Bus-dataägare: Använd den här rollen för att ge fullständig åtkomst till Service Bus-resurserna.
- Azure Service Bus-datasändare: Använd den här rollen för att ge sändningsåtkomst till Service Bus-namnområdet och dess entiteter.
- Azure Service Bus-datamottagare: Använd den här rollen för att ge mottagande åtkomst till Service Bus-namnområdet och dess entiteter.
Resursomfång
Innan du tilldelar en Azure-roll till ett säkerhetsobjekt ska du bestämma omfånget för åtkomst som säkerhetsobjektet ska ha. Bästa praxis kräver att det alltid är bäst att endast bevilja minsta möjliga omfång.
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:
Kö, ämne eller prenumeration: Rolltilldelning gäller för den specifika Service Bus-entiteten. För närvarande stöder Inte Azure-portalen tilldelning av användare, grupper eller hanterade identiteter till Service Bus Azure-roller på ämnesprenumerationsnivå.
Service Bus-namnområde: Rolltilldelningen sträcker sig över hela topologin för Service Bus under namnområdet och till den kö eller ämnesprenumeration som är associerad med den.
Resursgrupp: Rolltilldelning gäller för alla Service Bus-resurser under resursgruppen.
Azure-prenumeration: Rolltilldelning gäller för alla Service Bus-resurser i alla resursgrupper i prenumerationen.
Tänk på att Azure-rolltilldelningar kan ta upp till fem minuter att spridas.
Mer information om hur inbyggda roller definieras finns i Förstå Rolldefinitioner för Azure. Information om hur du skapar anpassade Azure-roller finns i Anpassade Azure-roller.
Autentisering från ett program
En viktig fördel med att använda Microsoft Entra-ID med Service Bus är att dina autentiseringsuppgifter inte längre behöver lagras i koden. I stället kan du begära en OAuth 2.0-åtkomsttoken från Microsofts identitetsplattform.
Microsoft Entra autentiserar säkerhetsobjektet (en användare, en grupp, ett huvudnamn för tjänsten eller en hanterad identitet för Azure-resurser) som kör programmet. Om autentiseringen lyckas returnerar Microsoft Entra-ID:t åtkomsttoken till programmet. Programmet kan sedan använda åtkomsttoken för att auktorisera begäranden till Service Bus.
Följande avsnitt visar hur du konfigurerar ditt interna program eller webbprogram för autentisering med Microsoft identity platform 2.0. Mer information om plattformen finns i Vad är Microsofts identitetsplattform?.
En översikt över OAuth 2.0-kodbidragsflödet finns i Microsofts identitetsplattform och OAuth 2.0-auktoriseringskodflöde.
Registrera ditt program med en Microsoft Entra-klientorganisation
Det första steget i att använda Microsoft Entra-ID för att auktorisera Service Bus-entiteter är att registrera ditt klientprogram med en Microsoft Entra-klient från Azure Portal. När du registrerar klientprogrammet anger du information om programmet till Active Directory. Microsoft Entra-ID tillhandahåller sedan ett klient-ID (även kallat ett program-ID) som du kan använda för att associera ditt program med Microsoft Entra-körningen. Mer information om klient-ID finns i Program- och tjänsthuvudnamnsobjekt i Microsoft Entra-ID.
Om du vill registrera ditt program med Microsoft Entra-ID följer du stegen i Registrera ett program i Microsoft Entra-ID.
Kommentar
Om du registrerar ditt program som ett internt program kan du ange en giltig URI för omdirigerings-URI:n. För interna program behöver det här värdet inte vara en riktig URL. För webbprogram måste omdirigerings-URI:n vara en giltig URI eftersom den anger den URL som token tillhandahålls till.
När du har registrerat ditt program visas program-ID ochkatalog-ID (klientorganisation) under Inställningar. Anteckna dessa värden. Du behöver dem för att köra programmet.
Skapa en klienthemlighet
Appen behöver en klienthemlighet för att bevisa sin identitet när det begär en token. Följ dessa steg för att lägga till klienthemligheten:
I Azure-portalen går du till din appregistrering om du inte redan är på sidan.
På den vänstra menyn väljer du Certifikat och hemligheter.
Under Klienthemligheter väljer du Ny klienthemlighet för att skapa en ny hemlighet.
Ange en beskrivning för hemligheten, välj förfallointervallet och välj sedan Lägg till.
Kopiera omedelbart värdet för den nya hemligheten till en säker plats. Det fullständiga värdet visas bara en gång.
Lägga till behörigheter för Service Bus-API:et
Om ditt program är ett konsolprogram måste du registrera ett internt program och lägga till API-behörigheter för Microsoft.ServiceBus i uppsättningen med nödvändiga behörigheter.
Interna program behöver också en omdirigerings-URI i Microsoft Entra-ID, som fungerar som identifierare. URI:n behöver inte vara ett nätverksmål. Använd https://servicebus.microsoft.com i det här exemplet eftersom exempelkoden redan använder den URI:n.
Tilldelning av Azure-roller via Azure-portalen
Tilldela en av Service Bus-rollerna till programmets tjänsthuvudnamn i önskat omfång (entitet, Service Bus-namnområde, resursgrupp eller Azure-prenumeration). Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.
När du har definierat rollen och dess omfång kan du testa det här beteendet med exemplet på GitHub.
Autentisering av Service Bus-klienten
När du har registrerat ditt program och beviljat det behörighet att skicka/ta emot data i Azure Service Bus kan du autentisera klienten med klientens hemliga autentiseringsuppgifter. Med den här autentiseringen kan du göra begäranden mot Azure Service Bus.
En lista över scenarier för vilka hämtning av token stöds finns i avsnittet Scenarier i Microsoft Authentication Library (MSAL) för .NET GitHub-lagringsplatsen.
Genom att använda det senaste Azure.Messaging.ServiceBus-biblioteket kan du autentisera ServiceBusClient med ClientSecretCredential, som definieras i Azure.Identity-biblioteket .
TokenCredential credential = new ClientSecretCredential("<tenant_id>", "<client_id>", "<client_secret>");
var client = new ServiceBusClient("<fully_qualified_namespace>", credential);
Om du använder de äldre .NET-paketen kan du läsa Azure RBAC-exemplen för Service Bus på GitHub.
Relaterat innehåll
Mer information om Azure RBAC finns i Vad är rollbaserad åtkomstkontroll i Azure (Azure RBAC)?.
Information om hur du tilldelar och hanterar Azure-rolltilldelningar med hjälp av Azure PowerShell, Azure CLI eller REST-API:et finns i följande artiklar:
Mer information om Service Bus-meddelanden finns i följande artiklar: