Используйте управляемые удостоверения для доступа к ресурсам Служебная шина Azure

Управляемые удостоверения для ресурсов Azure позволяют приложению проходить проверку подлинности в Служебная шина Azure без хранения учетных данных в коде. Azure автоматически управляет удостоверением и его учетными данными для вас.

Хранение учетных данных в коде создает риски безопасности и затраты на обслуживание. Управляемые удостоверения устраняют эти проблемы, предоставляя автоматическое управление учетными данными с помощью Microsoft Entra ID.

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

Необходимые условия

Чтобы использовать управляемые удостоверения с Служебная шина Azure, вам потребуется:

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

Назначьте роль служебная шина управляемому удостоверению

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

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

Роль Описание
Владелец данных служебной шины Azure Полный доступ к пространству имен служебная шина и его сущностям (очереди, темы, подписки и фильтры)
Отправитель данных Служебной шины Azure Возможность отправки сообщений в очереди и топики служебная шина
Приемник данных служебной шины Azure Возможность получать сообщения из очередей и подписок служебной шины

Общие сведения о уровнях области RBAC служебная шина

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

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

  • Очередь, тема или подписка на тему: назначение ролей применяется только к определенной сущности обмена сообщениями.
  • Пространство имён службы шины: Назначение ролей охватывает всю топологию службы шины в пространстве имён.
  • Группа ресурсов: назначение ролей применяется ко всем ресурсам службы служебная шина в данной группе ресурсов.
  • подписка Azure. Назначение ролей применяется ко всем ресурсам служебная шина во всех группах ресурсов в подписке Azure.

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

Назначение роли управляемой идентичности в портале Azure

  1. Перейдите в пространство имен служебная шина, очередь или тему.

  2. В меню слева выберите элемент управления доступом (IAM).

  3. Выберите Добавить>Добавить назначение ролей.

  4. На вкладке "Роль" выберите соответствующую роль данных служебной шины.

  5. На вкладке "Участники" выберите "Управляемое удостоверение">Выбрать участников.

  6. Выберите управляемое удостоверение для ресурса Azure.

  7. Выберите кнопку Проверить + назначить.

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

Назначение роли с помощью Azure CLI

Портал Azure не поддерживает назначение управляемых удостоверений ролям служебная шина на уровне подписки на темы. Используйте команду Azure CLI az role assignment create, чтобы назначить роль в любой области:

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 см. в разделе Настраиваемые роли Azure.

Примечание.

Если исходная служба или приложение не перезапускаются после удаления управляемого удостоверения из роли RBAC в служебная шина, исходное приложение может продолжать отправлять или получать сообщения в этой служебной шине до истечения срока действия токена. (Срок действия маркера по умолчанию — 24 часа.) Это поведение выполняется по проектированию.

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

Подключение к служебная шина с помощью управляемой идентификации в SDK Azure

Пакеты SDK Azure для .NET, Java, JavaScript и Python поддерживают проверку подлинности управляемого удостоверения с помощью служебная шина. В следующем примере показано, как подключиться с помощью пакета SDK для .NET.

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

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

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

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

Примечание.

Управляемые удостоверения работают только в среде Azure, в службе приложений Azure, виртуальных машинах Azure и масштабируемых наборах. Для приложений .NET библиотека Microsoft.Azure.Services.AppAuthentication (используемая пакетом NuGet служебная шина) предоставляет абстракцию по этому протоколу и поддерживает локальную разработку. Вы можете протестировать код локально с помощью учетной записи пользователя из Visual Studio, Azure CLI или Microsoft Entra интегрированной проверки подлинности. Дополнительные сведения см. в клиентской библиотеке App Authentication для .NET.