Доставка событий в защищенные конечные точки Microsoft Entra
В этой статье описывается, как использовать идентификатор Microsoft Entra для защиты подключения между подпиской на событие и конечной точкой веб-перехватчика. В нем используется портал Azure для демонстрации, однако эта функция также может быть включена с помощью интерфейса командной строки, PowerShell или пакетов SDK.
Внимание
30 марта 2021 года была введена дополнительная проверка доступа в процессы создания и обновления подписки на события для устранения уязвимости в системе безопасности. Субъект-служба клиента подписчика должна быть либо владельцем, либо иметь роль, назначенную субъекту-службе конечного приложения. Перенастройьте приложение Microsoft Entra, следуя новым инструкциям ниже. Общие сведения о приложениях и субъектах-службах Microsoft Entra см. в платформа удостоверений Майкрософт (версия 2.0).
Сценарии
В этой статье объясняется, как подробно реализовать следующие два сценария:
Доставка событий в веб-перехватчик, который находится в том же клиенте Microsoft Entra, что и подписка на события. В этом сценарии можно использовать пользователя Microsoft Entra или приложение Microsoft Entra в качестве средства записи подписок на события.
Доставка событий в веб-перехватчик, который находится в другом клиенте Microsoft Entra из подписки на события. В этом сценарии можно использовать только приложение Microsoft Entra в качестве средства записи подписок на события.
В первом сценарии выполняются все шаги или скрипты в одном клиенте с подпиской на события и веб-перехватчиком. Во втором сценарии вы выполняете некоторые шаги в клиенте с подпиской на события и некоторыми шагами в клиенте с веб-перехватчиком.
Доставка событий в веб-перехватчик в том же клиенте Microsoft Entra
На следующей схеме показано, как события сетки событий передаются в веб-перехватчик в том же клиенте, что и подписка на события.
В этом разделе есть два подраздела. Ознакомьтесь как с сценариями, так и с интересующими вас сценариями.
- Настройка подписки на события с помощью пользователя Идентификатора Microsoft Entra
- Настройка подписки на события с помощью приложения Идентификатора Microsoft Entra
Настройка подписки на события с помощью пользователя Microsoft Entra
В этом разделе показано, как настроить подписку на события с помощью пользователя Microsoft Entra.
Создайте приложение Microsoft Entra для веб-перехватчика, настроенного для работы с Microsoft Entra (один клиент).
Откройте Azure Shell в арендаторе и выберите среду PowerShell.
Измените значение $webhookAadTenantId, чтобы подключиться к арендатору.
- Переменные:
- $webhookAadTenantId: идентификатор клиента Azure
$webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]" Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
- Переменные:
Откройте этот скрипт и измените значения $webhookAppObjectId и $eventSubscriptionWriterUserPrincipalName, указав свои идентификаторы, после чего продолжите выполнение скрипта.
- Переменные:
- $webhookAppObjectId: идентификатор приложения Microsoft Entra, созданный для веб-перехватчика
- $eventSubscriptionWriterUserPrincipalName. Имя участника-пользователя Azure, создающего подписку на события
Примечание.
Не нужно изменять значение $eventGridAppId. В этом сценарии для $eventGridRoleName устанавливается AzureEventGridSecureWebhookSubscriber. Помните, что вы должны быть членом роли администратора приложений Microsoft Entra или быть владельцем субъекта-службы приложения веб-перехватчика в идентификаторе Microsoft Entra ID для выполнения этого скрипта.
Если отображается приведенное сообщение об ошибке, необходимо повысить уровень привилегий до субъекта-службы. Дополнительная проверка доступа появилась в рамках создания или обновления подписки на события 30 марта 2021 г. для устранения уязвимости безопасности. Субъект-служба клиента подписчика должна быть либо владельцем, либо иметь роль, назначенную субъекту-службе конечного приложения.
New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment Code: Authorization_RequestDenied Message: Insufficient privileges to complete the operation.
- Переменные:
При создании подписки на событие на портале выполните следующие действия:
выберите тип конечной точки в качестве веб-перехватчика.
Укажите универсальный код ресурса (URI) конечной точки.
Перейдите на вкладку Дополнительные функции в верхней части страницы Создание подписок на события.
На вкладке Дополнительные функции выполните следующие действия:
Выберите "Использовать проверку подлинности Microsoft Entra" и настройте идентификатор клиента и идентификатор приложения:
Скопируйте идентификатор клиента Microsoft Entra из выходных данных скрипта и введите его в поле идентификатора клиента Microsoft Entra.
Скопируйте идентификатор приложения Microsoft Entra из выходных данных скрипта и введите его в поле идентификатора приложения Microsoft Entra. Можно использовать URI идентификатора приложения Microsoft Entra вместо использования идентификатора приложения. Дополнительные сведения об URI идентификатора приложения см. в этой статье.
Настройка подписки на события с помощью приложения Microsoft Entra
В этом разделе показано, как настроить подписку на события с помощью приложения Microsoft Entra.
Создайте приложение Microsoft Entra для записи подписок сетки событий, настроенного для работы с Microsoft Entra (один клиент).
Создайте секрет для приложения Microsoft Entra и сохраните значение (это значение потребуется позже).
Перейдите на страницу управления доступом (IAM) раздела "Сетка событий" и назначьте роль участника сетки событий приложению записи подписок сетки событий. Этот шаг позволяет получить доступ к ресурсу Сетки событий при входе в Azure с помощью приложения Microsoft Entra с помощью Azure CLI.
Создайте приложение Microsoft Entra для веб-перехватчика, настроенного для работы с Microsoft Entra (один клиент).
Откройте Azure Shell в арендаторе и выберите среду PowerShell.
Измените значение $webhookAadTenantId, чтобы подключиться к арендатору.
- Переменные:
- $webhookAadTenantId: идентификатор клиента Azure
$webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]" Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
- Переменные:
Откройте этот скрипт и измените значения $webhookAppObjectId и $eventSubscriptionWriterAppId, указав свои идентификаторы, после чего продолжите выполнение скрипта.
- Переменные:
- $webhookAppObjectId: идентификатор приложения Microsoft Entra, созданный для веб-перехватчика
- $eventSubscriptionWriterAppId. Идентификатор приложения Microsoft Entra для приложения записи подписок сетки событий.
Примечание.
Не нужно изменять значение
$eventGridAppId
. В этом скрипте azureEventGridSecureWebhookSubscriber , как задано для$eventGridRoleName
параметра. Помните, что вы должны быть членом роли администратора приложений Microsoft Entra или быть владельцем субъекта-службы приложения веб-перехватчика в идентификаторе Microsoft Entra ID для выполнения этого скрипта.- Переменные:
Войдите в систему в качестве модуля записи подписок Сетки событий Microsoft Entra Application, выполнив команду.
az login --service-principal -u [REPLACE_WITH_EVENT_GRID_SUBSCRIPTION_WRITER_APP_ID] -p [REPLACE_WITH_EVENT_GRID_SUBSCRIPTION_WRITER_APP_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
Создайте подписку, выполнив приведенную команду.
az eventgrid system-topic event-subscription create --name [REPLACE_WITH_SUBSCRIPTION_NAME] -g [REPLACE_WITH_RESOURCE_GROUP] --system-topic-name [REPLACE_WITH_SYSTEM_TOPIC] --endpoint [REPLACE_WITH_WEBHOOK_ENDPOINT] --event-delivery-schema [REPLACE_WITH_WEBHOOK_EVENT_SCHEMA] --azure-active-directory-tenant-id [REPLACE_WITH_TENANT_ID] --azure-active-directory-application-id-or-uri [REPLACE_WITH_APPLICATION_ID_FROM_SCRIPT] --endpoint-type webhook
Примечание.
В этом сценарии используется системный раздел. Если вы хотите создать подписку для пользовательских разделов или доменов с помощью Azure CLI, см . справочник по CLI.
Если все было правильно настроено, вы можете успешно создать подписку веб-перехватчика в разделе "Сетка событий".
Примечание.
На этом этапе Сетка событий передает маркер носителя Microsoft Entra клиенту веб-перехватчика в каждом сообщении. Необходимо проверить маркер авторизации в веб-перехватчике.
Доставка событий в веб-перехватчик в другом клиенте Microsoft Entra
Чтобы защитить подключение между подпиской на события и конечной точкой веб-перехватчика, которые находятся в разных клиентах Microsoft Entra, необходимо использовать приложение идентификатора Microsoft Entra, как показано в этом разделе. В настоящее время невозможно защитить это подключение с помощью пользователя Идентификатора Microsoft Entra в портал Azure.
На схеме выполните следующие действия, чтобы настроить оба клиента.
Клиент A
Выполните следующие действия в арендаторе А.
Создайте приложение Microsoft Entra для записи подписок сетки событий, настроенного для работы с любым элементом Microsoft Entra (мультитенант).
Создайте секрет для приложения Microsoft Entra и сохраните значение (это значение потребуется позже).
Перейдите на страницу управления доступом (IAM) для раздела "Сетка событий". Назначьте роль участника сетки событий приложению Microsoft Entra записи подписки сетки событий. Этот шаг позволяет приложению получить доступ к ресурсу Сетки событий при входе в Azure с помощью приложения Microsoft Entra с помощью Azure CLI.
Клиент B
Выполните следующие действия в арендаторе Б.
Создайте приложение Microsoft Entra для веб-перехватчика, настроенного для работы с Microsoft Entra (один клиент).
Откройте Azure Shell и выберите среду PowerShell.
Измените значение $webhookAadTenantId, чтобы подключиться к арендатору Б.
Variables:
- $webhookAadTenantId: идентификатор арендатора Azure для арендатора Б.
$webhookAadTenantId = "[REPLACE_WITH_YOUR_TENANT_ID]" Connect-MgGraph -TenantId $webhookAadTenantId -Scopes "Application.ReadWrite.All, AppRoleAssignment.ReadWrite.All"
Откройте этот скрипт и измените значения $webhookAppObjectId и $eventSubscriptionWriterAppId, указав свои идентификаторы, после чего продолжите выполнение скрипта.
- Переменные:
$webhookAppObjectId: идентификатор приложения Microsoft Entra, созданный для веб-перехватчика
$eventSubscriptionWriterAppId: идентификатор приложения Microsoft Entra для записи подписок сетки событий
Примечание.
Не нужно изменять значение
$eventGridAppId
. В этом сценарии для azureEventGridSecureWebhookSubscriber задано значение$eventGridRoleName
. Помните, что вы должны быть членом роли администратора приложений Microsoft Entra или быть владельцем субъекта-службы приложения веб-перехватчика в идентификаторе Microsoft Entra ID для выполнения этого скрипта.
Если отображается приведенное сообщение об ошибке, необходимо повысить уровень привилегий до субъекта-службы. Дополнительная проверка доступа появилась в рамках создания или обновления подписки на события 30 марта 2021 г. для устранения уязвимости безопасности. Субъект-служба клиента подписчика должна быть либо владельцем, либо иметь роль, назначенную субъекту-службе конечного приложения.
New-MgServicePrincipalAppRoleAssignment: Error occurred while executing NewServicePrincipalAppRoleAssignment Code: Authorization_RequestDenied Message: Insufficient privileges to complete the operation.
- Переменные:
Клиент A
Выполните приведенные ниже действия в арендаторе А.
Откройте Azure Shell и войдите в систему в качестве модуля записи подписок Службы "Сетка событий" Microsoft Entra Application, выполнив команду.
az login --service-principal -u [REPLACE_WITH_APP_ID] -p [REPLACE_WITH_SECRET_VALUE] --tenant [REPLACE_WITH_TENANT_ID]
Создайте подписку, выполнив приведенную команду.
az eventgrid system-topic event-subscription create --name [REPLACE_WITH_SUBSCRIPTION_NAME] -g [REPLACE_WITH_RESOURCE_GROUP] --system-topic-name [REPLACE_WITH_SYSTEM_TOPIC] --endpoint [REPLACE_WITH_WEBHOOK_ENDPOINT] --event-delivery-schema [REPLACE_WITH_WEBHOOK_EVENT_SCHEMA] --azure-active-directory-tenant-id [REPLACE_WITH_TENANT_B_ID] --azure-active-directory-application-id-or-uri [REPLACE_WITH_APPLICATION_ID_FROM_SCRIPT] --endpoint-type webhook
Примечание.
В этом сценарии мы используем системный раздел Сетки событий. Если вы хотите создать подписку для пользовательских разделов или доменов Сетки событий с помощью Azure CLI, перейдите сюда.
Если все было правильно настроено, вы можете успешно создать подписку веб-перехватчика в разделе "Сетка событий".
Примечание.
На этом этапе Сетка событий передает маркер носителя Microsoft Entra в клиент веб-перехватчика в каждом сообщении. Теперь необходимо проверять маркер авторизации в веб-перехватчике.
Следующие шаги
- Основные сведения см. в разделе Доставка событий веб-перехватчика.
- Ознакомьтесь со сведениями о мониторинге доставки сообщений в службе "Сетка событий".
- Дополнительные сведения о ключе аутентификации см. в статье Сетка событий: безопасность и проверка подлинности.
- Дополнительные сведения о создании подписки на Сетку событий Azure см. в статье Схема подписки для службы "Сетка событий".