在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