Проверка подлинности и авторизация с помощью идентификатора Microsoft Entra

В этой статье описывается проверка подлинности Сетка событий Azure клиентов публикации с помощью идентификатора Microsoft Entra.

Обзор

Платформа удостоверений Майкрософт предоставляет встроенную проверку подлинности и управление доступом для ресурсов и приложений, использующих идентификатор Microsoft Entra в качестве поставщика удостоверений. Используйте платформа удостоверений Майкрософт для предоставления поддержки проверки подлинности и авторизации в приложениях. Она основана на открытых стандартах, таких как OAuth 2.0 и OpenID Connect, а также предоставляет инструменты и библиотеки с открытым кодом, поддерживающие множество стандартов проверки подлинности. Он предоставляет расширенные возможности, такие как условный доступ, позволяющий задавать политики, которые, к примеру, требуют использовать многофакторную проверку подлинности или разрешают доступ из конкретных расположений.

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

Управление доступом на основе ролей (RBAC) позволяет настроить авторизацию таким образом, чтобы у определенных субъектов безопасности (удостоверений для пользователей, групп или приложений) были определенные разрешения для выполнения операций с ресурсами Azure. Таким образом, с субъектом безопасности, используемым клиентским приложением, которое отправляет события в сетку событий, должна быть связана роль RBAC Отправитель данных EventGrid.

Субъекты безопасности

Есть две общие категории субъектов-служб, относящиеся к проверке подлинности в клиенте публикации Event Grid.

  • Управляемые удостоверения. Управляемое удостоверение может быть назначено системой (оно включается в ресурсе Azure и связано только с этим ресурсом) или пользователем (создается и именуется в явном виде). Управляемые удостоверения, назначаемые пользователем, можно связывать с несколькими ресурсами.
  • Субъект безопасности приложения. Это тип субъекта безопасности, представляющего приложение, которое обращается к ресурсам, защищенным идентификатором Microsoft Entra.

