1. 程式人生 > >kafka叢集使用 SASL/PLAIN 認證

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
在這裡插入圖片描述
連線設定如圖:
在這裡插入圖片描述
在這裡插入圖片描述