在Linux上配置Kafka安全認證主要包括啟用SASL認證和配置SSL/TLS加密。以下是詳細的步驟:
在/etc/kafka
目錄下創建kafka_server_jaas.conf
文件,指定Kafka服務器和客戶端的身份驗證信息。例如:
KafkaServer {
org.apache.kafka.common.security.scram.ScramLoginModule required
username="admin"
password="admin-secret";
};
KafkaClient {
org.apache.kafka.common.security.scram.ScramLoginModule required
username="alice"
password="alice-secret";
};
編輯Kafka的配置文件server.properties
,啟用SASL認證并指定JAAS配置文件的位置:
security.inter.broker.protocol = SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol = PLAINTEXT
sasl.login.class.name = org.apache.kafka.common.security.plain.PlainLoginModule
sasl.enabled.mechanisms = SCRAM-SHA-256
sasl.login.config = /etc/kafka/kafka_server_jaas.conf
使用Java的keytool
工具生成密鑰庫(keystore)和信任庫(truststore):
keytool -genkey -alias localhost -keyalg RSA -keystore kafka.server.keystore.jks -validity 3650
keytool -export -alias localhost -file kafka.server.certificate.jks -keystore kafka.server.keystore.jkskeytool -import -alias localhost -file kafka.server.certificate.jks -keystore kafka.client.truststore.jks
修改Kafka配置文件server.properties
,指定密鑰庫和信任庫的位置以及密碼:
ssl.keystore.location = /path/to/kafka.server.keystore.jks
ssl.keystore.password = your_keystore_password
ssl.key.password = your_key_password
ssl.truststore.location = /path/to/kafka.client.truststore.jks
ssl.truststore.password = your_truststore_password
ssl.enabled.protocols = TLSv1.2
ssl.client.auth = required
在server.properties
中配置監聽器以使用SSL/TLS協議:
listeners = SSL://:9093
advertised.listeners = SSL://your_kafka_broker_ip:9093
使用配置好的server.properties
文件啟動Kafka服務:
export KAFKA_OPTS='-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf'
bin/kafka-server-start.sh config/server.properties
在使用客戶端工具(如kafka-topics.sh
、kafka-configs.sh
等)時,通過--command-config
參數指定JAAS配置屬性文件。
export KAFKA_OPTS="-Djava.security.auth.login.config=/etc/kafka/kafka_client_jaas.conf"
bin/kafka-console-producer.sh --broker-list localhost:9093 --topic test --producer.config client-ssl.properties
bin/kafka-console-consumer.sh --bootstrap-server localhost:9093 --topic test --consumer.config client-ssl.properties