1. 启用强认证机制
认证是Kafka安全的基础,需通过SASL(支持PLAIN、SCRAM-SHA-256、SCRAM-SHA-512等机制)或Kerberos实现客户端与Broker的身份验证。以SASL/SCRAM为例,需完成以下配置:
server.properties中设置:security.protocol=SASL_PLAINTEXT(生产环境建议用SASL_SSL)、sasl.enabled.mechanisms=SCRAM-SHA-256、sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256;kafka_server_jaas.conf),内容为:KafkaServer { org.apache.kafka.common.security.scram.ScramLoginModule required; };kafka-server-start.sh)的环境变量中:-Djava.security.auth.login.config=/path/to/kafka_server_jaas.conf;kafka-configs.sh工具创建用户并设置密码:./kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=your_password]' --entity-type users --entity-name your_user。2. 配置细粒度授权(ACLs)
通过**访问控制列表(ACLs)**限制用户对Kafka资源(主题、消费组、集群操作等)的访问权限,避免未授权操作。需完成以下步骤:
server.properties中启用授权:authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer、allow.everyone.if.no.acl.found=false;kafka-acls.sh工具为用户或用户组分配权限,例如允许用户alice对主题test_topic进行读写操作:./kafka-acls.sh --bootstrap-server localhost:9093 --add --allow-principal User:alice --operation Read --operation Write --topic test_topic;kafka-acls.sh --list查看现有权限,及时移除不必要的权限。3. 强制数据传输加密(SSL/TLS)
加密客户端与Broker、Broker之间的通信,防止数据在传输过程中被窃听或篡改。配置步骤如下:
keytool工具创建密钥库(keytool -genkey -alias kafka_server -keyalg RSA -keysize 2048 -validity 365 -keystore kafka_server.jks);server.properties:security.protocol=SSL(或SASL_SSL)、ssl.keystore.location=/path/to/kafka_server.jks、ssl.keystore.password=your_keystore_password、ssl.key.password=your_key_password、ssl.truststore.location=/path/to/kafka_truststore.jks、ssl.truststore.password=your_truststore_password;producer.properties/consumer.properties:security.protocol=SSL、ssl.truststore.location=/path/to/kafka_truststore.jks、ssl.truststore.password=your_truststore_password。4. 严格网络隔离与防火墙配置
通过网络隔离减少攻击面,仅允许受信任的IP地址访问Kafka集群:
firewall-cmd(CentOS防火墙)开放Kafka端口(默认9092/9093):firewall-cmd --permanent --add-port=9093/tcp(SSL端口)、firewall-cmd --reload;listeners参数,仅绑定内网IP:listeners=SSL://内网IP:9093,避免暴露在公网。5. 定期更新与漏洞修复
保持Kafka及依赖组件(Java、Zookeeper、CentOS系统)的最新版本,及时修复已知安全漏洞:
yum)的更新,使用yum update --security命令更新安全补丁;6. 启用审计日志与监控
通过审计日志记录所有客户端操作(如读、写、创建主题),便于事后追溯和检测异常行为:
server.properties中启用审计日志:audit.log.enable=true、audit.log.dir=/var/log/kafka/audit;logrotate工具),避免审计日志占用过多磁盘空间;7. 强化操作系统安全
Kafka运行在CentOS系统上,需强化系统本身的安全性:
chattr +i命令锁定关键系统文件(如/etc/passwd、/etc/shadow、/etc/group),防止未授权修改;su命令的使用,仅允许特定用户组(如wheel组)切换到root:编辑/etc/pam.d/su,添加auth required pam_wheel.so use_uid;/var/log/messages、/var/log/secure),发现异常登录或操作及时处理。