Ověření spravované identity pomocí Azure Active Directory pro přístup k prostředkům Azure Service Bus

Spravované identity pro prostředky Azure je funkce mezi Azure, která umožňuje vytvořit zabezpečenou identitu přidruženou k nasazení, pod kterým běží kód vaší aplikace. Pak můžete k této identitě přidružit role řízení přístupu, které udělují vlastní oprávnění pro přístup ke konkrétním prostředkům Azure, které vaše aplikace potřebuje.

S využitím spravovaných identit spravuje tuto identitu modulu runtime platforma Azure. Přístupové klíče není nutné ukládat a chránit v kódu nebo konfiguraci aplikace, a to buď pro samotnou identitu, nebo pro prostředky, ke které potřebujete přístup. Klientská Service Bus aplikace spuštěná v aplikaci Azure App Service nebo na virtuálním počítači s povolenými spravovanými entitami pro prostředky Azure nemusí zpracovávat pravidla a klíče SAS ani žádné jiné přístupové tokeny. Klientská aplikace potřebuje pouze adresu koncového bodu oboru Service Bus zasílání zpráv. Když se aplikace připojí, Service Bus sváže kontext spravované entity s klientem v operaci, která je znázorněna v příkladu dále v tomto článku. Jakmile je aplikace přidružená ke spravované identitě, Service Bus může provádět všechny autorizované operace. Autorizace se uděluje přidružením spravované entity k Service Bus rolím.

Přehled

Když se objekt zabezpečení (uživatel, skupina nebo aplikace) pokusí o přístup k Service Bus entitě, musí být žádost autorizována. S Azure AD je přístup k prostředku dvoukrokový proces.

  1. Nejprve se ověří identita objektu zabezpečení a vrátí se token OAuth 2.0. Název prostředku pro vyžádání tokenu je https://servicebus.azure.net .
  2. Dále se token předá jako součást požadavku službě Service Bus k autorizaci přístupu k zadanému prostředku.

Krok ověřování vyžaduje, aby žádost aplikace za běhu obsahuje přístupový token OAuth 2.0. Pokud je aplikace spuštěná v rámci entity Azure, jako je virtuální počítač Azure, škálovací sada virtuálních počítačů nebo aplikace Funkcí Azure, může pro přístup k prostředkům použít spravovanou identitu.

Krok autorizace vyžaduje, aby k objektu zabezpečení byla přiřazena jedna nebo více rolí Azure. Azure Service Bus poskytuje role Azure, které zahrnují sady oprávnění pro Service Bus prostředky. Role přiřazené k objektu zabezpečení určují oprávnění, která bude mít objekt zabezpečení. Další informace o přiřazování rolí Azure k Azure Service Bus najdete v tématu Předdefinované role Azure pro Azure Service Bus.

Nativní aplikace a webové aplikace, které zažádá o Service Bus, se také mohou autorizovat pomocí Azure AD. Tento článek popisuje, jak požádat o přístupový token a použít ho k autorizaci požadavků na Service Bus prostředky.

Přiřazení rolí Azure pro přístupová práva

Azure Active Directory (Azure AD) autorizuje přístupová práva k zabezpečeným prostředkům prostřednictvím řízení přístupu na základě role v Azure (Azure RBAC). Azure Service Bus definuje sadu předdefinované role Azure, které zahrnují běžné sady oprávnění používané pro přístup k entitám Service Bus Service Bus můžete také definovat vlastní role pro přístup k datům.

Když je k objektu zabezpečení Azure AD přiřazená role Azure, Azure pro tento objekt zabezpečení udělí přístup k těmito prostředkům. Přístup může být vymezený úrovní předplatného, skupiny prostředků nebo oboru názvů Service Bus prostředků. Objekt zabezpečení Azure AD může být uživatel, skupina, aplikační objekt služby nebo spravovaná identita pro prostředky Azure.

Předdefinované role Azure pro Azure Service Bus

Pro Azure Service Bus je správa oborů názvů a všech souvisejících prostředků prostřednictvím rozhraní Azure Portal a rozhraní API pro správu prostředků Azure už chráněná pomocí modelu Azure RBAC. Azure poskytuje následující předdefinované role Azure pro ověřování přístupu k Service Bus oboru názvů:

Obor prostředku

Než objektu zabezpečení přiřadíte roli Azure, určete rozsah přístupu, který má objekt zabezpečení mít. Osvědčené postupy přikují, že je vždy nejlepší udělit pouze co nejužší možný rozsah.

Následující seznam popisuje úrovně, na kterých můžete nastavit rozsah přístupu k Service Bus, počínaje nejužším oborem:

  • Fronta, téma nebo odběr: Přiřazení role se vztahuje na konkrétní Service Bus entity. V současné Azure Portal nepodporuje přiřazování uživatelů, skupin nebo spravovaných identit k Service Bus Azure na úrovni předplatného. Tady je příklad použití příkazu Azure CLI: az-role-assignment-create k přiřazení identity k Service Bus Azure:

    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 oboru názvů: Přiřazení role zahrnuje celou topologii Service Bus oboru názvů a do skupiny uživatelů, která je k ní přidružená.

  • Skupina prostředků: Přiřazení role se vztahuje na všechny Service Bus prostředky v rámci skupiny prostředků.

  • Předplatné: Přiřazení role se vztahuje na Service Bus prostředků ve všech skupinách prostředků v předplatném.

