Sdílet prostřednictvím


Ověření spravované identity pomocí ID Microsoft Entra pro přístup k prostředkům služby Azure Service Bus

Spravované identity pro prostředky Azure poskytují službám Azure automaticky spravovanou identitu v Microsoft Entra ID. Tuto identitu můžete použít k ověření v jakékoli službě, jako je Azure Service Bus, která podporuje ověřování Microsoft Entra, aniž byste v kódu museli mít přihlašovací údaje. Pokud nemáte zkušenosti se spravovanými identitami, přečtěte si informace o spravovaných identitách pro prostředky Azure, než budete pokračovat v tomto článku.

Tady jsou základní kroky pro použití spravované identity pro přístup k entitě služby Service Bus:

  1. Povolte spravovanou identitu pro vaši klientskou aplikaci nebo prostředí. Můžete například povolit spravovanou identitu pro aplikaci Aplikace Azure Service, aplikaci Azure Functions nebo virtuální počítač, ve kterém je vaše aplikace spuštěná. Tady jsou články, které vám pomůžou s tímto krokem:

  2. Přiřaďte roli vlastníka dat služby Azure Service Bus, odesílatele dat služby Azure Service Bus nebo roli příjemce dat služby Azure Service Bus v příslušném oboru (předplatné Azure, skupina prostředků, obor názvů služby Service Bus nebo fronta nebo téma služby Service Bus). Pokyny k přiřazení role spravované identitě najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal.

  3. Ve vaší aplikaci použijte spravovanou identitu a koncový bod k oboru názvů služby Service Bus pro připojení k oboru názvů.

    Například v .NET použijete konstruktor ServiceBusClient , který přebírá TokenCredential parametry a fullyQualifiedNamespace (například řetězec) cotosons.servicebus.windows.netpro připojení ke službě Service Bus pomocí spravované identity. Předáte DefaultAzureCredential, která je odvozena a TokenCredential používá spravovanou identitu. V DefaultAzureCredentialOptionsčásti nastavte ManagedIdentityClientId ID spravované identity klienta.

    string fullyQualifiedNamespace = "<your namespace>.servicebus.windows.net>";
    string userAssignedClientId = "<your managed identity client ID>";
    
    var credential = new DefaultAzureCredential(
        new DefaultAzureCredentialOptions
        {
            ManagedIdentityClientId = userAssignedClientId
        });
    
    var sbusClient = new ServiceBusClient(fullyQualifiedNamespace, credential);
    

    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ředdefinované role Azure pro Azure Service Bus

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 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. Můžete také definovat vlastní role pro přístup k datům.

Azure poskytuje následující předdefinované role Azure 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 povolit ú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: Pomocí této role můžete povolit odesílání zpráv do front a témat služby Service Bus.
  • Příjemce dat služby Azure Service Bus: Tuto roli použijte k povolení příjmu zpráv z front a odběrů služby Service Bus.

Pokud chcete přiřadit roli spravované identitě na webu Azure Portal, použijte stránku Řízení přístupu (IAM). Na tuto stránku přejděte výběrem řízení přístupu (IAM) na stránce Namespace služby Service Bus nebo na stránce fronty služby Service Bus nebo na stránce tématu služby Service Bus. Podrobné pokyny k přiřazení role najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal.

Obor prostředku

Než přiřadíte roli Azure spravované identitě, určete rozsah přístupu, který má mít spravovaná identita. 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.

  • 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ů.

  • 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.

Azure Portal v současné době nepodporuje přiřazování uživatelů, skupin ani spravovaných identit k rolím Azure Service Bus na úrovni předplatného tématu. Tady je příklad použití příkazu Azure CLI: az-role-assignment-create k přiřazení identity k roli Azure Service Bus:

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í. Informace o vytváření vlastních rolí Azure najdete v tématu Vlastní role Azure.

S využitím sad SDK

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

var client = new ServiceBusClient('cotosons.servicebus.windows.net', new DefaultAzureCredential());

Zprávy odesíláte a přijímáte obvyklým způsobem pomocí ServiceBusSender a ServiceBusReceiver nebo ServiceBusProcessor.

Úplné podrobné pokyny k odesílání a příjmu zpráv pomocí spravované identity najdete v následujících rychlých startech. Tyto rychlé starty obsahují kód pro odesílání a příjem zpráv pomocí instančního objektu, ale kód je stejný pro použití spravované identity.

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, která je používána balíčkem NuGet služby Service Bus, abstrakci tohoto protokolu a podporuje místní vývojové prostředí. Tato knihovna vám také umožňuje otestovat kód místně na vývojovém počítači pomocí uživatelského účtu ze sady 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žbami ve službě Azure Key Vault pomocí .NET.

Další kroky

Podívejte se na tuto ukázku webové aplikace .NET na GitHubu, která používá spravovanou identitu pro připojení ke službě Service Bus k odesílání a přijímání zpráv. Přidejte identitu služby App Service do role Vlastník dat služby Azure Service Bus.