温馨提示×

debian kafka安全如何配

小樊
42
2026-09-12 19:16:57
栏目: 智能运维

下面按从基础到生产可用的顺序,说明在 Debian 上如何配置 Kafka 安全。假设你用的是 Kafka 3.x(KRaft 或 ZooKeeper 模式均可),并以 SASL + SSL 为主(这是最常见、最推荐的方式)。


一、Kafka 安全体系概览

Kafka 安全主要涉及 4 个方面:

  1. 认证(Authentication)
    • SSL(单向 / 双向)
    • SASL(PLAIN / SCRAM / GSSAPI/Kerberos)
  2. 授权(Authorization)
    • ACL(基于用户)
  3. 加密(Encryption in transit)
    • SSL/TLS
  4. 网络安全
    • 防火墙、监听地址、内网隔离

二、最推荐的生产安全组合

SASL_SCRAM + SSL(TLS)

优点:

  • 不需要 Kerberos
  • 密码可动态管理
  • 传输加密
  • 适合 Debian 服务器环境

三、Debian 环境准备

sudo apt update
sudo apt install -y openjdk-17-jdk

Kafka 官方二进制:

wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz
cd kafka_3.7.0

四、SSL/TLS 配置(加密 + 双向认证可选)

1️⃣ 生成 CA(自签)

openssl req -new -x509 -keyout ca-key -out ca-cert -days 3650

2️⃣ 生成 Kafka 服务端证书

keytool -genkey -alias kafka -keystore kafka.server.keystore.jks -validity 3650
keytool -certreq -alias kafka -keystore kafka.server.keystore.jks -file kafka.csr
openssl x509 -req -CA ca-cert -CAkey ca-key -in kafka.csr -out kafka-cert-signed -days 3650 -CAcreateserial
keytool -import -alias ca -keystore kafka.server.keystore.jks -file ca-cert
keytool -import -alias kafka -keystore kafka.server.keystore.jks -file kafka-cert-signed

3️⃣ 信任库(客户端用)

keytool -import -alias ca -keystore kafka.client.truststore.jks -file ca-cert

五、SASL_SCRAM 配置(认证)

1️⃣ 修改 server.properties

listeners=SASL_SSL://:9093
advertised.listeners=SASL_SSL://kafka.example.com:9093

security.inter.broker.protocol=SASL_SSL
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
sasl.enabled.mechanisms=SCRAM-SHA-256

ssl.keystore.location=/opt/kafka/kafka.server.keystore.jks
ssl.keystore.password=keystorepass
ssl.key.password=keypass
ssl.truststore.location=/opt/kafka/kafka.client.truststore.jks
ssl.truststore.password=trustpass

authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin
allow.everyone.if.no.acl.found=false

2️⃣ 创建 SCRAM 用户

bin/kafka-configs.sh \
  --bootstrap-server localhost:9093 \
  --alter --add-config 'SCRAM-SHA-256=[password=admin123]' \
  --entity-type users --entity-name admin

其他用户同理。


六、客户端安全配置示例

Producer / Consumer

security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-256

sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
  username="admin" \
  password="admin123";

ssl.truststore.location=/opt/kafka/kafka.client.truststore.jks
ssl.truststore.password=trustpass

七、ACL 授权(很重要)

bin/kafka-acls.sh \
  --bootstrap-server localhost:9093 \
  --add --allow-principal User:app1 \
  --operation Read --topic orders \
  --group app-group

八、Debian 系统级安全建议

✅ 用普通用户运行 Kafka
✅ 限制 9093 端口只对内网开放
✅ 日志目录权限 700
✅ systemd 管理 Kafka

示例 kafka.service

[Unit]
Description=Apache 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

九、简化方案(测试环境)

如果只是内网测试

  • 只开 SASL_PLAINTEXT
  • 不做 SSL
  • 不暴露公网

⚠️ 不建议生产使用


十、总结推荐

场景 推荐配置
生产 SASL_SCRAM + SSL + ACL
内网 SASL_PLAINTEXT
强安全 Kerberos + SSL

如果你愿意,我可以:

  • 给你 完整可直接用的 server.properties
  • 帮你配 KRaft 模式
  • 或按 Docker / systemd / 云服务器 场景细化

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

0