Autentisera och auktorisera ett program med Azure Active Directory åtkomst till Azure Service Bus entiteter

Azure Service Bus stöder användning Azure Active Directory (Azure AD) för att auktorisera begäranden till Service Bus entiteter (köer, ämnen, prenumerationer eller filter). Med Azure AD kan du använda rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att bevilja behörigheter till ett säkerhetsobjekt, som kan vara en användare, grupp eller tjänstens huvudnamn för programmet. Mer information om roller och rolltilldelningar finns i Förstå de olika rollerna.

Ö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 auktoriserats. Med Azure AD är åtkomsten till en resurs en tvåstegsprocess.

  1. Först autentiseras säkerhetsobjekts identitet och en OAuth 2.0-token returneras. Resursnamnet för att begära en token är https://servicebus.azure.net .
  2. Därefter skickas token som en del av en begäran till Service Bus för att ge åtkomst till den angivna resursen.

Autentiseringssteget kräver att en programbegäran innehåller en OAuth 2.0-åtkomsttoken vid körning. Om ett program körs i en Azure-entitet, till exempel en virtuell Azure-dator, en VM-skalningsuppsättning eller en Azure-funktionsapp, kan det använda en hanterad identitet för att få åtkomst till resurserna. Information om hur du autentiserar begäranden som görs av en hanterad identitet till Service Bus-tjänsten finns i Autentisera åtkomst till Azure Service Bus-resurser med Azure Active Directoryoch hanterade identiteter för Azure Resources .

Auktoriseringssteget kräver att en eller flera Azure-roller tilldelas till säkerhetsobjekt. Azure Service Bus tillhandahåller Azure-roller som omfattar uppsättningar av behörigheter för Service Bus resurser. De roller som tilldelas till ett säkerhetsobjekt avgör vilka behörigheter som huvudnamn kommer att ha. Mer information om hur du tilldelar Azure-roller till Azure Service Bus finns i Inbyggda roller i Azure för Azure Service Bus.

Interna program och webbprogram som gör begäranden till Service Bus kan också auktorisera med Azure AD. 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.

Tilldela Azure-roller för åtkomstbehörigheter

Azure Active Directory (Azure AD) auktoriserar åtkomstbehörigheter 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 komma åt Service Bus-entiteter och du kan också definiera anpassade roller för åtkomst till data.

När en Azure-roll tilldelas till ett Azure AD-säkerhetsobjekt beviljar Azure åtkomst till dessa resurser för det säkerhetsobjekt. Åtkomsten kan vara begränsad till prenumerationsnivån, resursgruppen eller Service Bus namnområdet. Ett Azure AD-säkerhetsobjekt kan vara en användare, en grupp, ett huvudnamn för programtjänsten eller en hanterad identitet för Azure-resurser.

Inbyggda Roller i Azure för Azure Service Bus

För Azure Service Bus skyddas hanteringen av namnrymder och alla relaterade resurser via Azure Portal och Azure-resurshanterings-API:et redan med hjälp av Azure RBAC-modellen. Azure tillhandahåller de inbyggda Azure-rollerna nedan för auktorisering av åtkomst Service Bus en namnrymd:

Resursomfång

Innan du tilldelar en Azure-roll till ett säkerhetsobjekt ska du bestämma vilket åtkomstomfång säkerhetsobjekt som ska ha. Bästa praxis kräver att det alltid är bäst att endast bevilja det smalaste möjliga omfånget.

I följande lista beskrivs de nivåer där du kan begränsa åtkomsten till Service Bus resurser, från och 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 Azure Portal inte tilldelning av användare/grupper/hanterade identiteter till Service Bus Azure-roller på prenumerationsnivå.
  • Service Bus namnområde: Rolltilldelningen omfattar hela topologin för Service Bus under namnområdet och till konsumentgruppen som är associerad med den.
  • Resursgrupp: Rolltilldelningen gäller för alla Service Bus under resursgruppen.
  • Prenumeration: Rolltilldelning gäller för alla Service Bus i alla resursgrupper i prenumerationen.

Anteckning

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. Information om hur du skapar anpassade Azure-roller finns i Anpassade Roller i Azure.

Tilldela Azure-roller med hjälp av Azure Portal

