Поделиться через


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

Примечание.

Если исходная служба или приложение не перезапускается после отключения доступа к концентратору событий путем удаления управляемого удостоверения источника из роли RBAC Центров событий, исходное приложение может продолжать публиковать события в концентраторе событий или получать их из концентратора событий до истечения срока действия маркера (срок действия маркера по умолчанию составляет 24 часа). Такое поведение предусмотрено программой.

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

Центры событий для Kafka

Приложения Apache Kafka можно использовать для отправки и получения сообщений из Центров событий Azure с помощью управляемого удостоверения OAuth. См. следующий пример на сайте GitHub: Центры событий для Kafka — отправка и получение сообщений с помощью управляемого удостоверения OAuth.

Примеры