温馨提示×

ubuntu kafka配置如何保证安全

小樊
40
2026-09-14 17:20:38
栏目: 智能运维

在 Ubuntu 上部署 Kafka 时,保证安全通常从 网络隔离、认证、授权、加密、审计与运维规范 几个方面入手。下面按“从基础到进阶”的方式说明常见安全配置。


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

1. 网络与端口隔离

  • 不要将 Kafka 直接暴露公网
  • 使用安全组 / 防火墙限制端口
# 仅允许内网访问
sudo ufw allow from 10.0.0.0/8 to any port 9092
sudo ufw enable

Kafka 默认端口:

  • 9092:客户端
  • 9093:SSL
  • 2181:ZooKeeper(如仍使用)

2. 使用独立用户运行 Kafka

不要用 root 启动 Kafka

sudo useradd -m kafka
sudo su - kafka

3. 限制 ZooKeeper 访问(如仍使用 ZK)

  • 绑定内网 IP
  • 禁止公网访问 2181
# zookeeper.properties
clientPortAddress=10.0.0.10

二、加密(防止数据被窃听)

1. 启用 SSL / TLS(推荐)

生成证书(示例)

keytool -keystore kafka.server.keystore.jks -alias kafka -validity 365 -genkey
keytool -keystore kafka.client.truststore.jks -alias kafka -import -file ca-cert

server.properties

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

三、身份认证(防止非法客户端)

方案选择

  • SSL 认证(简单)
  • SASL + SSL(企业常用)
  • OAuth / LDAP(高级)

1. SASL/PLAIN + SSL(常见)

server.properties

listeners=SASL_SSL://:9093
security.inter.broker.protocol=SASL_SSL
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN

ssl.keystore.location=...
ssl.truststore.location=...

kafka_server_jaas.conf

KafkaServer {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="admin-secret"
  user_admin="admin-secret"
  user_client="client-secret";
};

启动:

export KAFKA_OPTS="-Djava.security.auth.login.config=/path/kafka_server_jaas.conf"

2. 客户端配置示例

security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="client-secret";
ssl.truststore.location=...

四、权限控制(防止越权)

Kafka ACL(推荐)

# 允许 client 读 topic
kafka-acls.sh \
  --authorizer-properties zookeeper.connect=localhost:2181 \
  --add \
  --allow-principal User:client \
  --operation Read \
  --topic test-topic

server.properties:

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

五、KRaft 模式(替代 ZooKeeper,更安全)

Kafka 3.x+ 推荐 KRaft:

  • 减少攻击面
  • 配置更简单
process.roles=broker,controller
controller.quorum.voters=1@localhost:9093

六、运维安全建议

  • ✅ 定期更新 Kafka 版本
  • ✅ 禁用匿名访问
  • ✅ 日志审计(消费 / 生产 / ACL 变更)
  • ✅ 使用 Prometheus + Kafka Exporter 监控异常
  • ✅ 备份关键 topic 数据

七、最小安全配置清单(推荐)

项目 是否必须
内网部署
非 root 用户
SSL
SASL
ACL
版本更新

如果你愿意,我可以:

  • 给你一份 Ubuntu + Kafka SSL/SASL 完整配置示例
  • 或针对 Docker / K8s / 云服务器 场景给方案
  • 或帮你做 安全加固检查清单

你现在是 测试环境还是生产环境

0