kafka集群使用 SASL/PLAIN 认证
kafka集群使用 SASL/PLAIN 认证
SASL/PLAIN 是一种简单的 username/password 认证机制, 通常与 TLS 加密一起使用, 用于实现安全认证. Kafka 提供了一个默认的 SASL/PLAIN 实现, 可以做扩展后在生产环境使用.
username 在 ACL 等的配置中作为已认证的 Principal.
1.配置 Kafka Broker
在每一个 Kafka broker 的 config 目录中, 添加一个 kafka_server_jaas.conf文件,内容如下:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin"
user_alice="alice"; };
将 JAAS 配置文件的路径作为 JVM 的参数, 并传递到每一个 Kafka broker:
-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf
在 server.properties 中配置 SASL 端口和 SASL 机制. 例如:
listeners=SASL_SSL://host.name:port
security.inter.broker.protocol=SASL_SSL
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
完成上述配置后重启kafka集群。
2.C++客户端使用:
在kfkConsumer.cpp的 CKfkConsumer::Start内和kfkProducer.cpp的 CKfkProducer::Init中添加安全认证的设置:
//安全认证
if (m_pGlobalConf->set("security.protocol", "SASL_PLAINTEXT", strErrMsg) != RdKafka::Conf::CONF_OK) {
printf("%s", strErrMsg.c_str());
}
//sasl.mechanisms
if (m_pGlobalConf->set("sasl.mechanism", "PLAIN", strErrMsg) != RdKafka::Conf::CONF_OK) {
printf("%s", strErrMsg.c_str());
}
if (m_pGlobalConf->set("sasl.username", "alice", strErrMsg) != RdKafka::Conf::CONF_OK) {
printf("%s", strErrMsg.c_str());
}
if (m_pGlobalConf->set("sasl.password", "alice-grg", strErrMsg) != RdKafka::Conf::CONF_OK) {
printf("%s", strErrMsg.c_str());
}
3、Java客户端需要读取配置文件kafka_client_jaas.conf
其内容如下:
kafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="alice"
password="alice"; };
使用示例:
// acl Authorizer
props.put("security.protocol", "SASL_PLAINTEXT");
props.put("sasl.mechanism", "PLAIN");
System.setProperty("java.security.auth.login.config","/Users/book/conf/kafka_client_jaas.conf");
4、Kafka tool 小工具使用介绍 首先在C盘添加client_jaas.conf文件,内容如下图:
找到kafka tool 快捷方式,设置其属性,修改目标拦:“D:\Program Files\kafkatool2\kafkatool.exe” -J-Djava.security.auth.login.config=c:/client_jaas.conf
连接设置如图: