Еще раз про Big Data Security: как обеспечить безопасность кластера Apache Kafka

Kafka, Big Data, Большие данные, архитектура, обработка данных, защита информации, безопасность, security

В рамках серии публикаций про основы Apache Kafka для начинающих, сегодня мы поговорим про информационную безопасность этой популярной в сфере Big Data распределенной системы управления сообщениями: шифрование, защищенные протоколы, аутентификация, авторизация и другие средства cybersecurity.

Что обеспечивает безопасность Apache Kafka в кластере Big Data

Информационная безопасность Apache Kafka основана на следующих ключевых технологиях [1]:

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

Учитывая распределенную архитектуру Big Data систем, для обеспечения комплексной информационной безопасности всего кластера потребуется защитить и службу централизованного контроля работоспособности узлов – Apache ZooKeeper. Для этого используется Kerberos – сетевой протокол взаимной аутентификации клиента и сервера перед установлением связи между ними, поддерживающий GSSAPI (Generic Security Services API) – общий программный интерфейс сервисов безопасности и фреймворк SASL (Simple Authentication and Security Layer) – простой уровень аутентификации и безопасности) [2].

Kafka, Big Data, Большие данные, архитектура, обработка данных, защита информации, безопасность, security
Архитектура информационной безопасности в Apache Kafka

Как реализуется управление доступом в Кафка

Поскольку именно Apache Zookeeper хранит ACL-списки избирательного доступа к объектам Кафка, защита этой службы – первоочередная задача обеспечения информационной безопасности кластера Kafka [3]. На практике защита Apache Zookeeper реализуется сервисом аутентификации и авторизации Java – JAAS (Java Authentication and Authorization Service), который обеспечивает проверку полномочий пользователей или программ путем их определения в конфигурационных файлах [4].

ACL-авторизация по спискам избирательного доступа реализует RBAC-модель (Role Based Access Control) разрешения или запрета на операции с данными. Например, в коммерческой версии Apache Kafka от компании Confluent это выполняется следующим образом [5]:

  1. клиент по защищенному протоколу SSL отправляет вызов прокси-серверу Кафка (REST Proxy) через REST API, посылая свои учетные данные LDAP для базовой аутентификации HTTP (SSL/Basic auth);
  2. специальный плагин безопасности прокси-сервера (Security plugin) аутентифицирует клиента по метаданным сервиса, генерируя токен для деперсонализации пользовательского запроса и аутентификации между клиентами и кластером Кафка;
  3. для клиентов используются криптографические протокол SASL_PLAINTEXT/SASL_SSL, а собственный обработчик обратного вызова передает токен в кластер Кафка. Аналогично при обмене данными с реестром схем (Schema Registry) токен аутентификации передается клиенту реестра схемы с использованием собственной реализации интерфейса аутентификации учетных данных провайдера (BearerAuthCredentialProvider).
  4. При отсутствии у клиента необходимой роли или ACL-разрешения на операцию с запрашиваемым ресурсом (топиком или кластером) API-вызов REST-запроса завершается неудачно и возвращает ошибку с кодом состояния HTTP 403.
Kafka, Big Data, Большие данные, архитектура, обработка данных, защита информации, безопасность, security, RBAC
Реализация RBAC в Apache Kafka Confluent

Вышеупомянутая коммерческая версия Apache Kafka Confluent, которая очень популярна в production-решениях Big Data систем, включает также и другие инструменты обеспечения информационной безопасности кластера Кафка. В частности, сценарии запуска security-служб c передачей файла JAAS-файлов в качестве аргументов [3], генерацию ключей и сертификатов шифрования, криптографически защищенный инструмент доступа к внешним хранилищам данных Kafka Connect и другие средства cybersecurity [6]. Следующая наша статья посвящена другому важному компоненту Кафка — регистру схем.

Подробнее о том, что такое ACL, RBAC, Kerberos, SSL-шифрование и другие инструменты обеспечения информационной безопасности больших данных, вы узнаете на практическом курсе DSEC: Безопасность озера данных Hadoop, а как защитить Apache Кафка – на курсе Администрирование кластера Kafka в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов для руководителей, архитекторов, инженеров, аналитиков Big Data и Data Scientist’ов в Москве.

расписание компьютерные курсы для руководителей, аналитиков, программистов, администраторов и пользователей Internet of Things, Big Data и Machine Learning Смотреть расписание занятий
регистрация на компьютерные курсы для руководителей, аналитиков, программистов, администраторов и пользователей Internet of Things, Big Data и Machine Learning Зарегистрироваться на курс

Источники

  1. https://medium.com/@stephane.maarek/introduction-to-apache-kafka-security-c8951d410adf
  2. https://ru.wikipedia.org/wiki/Kerberos
  3. https://blog.upala.com/2017/11/09/kafka-security
  4. https://ru.wikipedia.org/wiki/Java_Authentication_and_Authorization_Service
  5. https://docs.confluent.io/current/confluent-security-plugins/kafka-rest/rbac-rest-proxy-security.html
  6. https://docs.confluent.io/4.0.0/security.html