Для правильной настройки Kafka Access Control List (ACL) и Simple Authentication and Security Layer (SASL) для нескольких пользователей вам потребуется выполнить несколько шагов.
1. Настройте Kafka для использования SASL:
- Установите и настройте SASL-фреймворк для языка программирования PHP, такой как PECL SASL, чтобы обеспечить возможность аутентификации.
- В файле конфигурации Kafka (server.properties
) установите значение listeners
в обязательном порядке с префиксом "SASL_". Например: listeners=SASL_PLAINTEXT://localhost:9092
.
- Включите и настройте механизм аутентификации SASL в файле server.properties
. Например, для PLAIN-аутентификации установите sasl.mechanism.inter.broker.protocol=PLAIN
.
- Определите список допустимых механизмов авторизации и пользователей в файле kafka_server_jaas.conf
. Например:
ZookeeperClient { org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafkapassword" user_kafka="kafkapassword"; };
2. Настройте ACL для разрешения доступа для каждого пользователя:
- Создайте файл с правилами ACL для Kafka, например kafka_acls.sh
, и задайте правильные разрешения для каждого пользователя.
- Например, для пользователя "user1" с разрешениями на чтение и запись в топик "topic1":
bin/kafka-acls.sh --bootstrap-server localhost:9092 --command-config config/adminclient.properties --add --allow-principal User:user1 --topic topic1 --operation Read bin/kafka-acls.sh --bootstrap-server localhost:9092 --command-config config/adminclient.properties --add --allow-principal User:user1 --topic topic1 --operation Write
- Повторите этот шаг для каждого пользователя и топика.
3. Проверьте правильность настройки:
- Запустите Kafka сервер и PHP-приложение для проверки настроек.
- В PHP-приложении настройте SASL-аутентификацию с использованием учетных данных каждого пользователя.
- Убедитесь, что каждый пользователь может выполнять только разрешенные операции на топиках, определенных в ACL.
Таким образом, вы настроите Kafka для использования ACL и SASL для нескольких пользователей, предоставляя им полный контроль над доступом к топикам и разрешая только разрешенные операции, определенные в правилах ACL.