Бөлісу құралы:


Проверка подлинности управляемого удостоверения с помощью идентификатора Microsoft Entra для доступа к ресурсам Служебная шина Azure

Управляемые удостоверения для ресурсов Azure предоставляют службам Azure автоматически управляемое удостоверение, которое хранится в Microsoft Entra ID. Это удостоверение можно использовать для проверки подлинности в любой службе, например Служебная шина Azure, которая поддерживает проверку подлинности Microsoft Entra, не имея учетных данных в коде. Если вы не знакомы с управляемыми удостоверениями, ознакомьтесь с управляемыми удостоверениями для ресурсов Azure, прежде чем продолжить чтение этой статьи.

Ниже приведены общие шаги по использованию управляемого удостоверения для доступа к сущности служебная шина:

  1. Включите управляемое удостоверение для клиентского приложения или среды. Например, включите управляемое удостоверение для приложения службы приложение Azure, приложения Функции Azure или виртуальной машины, в которой работает ваше приложение. Ниже приведены статьи, которые помогут вам выполнить этот шаг:

  2. Назначение роли Служебная шина Azure владельца данных, Служебная шина Azure отправителя данных или Служебная шина Azure приемнику данных управляемому удостоверению в соответствующей области (подписка Azure, группа ресурсов, пространство имен служебная шина или служебная шина очередь или раздел). Инструкции по назначению роли управляемому удостоверению см. в статье "Назначение ролей Azure с помощью портал Azure".

  3. В приложении используйте управляемое удостоверение и конечную точку для служебная шина пространства имен для подключения к пространству имен.

    Например, в .NET используется конструктор ServiceBusClient, который принимает TokenCredential и fullyQualifiedNamespace (например, строка) cotosons.servicebus.windows.netдля подключения к служебная шина с помощью управляемого удостоверения. Вы передаете значение DefaultAzureCredential, которое является производным от TokenCredential управляемого удостоверения и использует его. В DefaultAzureCredentialOptionsполе задайте ManagedIdentityClientId идентификатор управляемого удостоверения клиента.

    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);
    

    Внимание

    Вы можете отключить локальную или SAS-проверку подлинности для пространства имен служебная шина и разрешить только проверку подлинности Microsoft Entra. Пошаговые инструкции см. в разделе Отключение локальной проверки подлинности.

Встроенные роли Azure для служебной шины Azure

Microsoft Entra разрешает доступ к защищенным ресурсам с помощью управления доступом на основе ролей Azure (RBAC). Служебная шина Azure определяет набор встроенных ролей Azure, охватывающих общие наборы разрешений, используемых для доступа к сущностям служебная шина. Вы также можете определить настраиваемые роли для доступа к данным.

Azure предоставляет следующие встроенные роли Azure для авторизации доступа к пространству имен служебная шина:

Чтобы назначить роль управляемому удостоверению в портал Azure, используйте страницу управления доступом (IAM). Перейдите на эту страницу, выбрав элемент управления доступом (IAM) на странице пространства имен служебная шина или страницу очереди служебная шина или страницу раздела служебная шина. Пошаговые инструкции по назначению роли см. в разделе "Назначение ролей Azure" с помощью портал Azure.

Область ресурса

Перед назначением роли Azure управляемому удостоверению определите область доступа, которую должен иметь управляемое удостоверение. Рекомендуется всегда предоставлять максимально узкие области.

В следующем списке описаны уровни, на которых вы можете ограничить доступ к ресурсам служебной шины, начиная с самой узкой области:

  • Очередь, тема или подписка: назначение роли применяется к определенному объекту служебной шины.

  • служебная шина пространстве имен: назначение ролей охватывает всю топологию служебная шина в пространстве имен.

  • Группа ресурсов: назначение ролей применяется ко всем ресурсам служебной шины в группе ресурсов.

  • Подписка: назначение ролей применяется ко всем ресурсам служебной шины во всех группах ресурсов в подписке.

    Примечание.

    Имейте в виду, что назначение ролей Azure может занять до пяти минут.

В настоящее время портал Azure не поддерживает назначение пользователей, групп или управляемых удостоверений для служебная шина ролей Azure на уровне подписки раздела. Ниже приведен пример использования команды Azure CLI: az-role-assignment-create для назначения удостоверения роли Служебной шины 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

Дополнительные сведения об определении встроенных ролей см. в разделе Общие сведения об определениях ролей. Дополнительные сведения о создании настраиваемых ролей Azure см. в разделе Настраиваемые роли Azure.

Использование пакетов SDK

В .NET объект ServiceBusClient инициализируется с помощью конструктора, который принимает полное пространство имен и объект TokenCredential. Производный DefaultAzureCredential от этого, который TokenCredentialавтоматически использует управляемое удостоверение, настроенного для приложения. Поток контекста управляемого удостоверения службы в служебную шину и подтверждение авторизации автоматически обрабатываются учетными данными маркера. Это более простая модель, чем использование SAS.

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

Вы отправляете и получаете сообщения как обычно с помощью ServiceBusSender и ServiceBusReceiver или ServiceBusProcessor.

Полные пошаговые инструкции по отправке и получению сообщений с помощью управляемого удостоверения см. в следующих кратких руководствах. Эти краткие руководства позволяют использовать субъект-службу для отправки и получения сообщений, но код совпадает с использованием управляемого удостоверения.

Примечание.

Управляемое удостоверение работает только в среде Azure, в службах приложений, на виртуальных машинах Azure и масштабируемых наборах. Для приложений .NET библиотека Microsoft.Azure.Services.AppAuthentication, которая используется пакетом NuGet служебной шины, предоставляет абстракцию этого протокола и поддерживает локальную разработку. Эта библиотека также позволяет локально тестировать код на компьютере разработки с использованием учетной записи пользователя из Visual Studio, Azure CLI 2.0 или встроенной проверки подлинности Active Directory. Дополнительные сведения о параметрах локальной разработки с помощью этой библиотеки см. в руководстве по аутентификации между службами в Azure Key Vault с использованием .NET.

Следующие шаги

См. этот пример веб-приложения .NET на сайте GitHub, который использует управляемое удостоверение для подключения к служебная шина для отправки и получения сообщений. Добавьте удостоверение службы приложений в роль владельца данных Служебная шина Azure.