Независимо от используемого субъекта безопасности управляемого удостоверения или субъекта безопасности приложений клиент использует это удостоверение для проверки подлинности до идентификатора Microsoft Entra и получения маркера доступа OAuth 2.0, который отправляется с запросами при отправке событий в Сетку событий. На этот маркер ставится криптографическая подпись, и когда Сетка событий получает его, маркер проходит проверку. Помимо прочего, проверяется, является ли Сетка событий (https://eventgrid.azure.net) аудиторией (предполагаемым получателем маркера). Маркер содержит сведения об удостоверении клиента. Сетка событий получает это удостоверение и проверяет, назначена ли клиенту роль Отправитель данных EventGrid. Точнее, Сетка событий проверяет, есть ли у удостоверения разрешение Microsoft.EventGrid/events/send/action в роли RBAC, связанной с этим удостоверением, прежде чем разрешать выполнение запроса на публикацию события.

Если вы используете пакет SDK Сетки событий, то вам не нужно беспокоиться о тонкостях того, как реализовать получение маркеров доступа и как включать их в каждый запрос к Сетке событий, так как пакеты SDK плоскости данных для Сетки событий делают это автоматически.

Действия по настройке клиента для использования проверки подлинности Microsoft Entra

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

  1. Создайте и используйте субъект безопасности, который требуется использовать для проверки подлинности. Вы можете использовать управляемое удостоверение или субъект безопасности приложения.
  2. Предоставьте субъекту безопасности разрешение на публикацию событий, назначив ему роль Отправитель данных EventGrid.
  3. Используйте пакет SDK Сетки событий для публикации событий в Сетке событий.

Проверка подлинности с помощью управляемого удостоверения

Управляемые удостоверения — это удостоверения, связанные с ресурсами Azure. Управляемые удостоверения предоставляют удостоверение, используемое приложениями при использовании ресурсов Azure, поддерживающих проверку подлинности Microsoft Entra. Приложения могут использовать управляемое удостоверение ресурса размещения, например виртуальной машины или службы приложение Azure, для получения маркеров Microsoft Entra, представленных запросом при публикации событий в Сетке событий. При подключении приложения Сетка событий привязывает контекст управляемой сущности к клиенту. После связывания с управляемым удостоверением клиент публикации Сетки событий может выполнять все разрешенные операции. Разрешение предоставляется путем связывания управляемой сущности с ролью RBAC Сетки событий.

Управляемое удостоверение предоставляет службы Azure с автоматически управляемым удостоверением в идентификаторе Microsoft Entra. В отличие от других способов проверки подлинности, вам не нужно хранить и защищать в коде или конфигурации приложения ключи доступа или подписанные URL-адреса (SAS) ни для самого удостоверения, ни для ресурсов, к которым вам нужно получить доступ.

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

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

Проверка подлинности с помощью субъекта безопасности клиентского приложения

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

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

Примечание.

При регистрации приложения на портале объект приложения и субъект-служба автоматически создаются в домашнем клиенте. Кроме того, вы можете зарегистрировать приложение с помощью Microsot Graph. Однако если вы регистрируете или создаете приложение с помощью API Microsoft Graph, создание объекта субъекта-службы выполняется на отдельном этапе.

Назначение субъекту безопасности разрешения на публикацию событий

Удостоверению, используемому для публикации событий в Сетке событий, должно быть назначено разрешение Microsoft.EventGrid/events/send/action, позволяющее отправлять события в Сетку событий. Это разрешение включается в встроенную роль RBAC-отправителя данных сетки событий. Эта роль может быть назначена субъекту безопасности для заданной область, которая может быть группой управления, подпиской Azure, группой ресурсов или определенным разделом сетки событий, доменом или пространством имен партнера. Следуйте инструкциям из статьи Назначение ролей Azure, чтобы назначить субъекту безопасности роль Отправитель данных EventGrid и таким образом предоставить приложению, использующему этот субъект безопасности, права доступа для отправки событий. Вы также можете определить настраиваемую роль, включающую разрешение Microsoft.EventGrid/events/send/action, и назначить эту настраиваемую роль субъекту безопасности.

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

Примечание.

Сетка событий поддерживает роли RBAC не только для отправки событий. Дополнительные сведения см. в разделе Встроенные роли Сетки событий.

Публикация событий с помощью пакетов SDK клиента Сетки событий

Используйте пакет SDK плоскости данных для Сетки событий, чтобы публиковать события в Сетке событий. Пакет SDK сетки событий поддерживает все методы проверки подлинности, включая проверку подлинности Microsoft Entra.

Ниже приведен пример кода, который публикует события в сетке событий с помощью пакета SDK для .NET. Вы можете получить конечную точку раздела на странице "Обзор" для раздела "Сетка событий" в портал Azure. Она имеет формат https://<TOPIC-NAME>.<REGION>-1.eventgrid.azure.net/api/events.

ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredential();
EventGridPublisherClient client = new EventGridPublisherClient( new Uri("<TOPIC ENDPOINT>"), managedIdentityCredential);


EventGridEvent egEvent = new EventGridEvent(
        "ExampleEventSubject",
        "Example.EventType",
        "1.0",
        "This is the event data");

// Send the event
await client.SendEventAsync(egEvent);

Необходимые компоненты

Ниже приведены предварительные требования для проверки подлинности в Сетке событий.

Публикация событий с помощью проверки подлинности Microsoft Entra

Для отправки событий в раздел, домен или пространство имен партнеров можно создать клиент описанным ниже способом. Версия API, которая впервые предоставила поддержку проверки подлинности 2018-01-01Microsoft Entra. Используйте в своем приложении эту или более позднюю версию API.

Пример:

Этот фрагмент кода C# создает клиент издателя сетки событий с помощью приложения (субъекта-службы) с секретом клиента, чтобы включить метод DefaultAzureCredential, который необходимо добавить библиотеку Azure.Identity. Если вы используете официальный пакет SDK, пакет SDK обрабатывает версию для вас.

Environment.SetEnvironmentVariable("AZURE_CLIENT_ID", "");
Environment.SetEnvironmentVariable("AZURE_TENANT_ID", "");
Environment.SetEnvironmentVariable("AZURE_CLIENT_SECRET", "");

EventGridPublisherClient client = new EventGridPublisherClient(new Uri("your-event-grid-topic-domain-or-partner-namespace-endpoint"), new DefaultAzureCredential());

Дополнительные сведения см. в следующих статьях:

Отключение проверки подлинности на основе ключей и подписанных URL-адресов

Проверка подлинности Microsoft Entra обеспечивает более высокую поддержку проверки подлинности, чем это предоставляется ключом доступа или проверкой подлинности маркера ПОДПИСАННОГО URL-адреса (SAS). При проверке подлинности Microsoft Entra удостоверение проверяется с помощью поставщика удостоверений Microsoft Entra. Разработчику не придется обрабатывать ключи в коде, если вы используете проверку подлинности Microsoft Entra. Вы также сможете воспользоваться всеми функциями безопасности, встроенными в платформу удостоверений Майкрософт, например условный доступ , который поможет улучшить позицию в области безопасности приложения.

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

Примечание.

Проверка подлинности на основе ключей доступа или маркеров SAS — это один из видов локальной аутентификации. Иногда вы услышите ссылку на "локальную проверку подлинности" при обсуждении этой категории механизмов проверки подлинности, которые не используют идентификатор Microsoft Entra. Параметр API, с помощью которого можно отключить локальную аутентификацию, носит соответствующее название disableLocalAuth.

Портал Azure

При создании нового раздела можно отключить локальную проверку подлинности на вкладке Дополнительно на странице Создание раздела.

Screenshot showing the Advanced tab of Create Topic page when you can disable local authentication.

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

  1. Перейдите на страницу раздела сетки событий для раздела и выберите Включено для параметра Локальная проверка подлинности.

    Screenshot showing the Overview page of an existing topic.

  2. Во всплывающем окне Локальная проверка подлинности выберите Отключенои нажмите кнопку ОК.

    Screenshot showing the Local Authentication window.

Azure CLI

С помощью приведенной ниже команды CLI показано, как создать настраиваемый раздел с отключенной локальной аутентификацией. Функция отключения локальной аутентификации в настоящее время доступна в предварительной версии, и необходимо использовать API версии 2021-06-01-preview.

az resource create --subscription <subscriptionId> --resource-group <resourceGroup> --resource-type Microsoft.EventGrid/topics --api-version 2021-06-01-preview --name <topicName> --location <location> --properties "{ \"disableLocalAuth\": true}"

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

Тип темы Тип ресурса
Домены Microsoft.EventGrid/domains
Пространство имен партнеров Microsoft.EventGrid/partnerNamespaces
Настраиваемый раздел Microsoft.EventGrid/topics

Azure PowerShell

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


Set-AzContext -SubscriptionId <SubscriptionId>

New-AzResource -ResourceGroupName <ResourceGroupName> -ResourceType Microsoft.EventGrid/topics -ApiVersion 2021-06-01-preview -ResourceName <TopicName> -Location <Location> -Properties @{disableLocalAuth=$true}

Примечание.

Ресурсы