温馨提示×

Kafka安全认证在Linux上如何配置

小樊
66
2025-07-08 05:12:08
栏目: 智能运维

在Linux上配置Kafka安全认证主要包括启用SASL认证和配置SSL/TLS加密。以下是详细的步骤:

1. 启用SASL认证

生成JAAS配置文件

  • /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配置文件

  • 编辑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
    

2. 配置SSL/TLS加密

生成密钥库和信任库

  • 使用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
    

修改监听器以使用SSL/TLS协议

  • server.properties中配置监听器以使用SSL/TLS协议:

    listeners = SSL://:9093
    advertised.listeners = SSL://your_kafka_broker_ip:9093
    

3. 启动Kafka服务

  • 使用配置好的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
    

4. 客户端配置

  • 在使用客户端工具(如kafka-topics.shkafka-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
    

0