1. 网络层安全配置
firewalld或iptables仅开放Kafka必要的端口(如默认的9092、ZooKeeper的2181),禁止未授权IP访问。例如通过firewall-cmd --permanent --add-port=9092/tcp添加端口并--reload生效。2. 认证机制强化
SCRAM-SHA-256),避免使用弱密码的PLAIN机制。配置server.properties中的security.inter.broker.protocol为SASL_PLAINTEXT或SASL_SSL,并通过jaas.conf文件定义用户凭证(如admin用户的密码)。3. 授权与访问控制
kafka-acls.sh脚本,基于“最小权限原则”为用户或角色分配资源访问权限(如User:admin对my-topic的Read权限)。配置server.properties中的authorizer.class.name为kafka.security.authorizer.AclAuthorizer,并设置allow.everyone.if.no.acl.found=false禁止未定义ACL的默认访问。Create、Delete权限,生产者拥有Write权限,消费者拥有Read权限)。4. 数据传输加密
keystore.jks)和信任库(truststore.jks),配置server.properties中的listeners为SSL://或SASL_SSL://,并指定密钥库路径、密码及支持的协议(如TLSv1.2、TLSv1.3)。客户端需同步配置security.protocol为SSL或SASL_SSL,并提供对应的信任库信息。5. 系统与文件权限管理
kafka)和组(如kafka),确保Kafka进程以该用户身份运行(通过sudo -u kafka启动),避免使用root账户。/usr/local/kafka)、日志目录(如/var/log/kafka)的所有权设置为kafka:kafka,目录权限设为750(用户可读写执行,组可读执行,其他无权限),配置文件(如server.properties)权限设为644(用户可读写,组及其他只读)。6. 安全更新与补丁管理
7. 监控与审计机制
log4j.logger.kafka=INFO),记录Broker、ZooKeeper的操作日志。使用外部审计工具(如auditd)监控Kafka相关目录(如/var/lib/kafka)的访问行为,定期审查日志以发现异常(如未授权登录、大量数据读取)。8. 其他辅助措施