Poznámka

Mějte na paměti, že rozšíření přiřazení rolí Azure může trvat až pět minut.

Další informace o tom, jak jsou definovány předdefinované role, najdete v tématu Principy definic rolí. Informace o vytváření vlastních rolí Azure najdete v tématu Vlastní role Azure.

Povolení spravovaných identit na virtuálním počítači

Než budete moci používat spravované identity pro prostředky Azure k autorizaci Service Bus prostředků z vašeho virtuálního počítače, musíte na virtuálním počítači nejprve povolit spravované identity pro prostředky Azure. Informace o povolení spravovaných identit pro prostředky Azure najdete v jednom z těchto článků:

Udělení oprávnění spravované identitě v Azure AD

Pokud chcete autorizovat požadavek na Service Bus identity ze spravované identity ve vaší aplikaci, nejprve nakonfigurujte nastavení řízení přístupu na základě role v Azure (Azure RBAC) pro spravovanou identitu. Azure Service Bus definuje role Azure, které zahrnují oprávnění pro odesílání a čtení z Service Bus. Když je role Azure přiřazená spravované identitě, spravované identitě se udělí přístup Service Bus entitám v příslušném oboru.

Další informace o přiřazování rolí Azure najdete v tématu Ověřování a autorizace pomocí Azure Active Directory pro přístup k Service Bus prostředkům.

Použití Service Bus spravovanými identitami pro prostředky Azure

Pokud chcete Service Bus spravovanými identitami, musíte identitě přiřadit roli a příslušný obor. Postup v této části používá jednoduchou aplikaci, která běží pod spravovanou identitou a přistupuje k Service Bus prostředkům.

Tady používáme ukázkovou webovou aplikaci hostovanou v Azure App Service. Podrobné pokyny k vytvoření webové aplikace najdete v tématu Vytvoření webové aplikace ASP.NET Core Azure.

Po vytvoření aplikace postupujte takto:

  1. Přejděte na Nastavení a vyberte Identita.

  2. Vyberte Stav, který má být On.

  3. Vyberte Uložit a nastavení se uloží.

    Spravovaná identita pro webovou aplikaci

Po povolení tohoto nastavení se ve vaší službě Azure Active Directory (Azure AD) vytvoří nová identita služby a nakonfiguruje se na App Service hostitele.

Přiřazení rolí Azure pomocí Azure Portal

Přiřaďte jednu z Service Bus identitě spravované služby v požadovaném oboru (Service Bus oboru názvů, skupiny prostředků, předplatného). Podrobný postup najdete v tématu Přiřazení rolí Azure pomocí Azure Portal.

Poznámka

Seznam služeb, které podporují spravované identity, najdete v tématu Služby, které podporují spravované identity pro prostředky Azure.

Spuštění aplikace

Teď upravte výchozí stránku aplikace, ASP.NET jste vytvořili. Můžete použít kód webové aplikace z tohoto GitHub úložiště.

Stránka Default.aspx je vaší úvodní stránkou. Kód najdete v souboru Default.aspx.cs. Výsledkem je minimální webová aplikace s několika vstupními poli a tlačítky pro odesílání a příjem, která se připojují k Service Bus k odesílání nebo příjmu zpráv.

Všimněte si, jak je objekt ServiceBusClient inicializován pomocí konstruktoru, který přebírá TokenCredential. DefaultAzureCredential se odvozuje z TokenCredential a je možné ho předat tady. V takovém případě neexistují žádné tajné kódy, které by bylo třeba uchovávat a používat. Tok kontextu spravované identity pro Service Bus a ověřování handshake se automaticky zpracovávají pomocí přihlašovacích údajů tokenu. Jedná se o jednodušší model než použití SAS.

Po provedení těchto změn publikujte a spusťte aplikaci. Správná data publikování snadno získáte stažením a importem profilu publikování v Visual Studio:

Získání profilu publikování

Pokud chcete odesílat nebo přijímat zprávy, zadejte název oboru názvů a název entity, kterou jste vytvořili. Potom klikněte na odeslat nebo přijmout.

Poznámka

  • Spravovaná identita funguje jenom v prostředí Azure, ve službách App Services, virtuálních počítačůch Azure a škálovacích sadách. Pro aplikace .NET poskytuje knihovna Microsoft.Azure.Services.AppAuthentication, kterou používá balíček Service Bus NuGet, abstrakci tohoto protokolu a podporuje místní vývojové prostředí. Tato knihovna také umožňuje testovat kód místně na vývojovém počítači pomocí uživatelského účtu z Visual Studio, Azure CLI 2.0 nebo integrovaného ověřování Active Directory. Další informace o místních možnostech vývoje v této knihovně najdete v tématu Ověřování mezi službou a Azure Key Vault pomocí rozhraní .NET.

Další kroky

další informace o Service Bus zasílání zpráv najdete v následujících tématech: