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


Поток данных из Kafka в Azure Stream Analytics

Kafka — это распределенная платформа потоковой передачи, используемая для публикации и подписки на потоки записей. Kafka предназначен для того, чтобы приложения могли обрабатывать записи по мере их возникновения. Это система с открытым исходным кодом, разработанная Apache Software Foundation и написанная на Java и Scala.

Ниже приведены основные варианты использования.

  • Обмен сообщениями
  • Отслеживание действий веб-сайта
  • Метрики
  • Агрегирование журналов
  • Потоковая обработка

Azure Stream Analytics позволяет подключаться непосредственно к кластерам Kafka для приема данных. Решение является низким кодом и полностью управляется командой Azure Stream Analytics в Корпорации Майкрософт, что позволяет ему соответствовать стандартам соответствия бизнес-требованиям. Входные данные Kafka являются обратно совместимыми и поддерживают все версии с последним выпуском клиента, начиная с версии 0.10. Пользователи могут подключаться к кластерам Kafka в виртуальной сети и кластерах Kafka с общедоступной конечной точкой в зависимости от конфигураций. Конфигурация зависит от существующих соглашений о конфигурации Kafka. Поддерживаемые типы сжатия: None, Gzip, Snappy, LZ4 и Zstd.

Шаги

В этой статье показано, как настроить Kafka в качестве источника входных данных для Azure Stream Analytics. Существует шесть шагов:

  1. Создайте задание Azure Stream Analytics.
  2. Настройте задание Azure Stream Analytics для использования управляемого удостоверения, если используется mTLS или протоколы безопасности SASL_SSL.
  3. Настройте хранилище ключей Azure, если вы используете mTLS или SASL_SSL протоколы безопасности.
  4. Отправка сертификатов в качестве секретов в хранилище ключей Azure.
  5. Предоставьте Azure Stream Analytics разрешения для доступа к отправленном сертификату.
  6. Настройте входные данные Kafka в задании Azure Stream Analytics.

Примечание.

В зависимости от того, как настроен кластер Kafka и тип используемого кластера Kafka, некоторые из описанных выше шагов могут не применяться к вам. Примеры: если вы используете confluent cloud Kafka, вам не потребуется отправить сертификат для использования соединителя Kafka. Если кластер Kafka находится в виртуальной сети или за брандмауэром, возможно, потребуется настроить задание Azure Stream Analytics для доступа к разделу Kafka с помощью приватного канала или выделенной конфигурации сети.

Настройка

В следующей таблице перечислены имена свойств и их описание для создания входных данных Kafka:

Внимание

Чтобы настроить кластер Kafka в качестве входного, тип метки времени входной темы должен быть LogAppendTime. Единственный тип метки времени Azure Stream Analytics поддерживает LogAppendTime. Azure Stream Analytics поддерживает только числовый десятичный формат.

Имя свойства Описание
Псевдоним ввода/вывода Понятное имя, используемое в запросах для ссылки на входные или выходные данные
Адреса сервера начальной загрузки Список пар узлов и портов для установления подключения к кластеру Kafka.
Тема Kafka Именованный, упорядоченный и секционированный поток данных, который позволяет обрабатывать сообщения на основе модели публикация-подписка и событийной обработки.
Протокол безопасности Как подключиться к кластеру Kafka. Azure Stream Analytics поддерживает mTLS, SASL_SSL, SASL_PLAINTEXT или None.
Идентификатор группы потребителей Имя группы потребителей Kafka, которой должны принадлежать входные данные. Автоматически назначается, если не указано.
Формат сериализации событий Формат сериализации (JSON, CSV, Avro, Parquet, Protobuf) входящего потока данных.

Снимок экрана: настройка входных данных kafka для задания Stream Analytics.

Проверка подлинности и шифрование

Для подключения к кластерам Kafka можно использовать четыре типа протоколов безопасности:

Имя свойства Описание
mTLS Шифрование и проверка подлинности. Поддерживает механизмы безопасности PLAIN, SCRAM-SHA-256 и SCRAM-SHA-512.
SASL_SSL Он объединяет два разных механизма безопасности — SASL (простой уровень проверки подлинности и безопасности) и SSL-уровень безопасности, чтобы обеспечить как проверку подлинности, так и шифрование для передачи данных. Протокол SASL_SSL поддерживает механизмы безопасности PLAIN, SCRAM-SHA-256 и SCRAM-SHA-512.
SASL_PLAINTEXT стандартная проверка подлинности с использованием имени пользователя и пароля без шифрования
нет Проверка подлинности и шифрование отсутствует.

Внимание

Confluent Cloud поддерживает проверку подлинности с помощью ключей API, OAuth или единого входа SAML. Azure Stream Analytics не поддерживает проверку подлинности единого входа OAuth или SAML. Вы можете подключиться к облаку confluent с помощью ключа API с доступом на уровне раздела через протокол безопасности SASL_SSL.

Пошаговые руководства по подключению к облаку Kafka см. в документации:

Интеграция хранилища ключей

Примечание.

При использовании сертификатов хранилища доверия с протоколами безопасности mTLS или SASL_SSL необходимо иметь хранилище ключей Azure и управляемое удостоверение, настроенное для задания Azure Stream Analytics. Проверьте параметры сети хранилища ключей, чтобы убедиться, что выбрано разрешение общедоступного доступа из всех сетей . Предположим, что хранилище ключей находится в виртуальной сети или разрешает доступ только из определенных сетей. В этом случае необходимо внедрить задание ASA в виртуальную сеть, содержащую хранилище ключей, или внедрить задание ASA в виртуальную сеть, а затем подключить хранилище ключей к виртуальной сети, содержащей задание с помощью конечных точек службы.

