В рамках серии публикаций про основы 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].
Как реализуется управление доступом в Кафка
Поскольку именно 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]:
- клиент по защищенному протоколу SSL отправляет вызов прокси-серверу Кафка (REST Proxy) через REST API, посылая свои учетные данные LDAP для базовой аутентификации HTTP (SSL/Basic auth);
- специальный плагин безопасности прокси-сервера (Security plugin) аутентифицирует клиента по метаданным сервиса, генерируя токен для деперсонализации пользовательского запроса и аутентификации между клиентами и кластером Кафка;
- для клиентов используются криптографические протокол SASL_PLAINTEXT/SASL_SSL, а собственный обработчик обратного вызова передает токен в кластер Кафка. Аналогично при обмене данными с реестром схем (Schema Registry) токен аутентификации передается клиенту реестра схемы с использованием собственной реализации интерфейса аутентификации учетных данных провайдера (BearerAuthCredentialProvider).
- При отсутствии у клиента необходимой роли или ACL-разрешения на операцию с запрашиваемым ресурсом (топиком или кластером) API-вызов REST-запроса завершается неудачно и возвращает ошибку с кодом состояния HTTP 403.
Вышеупомянутая коммерческая версия Apache Kafka Confluent, которая очень популярна в production-решениях Big Data систем, включает также и другие инструменты обеспечения информационной безопасности кластера Кафка. В частности, сценарии запуска security-служб c передачей файла JAAS-файлов в качестве аргументов [3], генерацию ключей и сертификатов шифрования, криптографически защищенный инструмент доступа к внешним хранилищам данных Kafka Connect и другие средства cybersecurity [6]. Следующая наша статья посвящена другому важному компоненту Кафка — регистру схем. А про расширение описанных базовых возможностей обеспечения безопасности Кафка читайте здесь.
Администрирование кластера Kafka
Код курса
KAFKA
Ближайшая дата курса
9 декабря, 2024
Продолжительность
24 ак.часов
Стоимость обучения
72 000 руб.
Освойте администрирование и эксплуатацию Apache Kafka для потоковой аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
- Apache Kafka для инженеров данных
- Администрирование кластера Kafka
- Администрирование Arenadata Streaming Kafka
- https://medium.com/@stephane.maarek/introduction-to-apache-kafka-security-c8951d410adf
- https://ru.wikipedia.org/wiki/Kerberos
- https://blog.upala.com/2017/11/09/kafka-security
- https://ru.wikipedia.org/wiki/Java_Authentication_and_Authorization_Service
- https://docs.confluent.io/current/confluent-security-plugins/kafka-rest/rbac-rest-proxy-security.html
- https://docs.confluent.io/4.0.0/security.html