Ověřování a autorizace aplikace pomocí ID Microsoft Entra pro přístup k entitě služby Azure Service Bus

Azure Service Bus podporuje použití Microsoft Entra ID k autorizaci požadavků na entity služby Service Bus (fronty, témata, odběry nebo filtry). S ID Microsoft Entra můžete pomocí řízení přístupu na základě role v Azure (Azure RBAC) udělit oprávnění k objektu zabezpečení, což může být uživatel, skupina, instanční objekt aplikace nebo spravovaná identita pro prostředky Azure. Klíčovou výhodou použití Microsoft Entra ID se službou Azure Service Bus je, že už v kódu nemusíte ukládat svoje přihlašovací údaje. Místo toho můžete požádat o přístupový token OAuth 2.0 z platformy Microsoft Identity Platform. Pokud ověřování proběhne úspěšně, vrátí MICROSOFT Entra ID přístupový token k aplikaci a aplikace pak může použít přístupový token k autorizaci požadavku na prostředky služby Service Bus.

Důležité

Pro obor názvů služby Service Bus můžete zakázat ověřování pomocí místního klíče nebo klíče SAS a povolit pouze ověřování Microsoft Entra. Podrobné pokyny najdete v tématu Zakázání místního ověřování.

Přehled

Když se objekt zabezpečení (uživatel, skupina nebo aplikace) pokusí o přístup k entitě Service Bus, musí být požadavek autorizovaný. S ID Microsoft Entra je přístup k prostředku dvoustupňový 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 za účelem autorizace přístupu k zadanému prostředku.

Krok ověřování vyžaduje, aby žádost aplikace obsahovala přístupový token OAuth 2.0 za běhu. 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 Azure Functions, může pro přístup k prostředkům použít spravovanou identitu. Informace o ověřování požadavků provedených spravovanou identitou ve službě Service Bus najdete v tématu Ověřování přístupu k prostředkům Služby Azure Service Bus pomocí ID Microsoft Entra a spravovaných identit pro prostředky Azure.

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 prostředky služby Service Bus. Role přiřazené k objektu zabezpečení určují oprávnění, která bude objekt zabezpečení mít u prostředků služby Service Bus. Další informace o přiřazování rolí Azure ke službě Azure Service Bus najdete v tématu Předdefinované role Azure pro Azure Service Bus.

Nativní aplikace a webové aplikace, které odesílaly požadavky na Service Bus, můžou také autorizovat pomocí Microsoft Entra ID. V tomto článku se dozvíte, jak požádat o přístupový token a použít ho k autorizaci žádostí o prostředky služby Service Bus.

Předdefinované role Azure pro Azure Service Bus

Microsoft Entra autorizuje přístupová práva k zabezpečeným prostředkům prostřednictvím Azure RBAC. Azure Service Bus definuje sadu předdefinovaných rolí Azure, které zahrnují běžné sady oprávnění používaných pro přístup k entitám služby Service Bus a můžete také definovat vlastní role pro přístup k datům.

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

Pro Službu Azure Service Bus je správa oborů názvů a všech souvisejících prostředků prostřednictvím webu 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 pro autorizaci přístupu k oboru názvů služby Service Bus:

  • Vlastník dat služby Azure Service Bus: Pomocí této role můžete udělit úplný přístup k prostředkům služby Service Bus.
  • Odesílatel dat služby Azure Service Bus: Pomocí této role můžete udělit přístup k oboru názvů služby Service Bus a jeho entitám.
  • Příjemce dat služby Azure Service Bus: Pomocí této role můžete udělit přístup k oboru názvů služby Service Bus a jeho entitám.

Obor prostředku

Před přiřazením role Azure k objektu zabezpečení určete rozsah přístupu, který má mít objekt zabezpečení. Osvědčené postupy určují, že je vždy nejlepší udělit pouze nejužší možný rozsah.

Následující seznam popisuje úrovně, na kterých můžete omezit přístup k prostředkům služby Service Bus, počínaje nejužším oborem:

  • Fronta, téma nebo odběr: Přiřazení role se vztahuje na konkrétní entitu služby Service Bus. Azure Portal v současné době nepodporuje přiřazování uživatelů, skupin nebo spravovaných identit k rolím Azure služby Service Bus na úrovni předplatného.
  • Obor názvů služby Service Bus: Přiřazení role zahrnuje celou topologii služby Service Bus pod oborem názvů a skupinu příjemců přidruženou k ní.
  • Skupina prostředků: Přiřazení role se vztahuje na všechny prostředky služby Service Bus v rámci skupiny prostředků.
  • Předplatné: Přiřazení role se vztahuje na všechny prostředky služby Service Bus 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 definované předdefinované role, najdete v tématu Vysvětlení definic rolí. Informace o vytváření vlastních rolí Azure najdete v tématu Vlastní role Azure.

Ověření z aplikace

Klíčovou výhodou použití Microsoft Entra ID se službou Service Bus je, že vaše přihlašovací údaje už nemusí být uložené ve vašem kódu. Místo toho můžete požádat o přístupový token OAuth 2.0 z platformy Microsoft Identity Platform. Microsoft Entra ověřuje objekt zabezpečení (uživatel, skupina, instanční objekt nebo spravovaná identita pro prostředky Azure) spuštěnou aplikaci. Pokud ověřování proběhne úspěšně, vrátí MICROSOFT Entra ID přístupový token do aplikace a aplikace pak může použít přístupový token k autorizaci požadavků na Azure Service Bus.

