在 Ubuntu 上配置 Kafka 的权限,通常分 文件系统权限、Kafka 自身 ACL(访问控制) 和 网络/安全(SASL/SSL) 三个层面。下面按常见场景说明。
Kafka 通常以非 root 用户运行,例如 kafka。
sudo useradd -m kafka
sudo passwd kafka
sudo mkdir -p /data/kafka
sudo chown -R kafka:kafka /data/kafka
sudo chmod 750 /data/kafka
sudo mkdir -p /var/log/kafka
sudo chown -R kafka:kafka /var/log/kafka
sudo chown -R kafka:kafka /opt/kafka
sudo chmod 640 /opt/kafka/config/*.properties
Kafka 自带 ACL,基于 SASL 或 SSL 认证。
修改 server.properties:
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin
allow.everyone.if.no.acl.found=false
server.properties:
listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
kafka_server_jaas.conf:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_producer="prod-secret"
user_consumer="cons-secret";
};
启动:
export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"
kafka-topics.sh --create \
--topic test \
--bootstrap-server localhost:9092 \
--partitions 1 --replication-factor 1
kafka-acls.sh --authorizer-properties \
bootstrap.servers=localhost:9092 \
--add --allow-principal User:producer \
--operation Write --topic test
kafka-acls.sh --authorizer-properties \
bootstrap.servers=localhost:9092 \
--add --allow-principal User:consumer \
--operation Read --topic test \
--group test-group
kafka-acls.sh --bootstrap-server localhost:9092 --list
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="producer" password="prod-secret";
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="consumer" password="cons-secret";
group.id=test-group
如果只是本地测试,可:
PLAINTEXTlisteners=PLAINTEXT://127.0.0.1:9092
并用 ufw 限制:
sudo ufw allow from 127.0.0.1 to any port 9092
如果你能说明:
我可以给你一份可直接用的配置模板。