Autentisera en hanterad identitet med Azure Active Directory åtkomst till Azure Service Bus resurser

Hanterade identiteter för Azure-resurser är en funktion mellan Azure som gör att du kan skapa en säker identitet som är associerad med distributionen som programkoden körs under. Du kan sedan associera identiteten med åtkomstkontrollroller som beviljar anpassade behörigheter för åtkomst till specifika Azure-resurser som ditt program behöver.

Med hanterade identiteter hanterar Azure-plattformen den här körningsidentiteten. Du behöver inte lagra och skydda åtkomstnycklar i din programkod eller konfiguration, antingen för själva identiteten eller för de resurser som du behöver komma åt. En Service Bus-klientapp som körs i ett Azure App Service-program eller i en virtuell dator med aktiverade hanterade entiteter för Azure-resurser behöver inte hantera SAS-regler och nycklar eller andra åtkomsttoken. Klientappen behöver bara slutpunktsadressen för Service Bus för meddelanden. När appen ansluts Service Bus den hanterade entitetens kontext till klienten i en åtgärd som visas i ett exempel senare i den här artikeln. När den är associerad med en hanterad identitet kan Service Bus-klienten göra alla auktoriserade åtgärder. Auktorisering beviljas genom att associera en hanterad entitet med Service Bus roller.

Översikt

När ett säkerhetsobjekt (en användare, grupp eller ett program) försöker komma åt 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 den använda en hanterad identitet för att få åtkomst till resurserna.

Auktoriseringssteget kräver att en eller flera Azure-roller tilldelas till säkerhetsobjekt. Azure Service Bus tillhandahåller Azure-roller som omfattar uppsättningar med 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 Azures inbyggda roller 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 åtkomsträttigheter till skyddade resurser via rollbaserad åtkomstkontroll i Azure (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 programtjänsthuvudnamn eller en hanterad identitet för Azure-resurser.

Inbyggda Azure-roller för Azure Service Bus

För Azure Service Bus skyddas hanteringen av namnområden 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 fastställa åtkomstomfånget som säkerhetsobjekt 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ö,ämneeller prenumeration: Rolltilldelninggä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å. Här är ett exempel på hur du använder Azure CLI-kommandot: az-role-assignment-create för att tilldela en identitet till en Service Bus Azure-roll:

    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
    
  • Service Bus namnområde:Rolltilldelningen omfattar hela topologin för Service Bus under namnområdet och till den konsumentgrupp som är associerad med den.

  • Resursgrupp:Rolltilldelning 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 Azure-roller.

Aktivera hanterade identiteter på en virtuell dator

Innan du kan använda hanterade identiteter för Azure-resurser för att auktorisera Service Bus från den virtuella datorn måste du först aktivera hanterade identiteter för Azure-resurser på den virtuella datorn. Information om hur du aktiverar hanterade identiteter för Azure-resurser finns i någon av följande artiklar:

Bevilja behörigheter till en hanterad identitet i Azure AD

Om du vill auktorisera en begäran till Service Bus-tjänsten från en hanterad identitet i ditt program måste du först konfigurera Azure-inställningar för rollbaserad åtkomstkontroll (Azure RBAC) för den hanterade identiteten. Azure Service Bus definierar Azure-roller som omfattar behörigheter för att skicka och läsa från Service Bus. När Azure-rollen tilldelas till en hanterad identitet beviljas den hanterade identiteten åtkomst till Service Bus entiteter i lämpligt omfång.

Mer information om hur du tilldelar Azure-roller finns i Autentisera och auktorisera med Azure Active Directory för åtkomst till Service Bus resurser.

Använda Service Bus hanterade identiteter för Azure-resurser

Om du Service Bus med hanterade identiteter måste du tilldela identiteten rollen och lämpligt omfång. Proceduren i det här avsnittet använder ett enkelt program som körs under en hanterad identitet och som har åtkomst Service Bus resurser.

Här använder vi ett exempelwebbprogram som finns i Azure App Service. Stegvisa instruktioner för hur du skapar en webbapp finns i Skapa en ASP.NET Core-webbapp i Azure

Följ dessa steg när programmet har skapats:

  1. Gå till Inställningar och välj Identitet.

  2. Välj Status som På.

  3. Spara inställningen genom att välja Spara.

    Managed identity for a web app

När du har aktiverat den här inställningen skapas en ny tjänstidentitet i din Azure Active Directory (Azure AD) och konfigureras i App Service värden.

Tilldela Azure-roller med hjälp av Azure Portal

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

Anteckning

En lista över tjänster som stöder hanterade identiteter finns i Tjänster som stöder hanterade identiteter för Azure-resurser.

Kör appen

Ändra nu standardsidan för det ASP.NET som du skapade. Du kan använda webbprogramkoden från den här GitHub lagringsplatsen.

Sidan Default.aspx är din landningssida. Koden finns i filen Default.aspx.cs. Resultatet är ett minimalt webbprogram med några inmatningsfält och med knappar för att skicka och ta emot som ansluter till Service Bus för att antingen skicka eller ta emot meddelanden.

Observera hur ServiceBusClient-objektet initieras med hjälp av en konstruktor som tar en TokenCredential. DefaultAzureCredential härleds från TokenCredential och kan skickas här. Därför finns det inga hemligheter att behålla och använda. Flödet för den hanterade identitetskontexten till Service Bus och auktoriseringshandskakningen hanteras automatiskt av tokenauktoriseringen. Det är en enklare modell än att använda SAS.

När du har gjort dessa ändringar publicerar och kör du programmet. Du kan enkelt hämta rätt publiceringsdata genom att ladda ned och sedan importera en publiceringsprofil i Visual Studio:

Get publish profile

Om du vill skicka eller ta emot meddelanden anger du namnet på namnområdet och namnet på den entitet som du skapade. Klicka sedan på Skicka eller ta emot.

Anteckning

  • Den hanterade identiteten fungerar bara i Azure-miljön på App Services, virtuella Azure-datorer och skalningsuppsättningar. För .NET-program tillhandahåller Microsoft.Azure.Services.AppAuthentication-biblioteket, som används av Service Bus NuGet-paketet, 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 2.0 eller Active Directory-integrerad autentisering. Mer information om lokala utvecklingsalternativ med det här biblioteket finns i Tjänst-till-tjänst-autentisering för att Azure Key Vault med .NET.

Nästa steg

Mer information om Service Bus-meddelanden finns i följande avsnitt: