Потоковая передача данных из Kafka в Azure Stream Analytics (предварительная версия)

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

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

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

Azure Stream Analytics позволяет подключаться непосредственно к кластерам Kafka для приема данных. Решение является низким кодом и полностью управляется командой Azure Stream Analytics в Корпорации Майкрософт, что позволяет ему соответствовать стандартам соответствия бизнес-требованиям. Входные данные ASA 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 поддерживает только числовый десятичный формат.

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

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

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

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

Имя свойства Description
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.

Пошаговое руководство по подключению к cloud kakfa confluent см. в документации.

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

Примечание.

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

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

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

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

Примечание.

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

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

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

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

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

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

Внимание

Для правильной работы этой команды необходимо иметь разрешение "Администратор 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) единицами потоковой передачи или одной единицей потоковой передачи версии 2 (1).
  • При использовании mTLS или SASL_SSL с хранилищем ключей Azure необходимо преобразовать хранилище ключей Java в формат PEM.
  • Минимальная версия Kafka, к которому можно подключиться, можно настроить Azure Stream Analytics, версия 0.10.
  • Azure Stream Analytics не поддерживает проверку подлинности для слияния облака с помощью OAuth или единого входа SAML. Ключ API необходимо использовать с помощью протокола SASL_SSL

Примечание.

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

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