kafka叢集使用 SASL/PLAIN 認證
阿新 • • 發佈:2019-01-04
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
連線設定如圖: