下面按 Debian 上部署 Kafka 的安全配置 给你一个实用清单,覆盖最常见的几块:认证、授权、传输加密、系统级安全。
# 建议使用非 root 用户
sudo adduser kafka
sudo usermod -aG sudo kafka
# 安装 JDK(Kafka 需要)
sudo apt update
sudo apt install -y openjdk-17-jdk
Kafka 目录建议:
/opt/kafka
keytool -genkeypair -alias kafka -keyalg RSA \
-keystore kafka.server.keystore.jks \
-validity 365 -storepass changeit
keytool -export -alias kafka \
-file kafka.server.cert \
-keystore kafka.server.keystore.jks \
-storepass changeit
keytool -import -alias ca \
-file kafka.server.cert \
-keystore kafka.server.truststore.jks \
-storepass changeit
listeners=SSL://:9093
advertised.listeners=SSL://kafka-host:9093
ssl.keystore.location=/opt/kafka/kafka.server.keystore.jks
ssl.keystore.password=changeit
ssl.key.password=changeit
ssl.truststore.location=/opt/kafka/kafka.server.truststore.jks
ssl.truststore.password=changeit
ssl.client.auth=required
listeners=SASL_SSL://:9093
security.inter.broker.protocol=SASL_SSL
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
ssl.* (同上)
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=/opt/kafka/kafka_server_jaas.conf"
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin
kafka-acls.sh --bootstrap-server kafka:9093 \
--command-config admin.conf \
--add --allow-principal User:client \
--operation Read --topic test-topic \
--group test-group
sudo ufw allow 9093/tcp
sudo ufw enable
sudo chown -R kafka:kafka /opt/kafka
chmod 600 /opt/kafka/*.jks
[Unit]
Description=Kafka
After=network.target
[Service]
User=kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
Restart=on-failure
[Install]
WantedBy=multi-user.target
bootstrap.servers=kafka:9093
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
ssl.truststore.location=client.truststore.jks
✅ SASL_SSL + ACL + TLS
✅ 不使用 PLAINTEXT
✅ 定期轮换证书
✅ Kafka 3.x + Debian 12
如果你愿意,我可以:
你现在是 测试环境还是生产环境?