Použití spravovaných identit pro přístup k prostředkům Azure Service Bus

Spravované identity pro prostředky Azure umožňují vaší aplikaci ověřit Azure Service Bus bez uložení přihlašovacích údajů do kódu. Azure automaticky zpracovává identitu a její přihlašovací údaje za vás.

Ukládání přihlašovacích údajů v kódu vytváří rizika zabezpečení a režijní náklady na údržbu. Spravované identity eliminují tyto obavy tím, že poskytují automatickou správu přihlašovacích údajů prostřednictvím Microsoft Entra ID.

V tomto článku se dozvíte, jak nakonfigurovat ověřování spravované identity pro Service Bus, aby vaše aplikace dokázala bezpečně odesílat a přijímat zprávy bez pevně zakódovaných přihlašovacích údajů.

Předpoklady

Pokud chcete používat spravované identity se službou Azure Service Bus, potřebujete:

Pro obor názvů služby Service Bus můžete zakázat ověřování místního nebo sdíleného přístupového podpisu (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řiřazení role Service Bus ke spravované identitě

Microsoft Entra autorizuje přístup k zabezpečeným prostředkům prostřednictvím řízení přístupu na základě role v Azure (RBAC). Azure Service Bus poskytuje předdefinované role Azure, které zahrnují běžné sady oprávnění pro přístup k entitám služby Service Bus. Můžete také definovat vlastní role.

Následující tabulka uvádí předdefinované role Azure pro autorizaci přístupu k oboru názvů služby Service Bus:

Úloha Description
Vlastník dat služby Azure Service Bus Úplný přístup k oboru názvů služby Service Bus a jeho entitám (fronty, témata, odběry a filtry)
Odesílatel dat služby Azure Service Bus Schopnost odesílat zprávy do front a témat služby Service Bus
Příjemce dat služby Azure Service Bus Možnost přijímat zprávy z front a odběrů služby Service Bus

Pochopit úrovně rozsahu RBAC služby Service Bus

Než přiřadíte roli Azure, určete rozsah přístupu, který spravovaná identita potřebuje. Udělte 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 tématu: Přiřazení role se vztahuje pouze na danou entitu zasílání zpráv.
  • Obor názvů služby Service Bus: Přiřazení role zahrnuje celou topologii služby Service Bus pod oborem názvů.
  • Skupina prostředků: Přiřazení role se vztahuje na všechny prostředky služby Service Bus v rámci skupiny prostředků.
  • Azure předplatné: Přiřazení rolí platí pro všechny zdroje služby Service Bus ve všech skupinách zdrojů v Azure předplatném.

Rozšíření přiřazení rolí Azure může trvat až pět minut.

Přiřazení role spravované identitě na webu Azure Portal

  1. Přejděte do oboru názvů, fronty nebo tématu služby Service Bus.

  2. V nabídce vlevo vyberte Řízení přístupu (IAM).

  3. Vyberte Přidat>Přiřadit roli.

  4. Na kartě Role vyberte příslušnou datovou roli služby Service Bus.

  5. Na kartě Členové vyberte Spravovaná identita>Vybrat členy.

  6. Vyberte spravovanou identitu pro prostředek Azure.

  7. Vyberte Review + assign.

Další informace najdete v tématu Přiřazení rolí Azure pomocí Azure portálu.

Přiřazení role pomocí Azure CLI

Azure Portal nepodporuje přiřazování spravovaných identit k rolím služby Service Bus na úrovni předplatného tématu. Pomocí příkazu az role assignment create v Azure CLI přiřaďte roli v libovolném oboru:

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

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

Poznámka:

Pokud se zdrojová služba nebo aplikace nerestartuje po odebrání spravované identity z role RBAC služby Service Bus, může zdrojová aplikace dál odesílat nebo přijímat zprávy do nebo z entity služby Service Bus, dokud nevyprší platnost tokenu. (Výchozí platnost tokenu je 24 hodin.) Toto chování je záměrně.

Po odebrání spravované identity zdroje z role RBAC restartujte zdrojovou aplikaci nebo službu, aby platnost tokenu okamžitě vypršela a zabránila jejímu odesílání nebo příjmu zpráv z entity Service Bus.

Připojte se ke službě Service Bus pomocí spravované identity v Sady Azure SDK

Sady Azure SDK pro .NET, Java, JavaScript a Python podporují ověřování spravovaných identit pomocí služby Service Bus. Následující příklad ukazuje, jak se připojit pomocí sady .NET SDK.

V .NET je objekt ServiceBusClient inicializován pomocí konstruktoru, který přebírá plně kvalifikovaný obor názvů a přihlašovací údaje tokenu (TokenCredential). DefaultAzureCredential je odvozen od TokenCredential, který automaticky používá spravovanou identitu nakonfigurovanou pro aplikaci. Přihlašovací údaje tokenu automaticky zpracovávají tok kontextu spravované identity do služby Service Bus a metodu handshake autorizace. Jedná se o jednodušší model než použití SAS.

var client = new ServiceBusClient("contoso.servicebus.windows.net", new DefaultAzureCredential());

Odesílat a přijímat zprávy obvyklým způsobem pomocí ServiceBusSender a ServiceBusReceiver nebo ServiceBusProcessor.

Podrobné pokyny k odesílání a příjmu zpráv pomocí spravované identity najdete v následujících rychlých startech. Tyto úvodní příklady obsahují kód pro použití služebního účtu k odesílání a příjímání zpráv, ale kód je stejný i pro použití spravované identity.

Poznámka:

Spravované identity fungují jenom v prostředí Azure, ve službě Azure App Service, virtuálních počítačích Azure a škálovacích sadách. Pro .NET aplikace poskytuje knihovna Microsoft.Azure.Services.AppAuthentication (používaná balíčkem NuGet Service Bus) abstrakci tohoto protokolu a podporuje místní vývoj. Kód můžete místně otestovat pomocí uživatelského účtu z Visual Studio, Azure CLI nebo integrovaného ověřování Microsoft Entra. Další informace najdete v tématu Klientská knihovna pro ověřování aplikací pro .NET.