Azure Stream Analytics легко интегрируется с хранилищем ключей Azure для доступа к сохраненным секретам, необходимым для проверки подлинности и шифрования при использовании MTLS или протоколов безопасности SASL_SSL. Задание Azure Stream Analytics соединяется с хранилищем ключей Azure с использованием управляемого удостоверения, чтобы гарантировать безопасное подключение и предотвратить эксфильтрацию секретов. Сертификаты хранятся в виде секретов в хранилище ключей и должны находиться в формате PEM.

Настройка хранилища ключей с разрешениями

Вы можете создать ресурс хранилища ключей, выполнив краткое руководство по созданию хранилища ключей с помощью портала Azure. Для загрузки сертификатов у вас должны быть права 'Администратора хранилища ключей'. Выполните следующие действия, чтобы предоставить администратору доступ:

Примечание.

У вас должны быть права "Владелец" для предоставления других прав доступа к хранилищу ключей.

  1. Выберите Управление доступом (IAM) .

  2. Выберите Добавить>Добавить назначение ролей, чтобы открыть страницу Добавление назначения ролей.

  3. Назначьте роль с помощью следующей конфигурации:

Настройка Значение
Роль Администратор хранилища ключей
Назначить доступ к Пользователь, группа или субъект-служба
Участники <Сведения о вашей учетной записи или электронная почта>

Отправка сертификата в хранилище ключей с помощью Azure CLI

Внимание

Для правильной работы этой команды необходимо иметь разрешение "Администратор Key Vault" для доступа к вашему Key Vault. Необходимо загрузить сертификат в виде секрета. Чтобы загрузить сертификаты как секреты в ваше хранилище ключей, необходимо использовать Azure CLI. Задание Azure Stream Analytics завершится ошибкой, когда срок действия сертификата, используемого для аутентификации. Чтобы устранить эту проблему, необходимо обновить или заменить сертификат в хранилище ключей и перезапустить задание Azure Stream Analytics.

Убедитесь, что azure CLI настроен локально с помощью PowerShell. Вы можете посетить эту страницу, чтобы получить рекомендации по настройке Azure CLI: начало работы с Azure CLI

Войдите в Azure CLI:

az login

Подключитесь к подписке, содержащей хранилище ключей:

az account set --subscription <subscription name>

Следующая команда может отправить сертификат в качестве секрета в хранилище ключей:

Имя <your key vault> хранилища ключей, в которое нужно отправить сертификат. <name of the secret> — любое имя, которое вы хотите дать секрету и как оно отображается в хранилище ключей. <file path to certificate> — путь к расположению вашего сертификата. Щелкните правой кнопкой мыши и скопируйте путь к сертификату.

az keyvault secret set --vault-name <your key vault> --name <name of the secret> --file <file path to certificate>

Например:

az keyvault secret set --vault-name mykeyvault --name kafkasecret --file C:\Users\Downloads\certificatefile.pem

Настройка управляемой идентичности

Azure Stream Analytics требует настройки управляемого удостоверения для доступа к хранилищу ключей. Задание ASA можно настроить для использования управляемого удостоверения, перейдя на вкладку "Управляемое удостоверение " слева в разделе "Настройка".

Снимок экрана, показывающий, как настроить управляемое удостоверение для задания ASA.

  1. Выберите вкладку "Управляемое удостоверение" в разделе Настройка.
  2. Выберите параметр "Переключить удостоверение" и выберите удостоверение, которое будет использоваться с заданием: системное удостоверение или пользовательское удостоверение.
  3. Для пользовательской назначенной идентичности выберите подписку, в которой находится ваша пользовательская назначенная идентичность, и выберите имя вашей идентичности.
  4. Проверьте и сохраните.

Предоставление разрешений на задание Stream Analytics для доступа к сертификату в хранилище ключей

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

  1. Выберите Управление доступом (IAM) .

  2. Выберите Добавить>Добавить назначение ролей, чтобы открыть страницу Добавление назначения ролей.

  3. Назначьте роль с помощью следующей конфигурации:

Настройка Значение
Роль Пользователь секретов хранилища ключей
Управляемая идентификация Задание Stream Analytics для управляемого удостоверения, назначаемого системой, или управляемого удостоверения, назначаемого пользователем
Участники <Имя задания Stream Analytics> или <имя назначенного пользователем удостоверения>

Интеграция виртуальной сети

Если кластер Kafka находится в виртуальной сети или за брандмауэром, настройте задание Azure Stream Analytics для доступа к разделу Kafka с помощью приватного канала или выделенной конфигурации сети. Дополнительные сведения см. в документации по запуску задания Azure Stream Analytics в виртуальной сети Azure.

Ограничения

  • При настройке заданий Azure Stream Analytics для использования виртуальной сети/SWIFT, задание должно быть настроено как минимум с шестью (6) потоковыми единицами или одной (1) потоковой единицей версии 2.
  • При использовании mTLS или SASL_SSL с хранилищем ключей Azure необходимо преобразовать хранилище ключей Java в формат PEM.
  • Минимальная версия Kafka, с которой можно настроить подключение Azure Stream Analytics, — это версия 0.10.
  • Azure Stream Analytics не поддерживает аутентификацию в Confluent Cloud с помощью OAuth или SAML единой авторизации (SSO). Ключ API необходимо использовать с помощью протокола SASL_SSL

Примечание.

Чтобы получить прямую помощь по использованию входных данных Kafka для Azure Stream Analytics, свяжитесь с askasa@microsoft.com.

Следующие шаги