一、操作系统级安全加固
kafka)和组(如kafka)运行Kafka进程,避免使用root。将Kafka安装目录(如/usr/local/kafka)、数据目录(如/var/lib/kafka)、日志目录(如/var/log/kafka)的所有权设为kafka:kafka,并通过chmod设置合理权限(如750),防止未授权访问。guest),降低账户泄露风险;关闭SELinux(若无需复杂权限模型)或配置SELinux策略限制Kafka对系统资源的访问。二、网络安全防护
firewalld或iptables限制Kafka端口(默认9092,SSL端口9093)的访问,仅允许信任的IP地址或网段连接。例如,通过firewall-cmd添加永久规则并重载:firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="9093" protocol="tcp" accept'
firewall-cmd --reload
三、认证机制配置
SCRAM-SHA-256)实现客户端与服务端双向认证。步骤如下:
server.properties中配置:security.inter.broker.protocol=SASL_SSL
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
sasl.enabled.mechanisms=SCRAM-SHA-256
/etc/kafka/jaas.conf),定义用户凭证:KafkaServer {
org.apache.kafka.common.security.scram.ScramLoginModule required
user_admin="admin-secret"
user_user1="user1-secret";
};
server.properties中指定JAAS文件路径:sasl.jaas.config=file:/etc/kafka/jaas.conf。keytool或openssl生成密钥库(keystore.jks)和信任库(truststore.jks);server.properties中配置SSL参数:listeners=SSL://:9093
security.inter.broker.protocol=SSL
ssl.keystore.location=/path/to/keystore.jks
ssl.keystore.password=keystore_pass
ssl.truststore.location=/path/to/truststore.jks
ssl.truststore.password=truststore_pass
security.protocol=SSL及证书路径。四、授权控制(ACL)
使用Kafka内置的ACL功能,按“最小权限”原则限制用户对资源(主题、消费组)的访问。例如,允许用户admin读取my-topic:
kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--add --allow-principal User:admin --operation Read --topic my-topic
全局关闭“未配置ACL则允许访问”的默认策略(allow.everyone.if.no.acl.found=false),确保所有访问均需显式授权。
五、审计与监控
log4j.logger.kafka=INFO),记录客户端操作、认证事件及错误信息;将日志集中存储(如ELK Stack),便于后续审计。六、定期安全维护
/var/lib/kafka)及配置文件(server.properties),测试恢复流程,确保数据可恢复。