Проверка подлинности управляемого удостоверения с помощью идентификатора Microsoft Entra для доступа к ресурсам Центров событий
Центры событий Azure поддерживает проверку подлинности Microsoft Entra с управляемыми удостоверениями для ресурсов Azure. Управляемые удостоверения для ресурсов Azure позволяют авторизовать доступ к ресурсам Центров событий с использованием учетных данных Microsoft Entra из приложений, запущенных на Виртуальных машинах Azure, в приложениях-функциях, Масштабируемых наборах виртуальных машин и других службах. Используя управляемые удостоверения для ресурсов Azure вместе с проверкой подлинности Microsoft Entra, вы можете избежать хранения учетных данных с приложениями, работающими в облаке. В этой статье показано, как авторизовать доступ к концентратору событий с помощью управляемого удостоверения на виртуальной машине Azure.
Включение управляемых удостоверений на виртуальной машине
Прежде чем использовать управляемые удостоверения для ресурсов Azure для доступа к ресурсам Центров событий из виртуальной машины, необходимо сначала включить управляемые удостоверения для ресурсов Azure на виртуальной машине. Сведения о включении управляемых удостоверений для ресурсов Azure см. в статье "Настройка управляемых удостоверений на виртуальных машинах Azure".
Предоставление разрешений управляемому удостоверению в идентификаторе Microsoft Entra
Чтобы авторизовать запрос к службе Центров событий из управляемого удостоверения в приложении, сначала настройте параметры управления доступом на основе ролей Azure (RBAC) для этого управляемого удостоверения. Центры событий Azure определяет роли Azure, охватывающие разрешения на отправку событий и получение событий из Центров событий. Когда роль Azure назначается управляемому удостоверению, управляемое удостоверение предоставляется доступ к данным Центров событий в соответствующей области. Дополнительные сведения о назначении ролей Azure см. в статье "Проверка подлинности с помощью идентификатора Microsoft Entra" для доступа к ресурсам Центров событий.
Пример приложения
В процедуре в этом разделе используется простое приложение, которое выполняется в управляемом удостоверении и получает доступ к ресурсам Центров событий.
Здесь мы используем пример веб-приложения, размещенного в Службе приложений Azure. Пошаговые инструкции по созданию веб-приложения см. в статье Создание веб-приложения ASP.NET Core в Azure.
После создания приложения выполните следующие действия.
Перейдите в раздел Параметры и выберите Удостоверение.
Для параметра Состояние выберите значение Включено.
Нажмите кнопку Сохранить, чтобы сохранить параметры.
Щелкните Да в информационном сообщении.
После включения этого параметра создается новое удостоверение службы в идентификаторе Microsoft Entra и настроено в узле Служба приложений.
Теперь назначьте это удостоверение службы роли в требуемой области в ресурсах Центров событий.
Назначение ролей Azure с помощью портала Azure
Назначьте управляемому удостоверению одну из ролей Центров событий в нужной области (пространство имен Центров событий, группа ресурсов, подписка). Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.
Примечание.
Список служб, поддерживающих управляемые удостоверения, см. в статье Службы, которые поддерживают управляемые удостоверения для ресурсов Azure.
Тестирование веб-приложения
- Создайте пространство имен Центров событий и концентратор событий.
- Разверните веб-приложение в Azure. См. следующий раздел с вкладками для ссылок на пример веб-приложения на сайте GitHub.
- Убедитесь, что файл SendReceive.aspx задан как документ по умолчанию для веб-приложения.
- Включите удостоверение для веб-приложения.
- Назначьте этому удостоверению роль Владелец данных Центров событий на уровне пространства имен или концентратора событий.
- Запустите веб-приложение, введите имя пространства имен и концентратора событий, напишите сообщение и нажмите кнопку Отправить. Чтобы получить событие, выберите Получить.
Пример веб-приложения, которое отправляет и получает данные из ресурсов Центров событий, можно найти в репозитории GitHub.
Установите последний пакет из NuGet и приступите к отправке событий в Центры событий с помощью EventHubProducerClient, а также их получению, используя EventHubConsumerClient.
Примечание.
Пример на языке Java, в котором для публикации событий в концентраторе событий используется управляемое удостоверение, см. в статье Публикация событий с помощью примера удостоверения Azure на GitHub.
protected async void btnSend_Click(object sender, EventArgs e)
{
await using (EventHubProducerClient producerClient = new EventHubProducerClient(txtNamespace.Text, txtEventHub.Text, new DefaultAzureCredential()))
{
// create a batch
using (EventDataBatch eventBatch = await producerClient.CreateBatchAsync())
{
// add events to the batch. only one in this case.
eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes(txtData.Text)));
// send the batch to the event hub
await producerClient.SendAsync(eventBatch);
}
txtOutput.Text = $"{DateTime.Now} - SENT{Environment.NewLine}{txtOutput.Text}";
}
}
protected async void btnReceive_Click(object sender, EventArgs e)
{
await using (var consumerClient = new EventHubConsumerClient(EventHubConsumerClient.DefaultConsumerGroupName, $"{txtNamespace.Text}.servicebus.windows.net", txtEventHub.Text, new DefaultAzureCredential()))
{
int eventsRead = 0;
try
{
using CancellationTokenSource cancellationSource = new CancellationTokenSource();
cancellationSource.CancelAfter(TimeSpan.FromSeconds(5));
await foreach (PartitionEvent partitionEvent in consumerClient.ReadEventsAsync(cancellationSource.Token))
{
txtOutput.Text = $"Event Read: { Encoding.UTF8.GetString(partitionEvent.Data.Body.ToArray()) }{ Environment.NewLine}" + txtOutput.Text;
eventsRead++;
}
}
catch (TaskCanceledException ex)
{
txtOutput.Text = $"Number of events read: {eventsRead}{ Environment.NewLine}" + txtOutput.Text;
}
}
}
Центры событий для Kafka
Приложения Apache Kafka можно использовать для отправки и получения сообщений из Центров событий Azure с помощью управляемого удостоверения OAuth. См. следующий пример на сайте GitHub: Центры событий для Kafka — отправка и получение сообщений с помощью управляемого удостоверения OAuth.
Примеры
- .NET
- Пример, использующий последний пакет Azure.Messaging.EventHubs , см. в разделе "Публикация событий с управляемым удостоверением"
- Пример, использующий устаревший пакет Microsoft.Azure.EventHubs , см . в этом примере .NET на сайте GitHub.
- Java — см. следующие примеры.
- Публикация событий с помощью примера удостоверения Azure на сайте GitHub.
- Чтобы узнать, как использовать протокол Apache Kafka для отправки событий и получения событий из концентратора событий с помощью управляемого удостоверения, см. пример Центров событий для Kafka для отправки и получения сообщений с помощью управляемого удостоверения.
Связанный контент
- Дополнительные сведения об использовании управляемых удостоверений в ресурсах Azure см. в статье Что такое управляемые удостоверения для ресурсов Azure?
- См. следующие связанные статьи:
- Проверка подлинности запросов на Центры событий Azure из приложения с помощью идентификатора Microsoft Entra
- Проверка подлинности запросов к Центрам событий Azure с помощью подписей общего доступа
- Авторизация доступа к ресурсам Центров событий с помощью Microsoft Entra ID
- Авторизация доступа к ресурсам Центров событий с помощью подписанных URL-адресов