V následujících částech se dozvíte, jak nakonfigurovat nativní aplikaci nebo webovou aplikaci pro ověřování pomocí platformy Microsoft Identity Platform 2.0. Další informace o platformě Microsoft Identity Platform 2.0 najdete v přehledu platformy Microsoft Identity Platform (v2.0).

Přehled toku udělení kódu OAuth 2.0 najdete v tématu Autorizace přístupu k webovým aplikacím Microsoft Entra pomocí toku udělení kódu OAuth 2.0.

Registrace aplikace v tenantovi Microsoft Entra

Prvním krokem při použití ID Microsoft Entra k autorizaci entit Service Bus je registrace klientské aplikace v tenantovi Microsoft Entra z webu Azure Portal. Při registraci klientské aplikace zadáte do AD informace o aplikaci. Microsoft Entra ID pak poskytuje ID klienta (označované také jako ID aplikace), které můžete použít k přidružení aplikace k modulu runtime Microsoft Entra. Další informace o ID klienta najdete v tématu Objekty aplikace a instanční objekty v Microsoft Entra ID.

Postupujte podle kroků v rychlém startu : Zaregistrujte aplikaci na platformě Microsoft Identity Platform a zaregistrujte aplikaci pomocí Microsoft Entra ID.

Poznámka:

Pokud aplikaci zaregistrujete jako nativní aplikaci, můžete zadat libovolný platný identifikátor URI pro identifikátor URI přesměrování. U nativních aplikací nemusí být tato hodnota skutečnou adresou URL. U webových aplikací musí být identifikátor URI přesměrování platným identifikátorem URI, protože určuje adresu URL, ke které jsou tokeny k dispozici.

Po registraci aplikace se v části Nastavení zobrazí ID aplikace (klienta) a ID adresáře (tenanta):

Důležité

Poznamenejte si ID tenanta a ID aplikace. Tyto hodnoty budete potřebovat ke spuštění aplikace.

Screenshot showing the App registration page showing the Application ID and Tenant ID.

Další informace o registraci aplikace v Microsoft Entra ID naleznete v tématu Integrace aplikací s Microsoft Entra ID.

Vytvoření tajného klíče klienta

Aplikace potřebuje tajný klíč klienta, aby při žádosti o token mohla prokázat svou identitu. Pokud chcete přidat tajný klíč klienta, postupujte takto.

  1. Pokud ještě nejste na stránce, přejděte k registraci aplikace na webu Azure Portal.

  2. V nabídce vlevo vyberte Certifikáty a tajné kódy .

  3. V části Tajné kódy klienta vyberte Nový tajný klíč klienta a vytvořte nový tajný klíč.

    Screenshot showing the Certificates and secrets page with New client secret button selected.

  4. Zadejte popis tajného klíče a zvolte požadovaný interval vypršení platnosti a pak vyberte Přidat.

    Screenshot showing the Add a client secret page.

  5. Okamžitě zkopírujte hodnotu nového tajného kódu do zabezpečeného umístění. Hodnota výplně se zobrazí jenom jednou.

    Screenshot showing the Client secrets section with the secret you added.

Oprávnění pro rozhraní API služby Service Bus

Pokud je vaše aplikace konzolovou aplikací, musíte zaregistrovat nativní aplikaci a přidat oprávnění rozhraní API pro Microsoft.ServiceBus k požadované sadě oprávnění . Nativní aplikace také potřebují identifikátor URI přesměrování v MICROSOFT Entra ID, který slouží jako identifikátor. Identifikátor URI nemusí být cílem sítě. Tento příklad se používá https://servicebus.microsoft.com , protože vzorový kód už tento identifikátor URI používá.

Přiřazování rolí Azure s využitím webu Azure Portal

Přiřaďte k instančnímu objektu aplikace jednu z rolí Service Bus v požadovaném oboru (obor názvů služby Service Bus, skupina prostředků, předplatné). Podrobný postup najdete v tématu Přiřazování rolí Azure s využitím webu Azure Portal.

Jakmile definujete roli a její obor, můžete toto chování otestovat pomocí ukázky na GitHubu.

Ověřování klienta služby Service Bus

Jakmile zaregistrujete aplikaci a udělíte jí oprávnění k odesílání a přijímání dat ve službě Azure Service Bus, můžete klienta ověřit pomocí přihlašovacích údajů tajných klíčů klienta, což vám umožní provádět požadavky na službu Azure Service Bus.

Seznamscénářůch

Pomocí nejnovější knihovny Azure.Messaging.ServiceBus můžete ověřit ServiceBusClient pomocí ClientSecretCredential, která je definovaná v knihovně Azure.Identity .

TokenCredential credential = new ClientSecretCredential("<tenant_id>", "<client_id>", "<client_secret>");
var client = new ServiceBusClient("<fully_qualified_namespace>", credential);

Pokud používáte starší balíčky .NET, prohlédni si ukázky RoleBasedAccessControl v úložišti ukázek azure-service-bus.

Další kroky

Pokud se o přenosu zpráv přes Service Bus chcete dozvědět víc, pročtěte si následující témata.