Tilldela en av Service Bus-rollerna till programmets tjänsthuvudnamn i önskat omfång (Service Bus namnområde, resursgrupp, prenumeration). Detaljerade anvisningar finns i Tilldela Azure-roller med hjälp av Azure Portal.

När du har definierat rollen och dess omfång kan du testa det här beteendet med exemplen på GitHub.

Autentisera från ett program

En viktig fördel med att använda Azure AD 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. Azure AD autentiserar säkerhetsobjekt (en användare, en grupp eller tjänstens huvudnamn) som kör programmet. Om autentiseringen lyckas returnerar Azure AD åtkomsttoken till programmet och programmet kan sedan använda åtkomsttoken för att auktorisera begäranden till Azure Service Bus.

Följande avsnitt visar hur du konfigurerar ditt interna program eller webbprogram för autentisering med Microsofts identitetsplattform 2.0. Mer information om Microsofts identitetsplattform 2.0 finns i Microsofts identitetsplattform (v2.0) översikt.

En översikt över flödet för beviljande av OAuth 2.0-kod finns i Authorize access to Azure Active Directory web applications using the OAuth 2.0 code grant flow (Auktorisera åtkomst till Azure Active Directory-webbprogram med OAuth 2.0-kodtillämpningen).

Registrera ditt program med en Azure AD-klientorganisation

Det första steget i att använda Azure AD för att Service Bus entiteter är att registrera klientprogrammet med en Azure AD-klientorganisation från Azure Portal. När du registrerar klientprogrammet tillhandahåller du information om programmet till AD. Azure AD tillhandahåller sedan ett klient-ID (kallas även program-ID) som du kan använda för att associera ditt program med Azure AD-körning. Mer information om klient-ID finns i Program- och tjänsthuvudnamnsobjekt i Azure Active Directory.

Följande bilder visar steg för att registrera en webbapp:

Registrera ett program

Anteckning

Om du registrerar ditt program som ett inbyggt 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 verklig URL. För webbprogram måste omdirigerings-URI:n vara en giltig URI, eftersom den anger url:en som token tillhandahålls till.

När du har registrerat ditt program visas program-ID :t (klienten) under Inställningar:

Program-ID för det registrerade programmet

Mer information om hur du registrerar ett program med Azure AD finns i Integrera program med Azure Active Directory.

Viktigt

Anteckna TenantId och ApplicationId. Du behöver dessa värden för att köra programmet.

Skapa en klienthemlighet

Programmet behöver en klienthemlighet för att bevisa sin identitet när en token begärs. Följ dessa steg om du vill lägga till klienthemligheten.

  1. Gå till din appregistrering i Azure Portal om du inte redan är på sidan.

  2. Välj Certifikat & hemligheter på den vänstra menyn.

  3. Under Klienthemligheter väljer du Ny klienthemlighet för att skapa en ny hemlighet.

    Ny klienthemlighet – knapp

  4. Ange en beskrivning av hemligheten och välj önskat förfallointervall och välj sedan Lägg till.

    Lägg till klienthemlighetssida

  5. Kopiera omedelbart värdet för den nya hemligheten till en säker plats. Fyllningsvärdet visas bara för dig en gång.

    Klienthemlighet

Behörigheter för Service Bus API

Om ditt program är ett konsolprogram måste du registrera ett inbyggt program och lägga till API-behörigheter för Microsoft.ServiceBus till de behörigheter som krävs. Interna program behöver också en omdirigerings-URI i Azure AD, som fungerar som en identifierare. URI:en 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:en.

Autentisera Service Bus klienten

När du har registrerat ditt program och gett det behörighet att skicka/ta emot data i Azure Service Bus kan du autentisera din klient med autentiseringsuppgifter för klienthemlighet, vilket gör att du kan skicka begäranden mot Azure Service Bus.

En lista över scenarier där det finns stöd för att hämta token finns i avsnittet Scenarier i lagringsplatsen Microsoft Authentication Library (MSAL) för .NET GitHub.

Med hjälp av det senaste Biblioteket Azure.Messaging.ServiceBus kan du autentisera ServiceBusClient med en 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 äldre .NET-paket kan du gå till RoleBasedAccessControl-exemplen på lagringsplatsen azure-service-bus samples.

Nästa steg

I följande ämnen kan du lära dig mer om Service Bus-meddelanden.