在 Ubuntu 上部署 Kafka 时,常见的安全设置主要包括 认证(SASL)、授权(ACL)、加密(SSL/TLS) 以及 网络与系统层面加固。下面按实用程度给你一个清晰方案。
sudo useradd -m kafka
sudo su - kafka
Kafka 默认端口:
防火墙示例(ufw)
sudo ufw allow 22
sudo ufw allow from 10.0.0.0/8 to any port 9092
sudo ufw enable
server.propertieslisteners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
新建文件:
/opt/kafka/config/kafka_server_jaas.conf
内容:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_user1="user1-secret";
};
修改 kafka-server-start.sh 或加环境变量:
export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/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="user1" password="user1-secret";
keytool -keystore kafka.server.keystore.jks -alias localhost -validity 365 -genkey
listeners=SSL://:9093
ssl.keystore.location=/opt/kafka/ssl/kafka.server.keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
ssl.truststore.location=/opt/kafka/ssl/kafka.server.truststore.jks
ssl.truststore.password=123456
kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--add --allow-principal User:user1 \
--operation Write --topic test
常用权限:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
✅ 最推荐
SASL_SSL + ACL
✅ 简单测试
SASL_PLAINTEXT
❌ 不建议
PLAINTEXT(无任何安全)
如果你愿意,我可以:
你现在是 测试环境还是生产环境?单节点还是集群?