Абсолютно безопасно: PEM-аутентификация Apache Kafka по REST API

безопасность Kafka пример, реестр схем Apache Kafka, Kafka курсы примеры обучение, обучение большим данным, Школа Больших Данных Учебный Центр Коммерсант

Специально для обучения дата-инженеров и администраторов кластера Apache Kafka, сегодня разберем, как обеспечить безопасность клиента этой распределенной платформы потоковой передачи событий по REST API с помощью возможностей открытого ПО. Что такое PEM-файлы и при чем здесь SSL-сертификаты, а также другие криптографические средства защиты данных: кейс инженеров Expedia Group.

Инструменты обеспечения безопасности Apache Kafka

Напомним, информационную безопасность Apache Kafka обеспечивают следующие технологии:

  • шифрование SSL/TLS, защищающее передачу данных в режиме онлайн при всех коммуникациях между продюсерами и получателями событий;
  • аутентификация с использованием криптографического протокола SSL или фреймворка SASL для идентификации отправителей и получателей сообщений в кластере Kafka;
  • авторизация по спискам избирательного управления доступом (Access Control List, ACL) для детального определения прав клиентов кластера Kafka на чтение или запись топиков с сообщениями.

Однако, помимо этих встроенных инструментов, дата-инженеру и администратору кластера нужно заботиться еще и о других ресурсах, которые используются вместе с Kafka и которые тоже следует защитить. Например, предотвратить несанкционированную фиксацию смещений group.id внешними пользователями, некорректное использование идентификатора клиента (client.id) или KStreamsapplication.id, а также внесение изменений в схемы, описывающие структуру событий. Поэтому важно обеспечить управление потоком, которое отвечает за преобразование простых пользовательских намерений в спецификации ресурсов и безопасности и применение их к набору компонентов потоковой платформы: Kafka, Ranger и Confluent Schema Registry. Например, когда пользователь создает нового продюсера потока, можно использовать это намерение для автоматического поиска емкости в кластере Kafka, создания топика, клиентских сертификатов и политик доступа к брокеру, а также политик доступа к схеме. UML-диаграмма последовательности, сгенерированная в веб-движке PlantUML для этого случая, представлена на рисунке.

Kafka Schema registry security Ranger Confluent
Безопасное взаимодействие клиента Kafka с реестром схем

Для этого инженеры Expedia Group развернули новую функцию безопасности для экземпляров реестра схемы, чтобы пользователи могли безопасно вносить записи в Schema Registry. Чтобы расширить варианты использования Apache Ranger, было решено отказаться от RBAC-политики управления доступом от Confluent и реализовать собственный сервис и плагин Ranger. Для аутентификации связи между клиентом и брокером была выбрана mTLS + PEM. Эта же связка могла бы применяться и для связи между клиентом и реестром, чтобы клиент мог использовать один и тот же набор учетных данных для доступа к обеим системам. Однако, сертификаты на основе хранилища ключей Java не очень удобны в использовании и плохо поддерживаются другими языками программирования JVM. Кроме того, они предъявляют жесткие требования к клиенту, предоставляющему файловую систему для сохранения хранилища ключей. Альтернативой является подход PEM, который мы рассмотрим далее.

Что такое PEM

PEM (Privacy Enhanced Mail Certificate) — наиболее распространенный формат почтового сертификата с улучшенной конфиденциальностью, используемый для конфиденциальной передачи электронной почты. Файлы PEM возникли из-за сложности отправки двоичных данных по электронной почте. Формат PEM кодирует двоичный код с помощью base64, поэтому он существует в виде строки ASCII. Основное его практическое назначение – безопасная верификация пользователей на веб-ресурсе. Импорт PEM файла осуществляется непосредственно из сервера Apache на базе Unix. Формат также адаптирован к приложениям на основе OpenSSL. Сегодня формат PEM заменен новыми и более безопасными технологиями, но контейнер все еще используется сегодня для хранения файлов центра сертификации, открытых и закрытых ключей, корневых сертификатов и пр.

Один файл PEM может содержать сертификат конечного объекта, закрытый ключ или несколько сертификатов, образующих полную цепочку доверия. PEM имеет то преимущество, что сертификаты кодируются в простой строковой форме, которая передается в сопоставления конфигурации продюсера и потребителя, а также хорошо работает с сервисами обнаружения потоков — системой, которая позволяет клиентам Kafka разрешать свои конфигурации через REST API.

REST API Kafka пример, обучение администраторов и дата-инженеров Kafka
Безопасное взаимодействие клиента Kafka с реестром схем по REST API

Однако, на практике оказалось, что хотя аутентификация mTLS+PEM теперь полностью поддерживается в Apache Kafka, это не реализовано ​​в реестре схем Confluent. Поэтому клиентам Kafka неудобно использовать JKS и PEM для взаимодействия с потоковой платформой Expedia Group: JKS для реестра схем и PEM для соединений с брокером. Поэтому инженеры Expedia Group решили добавить поддержку PEM в проект реестра схем Confluent с открытым исходным кодом, внедрив обновление. Это обновление позволяет клиентам использовать либо JKS, либо PEM, чтобы обеспечить паритет со схемами аутентификации, предлагаемыми брокерами Kafka. Оно работает, предоставляя отдельный набор параметров конфигурации, которые принимают конфигурацию PEM, а затем использует их для настройки существующего кода обработки сертификатов, ранее использовавшегося исключительно с JKS. В будущем это попадет в официальный релиз реестра схем от Confluent, включая специально созданные библиотеки сериализации и десериализации (SerDe).

Таким образом, благодаря PEM-подходу пользователи могут создавать клиенты Kafka с нулевой конфигурацией, просто сообщая REST API обнаружения платформы с помощью простого авторизованного HTTPS-запроса. Платформа определяет топики, к которым клиент должен получить доступ, и предоставляет им полный набор конфигураций для клиента, включая сертификаты. А пользователю не придется заботиться о сопоставлении и сертификатах конфигурации продюсера и потребителя Apache Kafka. Как эту проблему решили дата-инженеры и архитекторы платформы потоковой обработки событий McDonald’s, читайте в нашей новой статье.

Освойте администрирование и эксплуатацию Apache Kafka для потоковой аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://medium.com/@stephane.maarek/introduction-to-apache-kafka-security-c8951d410adf
  2. https://medium.com/expedia-group-tech/kafka-schema-registry-pem-authentication-bb434f32f99f
  3. https://www.howtogeek.com/devops/what-is-a-pem-file-and-how-do-you-use-it/ 
Поиск по сайту