温馨提示×

linux kafka怎样保安全

小樊
43
2026-10-08 05:47:30
栏目: 智能运维

在 Linux 上部署 Kafka 时,“保安全”通常包含认证、鉴权、通信加密、网络安全、审计与运维安全等方面。下面按实战角度给你一个较完整的安全方案。


一、基础安全(必须先做)

1. 网络隔离

  • Kafka 不要直接暴露公网
  • 使用内网 / VPC / 防火墙
  • 只开放必要端口:
    • 9092(客户端)
    • 9093(SSL/SASL)
    • 2181(ZooKeeper,如仍使用)

示例(iptables):

iptables -A INPUT -p tcp --dport 9092 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 9092 -j DROP

二、认证(Authentication)

方案对比

方式 说明
SASL/PLAIN 简单,适合内网
SASL/SCRAM 推荐,密码不明文
SASL/GSSAPI Kerberos,企业级
SSL 双向 客户端证书

推荐:SASL_SCRAM + SSL

1. 开启 SSL

server.properties

listeners=SSL://:9093
security.inter.broker.protocol=SSL
ssl.keystore.location=/opt/kafka/ssl/kafka.server.keystore.jks
ssl.keystore.password=***
ssl.keystore.key.password=***
ssl.truststore.location=/opt/kafka/ssl/kafka.server.truststore.jks
ssl.truststore.password=***

2. 配置 SASL_SCRAM

listeners=SASL_SSL://:9093
security.inter.broker.protocol=SASL_SSL
sasl.enabled.mechanisms=SCRAM-SHA-256
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256

创建用户:

kafka-configs.sh --bootstrap-server localhost:9093 \
  --alter --add-config 'SCRAM-SHA-256=[password=secret]' \
  --entity-type users --entity-name appuser

三、鉴权(Authorization)

使用 ACL

server.properties

authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin

给用户授权:

kafka-acls.sh --bootstrap-server localhost:9093 \
  --add --allow-principal User:appuser \
  --operation Read --topic order_topic \
  --group order_group

常用权限:

  • Read / Write(topic)
  • Describe
  • Create
  • Delete

四、数据加密

1. 传输加密(必须)

  • 使用 SSL / TLS
  • 禁用明文端口(9092)

2. 存储加密(可选)

  • Linux LUKS 磁盘加密
  • 云厂商 KMS

五、ZooKeeper 安全(老版本)

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl

Kafka 配:

zookeeper.set.acl=true

六、账号与运维安全

  • Kafka 使用非 root 用户
useradd kafka
chown -R kafka:kafka /opt/kafka
  • 文件权限
chmod 600 server.properties
  • 禁用 JMX 公网暴露
-Dcom.sun.management.jmxremote.host=127.0.0.1

七、审计与监控

  • 开启 Kafka 审计日志
  • 使用:
    • Prometheus + Grafana
    • ELK 收集日志
  • 监控异常消费 / 大量写入

八、最小安全配置示例(推荐起步)

✅ SASL_SCRAM
✅ SSL
✅ ACL
✅ 内网访问
✅ 非 root 运行


如果你愿意,我可以:

  • 给你一份完整 server.properties 安全模板
  • 或按你场景(公网 / 内网 / 云 / Docker / K8s)定制方案

0 踩