在 Linux 上部署 Kafka 时,“保安全”通常包含认证、鉴权、通信加密、网络安全、审计与运维安全等方面。下面按实战角度给你一个较完整的安全方案。
示例(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
| 方式 | 说明 |
|---|---|
| SASL/PLAIN | 简单,适合内网 |
| SASL/SCRAM | 推荐,密码不明文 |
| SASL/GSSAPI | Kerberos,企业级 |
| 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=***
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
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
常用权限:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
Kafka 配:
zookeeper.set.acl=true
useradd kafka
chown -R kafka:kafka /opt/kafka
chmod 600 server.properties
-Dcom.sun.management.jmxremote.host=127.0.0.1
✅ SASL_SCRAM
✅ SSL
✅ ACL
✅ 内网访问
✅ 非 root 运行
如果你愿意,我可以: