Проверка подлинности управляемого удостоверения с помощью идентификатора 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.

После создания приложения выполните следующие действия.

  1. Перейдите в раздел Параметры и выберите Удостоверение.

  2. Для параметра Состояние выберите значение Включено.

  3. Нажмите кнопку Сохранить, чтобы сохранить параметры.

    Снимок экрана: страница

  4. Щелкните Да в информационном сообщении.

    После включения этого параметра создается новое удостоверение службы в идентификаторе Microsoft Entra и настроено в узле Служба приложений.

    Теперь назначьте это удостоверение службы роли в требуемой области в ресурсах Центров событий.

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

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

Примечание.

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

Тестирование веб-приложения

  1. Создайте пространство имен Центров событий и концентратор событий.
  2. Разверните веб-приложение в Azure. См. следующий раздел с вкладками для ссылок на пример веб-приложения на сайте GitHub.
  3. Убедитесь, что файл SendReceive.aspx задан как документ по умолчанию для веб-приложения.
  4. Включите удостоверение для веб-приложения.
  5. Назначьте этому удостоверению роль Владелец данных Центров событий на уровне пространства имен или концентратора событий.
  6. Запустите веб-приложение, введите имя пространства имен и концентратора событий, напишите сообщение и нажмите кнопку Отправить. Чтобы получить событие, выберите Получить.

Пример веб-приложения, которое отправляет и получает данные из ресурсов Центров событий, можно найти в репозитории 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.

Примеры