首页主机资讯kafka在centos上如何进行安全设置

kafka在centos上如何进行安全设置

时间2025-11-10 13:30:03发布访客分类主机资讯浏览1360
导读:一、基础环境准备 在CentOS上配置Kafka安全前,需完成以下准备工作: 安装Java环境:Kafka依赖Java 11及以上版本,通过yum install -y java-11-openjdk-devel安装并验证(java -v...

一、基础环境准备

在CentOS上配置Kafka安全前,需完成以下准备工作:

  1. 安装Java环境:Kafka依赖Java 11及以上版本,通过yum install -y java-11-openjdk-devel安装并验证(java -version)。
  2. 下载Kafka二进制包:从Apache官网下载稳定版本(如3.6.0),解压至指定目录(如/usr/local/kafka)。
  3. 启动ZooKeeper:Kafka依赖ZooKeeper管理元数据,通过bin/zookeeper-server-start.sh config/zookeeper.properties启动。

二、认证配置(防止非法访问)

1. SASL/SCRAM认证(推荐)

SCRAM(Salted Challenge Response Authentication Mechanism)通过动态盐值和迭代哈希增强密码安全性,适合大多数生产场景。

  • 创建用户:使用kafka-configs.sh工具添加用户及密码(如producerconsumer):
    bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=producer-secret]' --entity-type users --entity-name producer
    bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=consumer-secret]' --entity-type users --entity-name consumer
    
  • 配置Broker JAAS文件:在config目录下创建kafka_server_jaas.conf,定义SCRAM认证模块及用户凭证:
    KafkaServer {
        
        org.apache.kafka.common.security.scram.ScramLoginModule required
        user_producer="producer-secret"
        user_consumer="consumer-secret";
    
    }
        ;
        
    
  • 修改Broker配置:编辑server.properties,启用SASL/SCRAM认证:
    security.inter.broker.protocol=SASL_PLAINTEXT  # Broker间通信协议
    sasl.enabled.mechanisms=SCRAM-SHA-256          # 支持的认证机制
    sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256  # Broker间使用的机制
    listener.name.sasl_plaintext.scram-sha-256.sasl.jaas.config=file:/usr/local/kafka/config/kafka_server_jaas.conf  # 指定JAAS文件路径
    listeners=SASL_PLAINTEXT://0.0.0.0:9092        # 监听所有网卡
    advertised.listeners=SASL_PLAINTEXT://your-server-ip:9092  # 对外暴露的地址
    
  • 客户端配置:生产/消费者需指定SASL协议及机制:
    # 生产者配置(producer.properties)
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=SCRAM-SHA-256
    sasl.jaas.config='org.apache.kafka.common.security.scram.ScramLoginModule required username="producer" password="producer-secret";
        '
    
    # 消费者配置(consumer.properties)
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=SCRAM-SHA-256
    sasl.jaas.config='org.apache.kafka.common.security.scram.ScramLoginModule required username="consumer" password="consumer-secret";
    '
    
  • 重启Brokersystemctl restart kafka使配置生效。

2. SASL/PLAIN认证(简单场景,明文密码)

若需快速测试,可使用PLAIN机制(需注意密码明文传输风险):

  • 修改Broker JAAS文件
    KafkaServer {
        
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="admin"
        password="admin-secret"
        user_admin="admin-secret";
    
    }
        ;
        
    
  • Broker配置
    security.inter.broker.protocol=SASL_PLAINTEXT
    sasl.enabled.mechanisms=PLAIN
    sasl.mechanism.inter.broker.protocol=PLAIN
    listener.name.sasl_plaintext.plain.sasl.jaas.config=file:/usr/local/kafka/config/kafka_server_jaas.conf
    
  • 客户端配置
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=PLAIN
    sasl.jaas.config='org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";
        '
    

3. SSL/TLS加密(保护数据传输)

结合SASL使用SSL/TLS,实现“认证+加密”的双重安全:

  • 生成证书:使用OpenSSL创建CA、Broker证书及客户端证书(参考搜索结果中SSL配置步骤)。
  • Broker配置
    listeners=SSL://:9093,PLAINTEXT://:9092
    advertised.listeners=SSL://your-server-ip:9093,PLAINTEXT://your-server-ip:9092
    security.inter.broker.protocol=SSL
    ssl.keystore.location=/usr/local/kafka/config/kafka.server.keystore.jks
    ssl.keystore.password=kafka123
    ssl.key.password=kafka123
    ssl.truststore.location=/usr/local/kafka/config/kafka.truststore.jks
    ssl.truststore.password=kafka123
    ssl.enabled.protocols=TLSv1.2,TLSv1.3
    
  • 客户端配置
    security.protocol=SSL
    ssl.keystore.location=/usr/local/kafka/config/client.keystore.jks
    ssl.keystore.password=kafka123
    ssl.truststore.location=/usr/local/kafka/config/kafka.truststore.jks
    ssl.truststore.password=kafka123
    

三、授权配置(控制访问权限)

通过ACL(访问控制列表)实现细粒度的权限管理,限制用户对Topic、消费组等的操作。

  • 启用ACL:修改server.properties,指定授权类并关闭“无ACL时的允许访问”:
    authorizer.class.name=kafka.security.authorizer.AclAuthorizer
    allow.everyone.if.no.acl.found=false
    
  • 创建Super User:定义具有所有权限的超级用户(如admin),用于管理ACL:
    bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=admin-secret]' --entity-type users --entity-name admin
    
  • 添加ACL规则:通过kafka-acls.sh工具为用户分配权限(示例:允许producertest-topic生产消息,允许consumertest-topic消费消息):
    # 生产权限
    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:producer --operation Produce --topic test-topic
    # 消费权限
    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:consumer --operation Consume --topic test-topic --group consumer-group
    
  • 验证ACL:查看test-topic的ACL规则:
    bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --list --topic test-topic
    

四、网络隔离(限制访问范围)

通过CentOS防火墙(firewalld)限制Kafka端口的访问,仅允许可信IP连接:

  • 开放端口:默认Kafka使用9092(PLAINTEXT)和9093(SSL),执行以下命令开放端口:
    sudo firewall-cmd --permanent --add-port=9092/tcp
    sudo firewall-cmd --permanent --add-port=9093/tcp
    sudo firewall-cmd --reload
    
  • 限制IP访问:仅允许特定IP段(如公司内网192.168.1.0/24)访问Kafka端口:
    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="9092" protocol="tcp" accept'
    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="9093" protocol="tcp" accept'
    sudo firewall-cmd --reload
    

五、安全最佳实践

  1. 密码管理:使用密码管理工具(如HashiCorp Vault)存储凭证,避免在配置文件中明文保存;定期轮换密码(建议每90天)。
  2. 证书管理:生产环境使用PKI(公钥基础设施)签发证书,避免自签名证书;定期更新证书有效期。
  3. 日志与监控:启用Kafka审计日志(记录所有客户端操作),结合Prometheus+Grafana监控Kafka运行状态(如CPU、内存、磁盘空间)。
  4. 版本兼容:确保Kafka客户端与服务端版本一致,避免因版本不兼容导致的安全漏洞。
  5. 禁用PLAINTEXT:生产环境移除PLAINTEXT协议,仅保留SASL_SSLSSL协议,减少未加密传输的风险。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: kafka在centos上如何进行安全设置
本文地址: https://pptw.com/jishu/746193.html
kafka配置项在centos如何调整 kafka配置文件在centos怎么修改

游客 回复需填写必要信息