1. 认证配置(Authentication)
认证是确保Kafka broker与客户端、broker之间身份合法性的基础。Debian环境下常用以下方式:
kafka_server_jaas.conf),内容示例:KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret"; };。然后在server.properties中启用:listeners=SASL_PLAINTEXT://:9092、security.inter.broker.protocol=SASL_PLAINTEXT、sasl.mechanism.inter.broker.protocol=PLAIN、sasl.enabled.mechanisms=PLAIN、sasl.jaas.config=/path/to/kafka_server_jaas.conf。kafka-configs命令创建用户凭证:kafka-configs --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=admin]' --entity-type users --entity-name admin。配置server.properties时,将sasl.mechanism.inter.broker.protocol设为SCRAM-SHA-256,客户端需指定对应的security.protocol(如SASL_SSL)和mechanism。2. 加密传输(Encryption in Transit)
通过SSL/TLS加密broker与客户端、broker之间的通信,防止数据泄露:
keytool命令,示例:keytool -genkey -alias kafka -keystore kafka.server.keystore.jks -validity 3650 -keyalg RSA(生成Keystore),keytool -export -alias kafka -file kafka.server.crt -keystore kafka.server.keystore.jks(导出证书),keytool -import -alias kafka -file kafka.server.crt -keystore kafka.server.truststore.jks(将证书导入Truststore)。server.properties:设置listeners=SSL://:9093、security.inter.broker.protocol=SSL、ssl.keystore.location=/path/to/kafka.server.keystore.jks、ssl.keystore.password=your_password、ssl.truststore.location=/path/to/kafka.server.truststore.jks、ssl.truststore.password=your_password。客户端需对应配置security.protocol=SSL及信任库路径。3. 授权管理(Authorization)
通过访问控制列表(ACL)实现细粒度的资源访问控制,限制用户对topic、消费组等资源的操作权限:
server.properties中设置authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer、allow.everyone.if.no.acl.found=false(无ACL时拒绝访问)、super.users=User:admin(定义超级用户,可管理所有资源)。kafka-acls.sh命令,示例:kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:writer --operation Read,Write --topic test_topic(允许writer用户对test_topic进行读写操作)。4. 操作系统级安全
限制Kafka进程的权限,减少攻击面:
sudo groupadd kafka、sudo useradd -g kafka kafka。sudo chown -R kafka:kafka /path/to/kafka(确保Kafka进程仅能访问自身目录)。ufw或iptables开放必要端口(如SSL端口9093、SASL端口9092),示例:sudo ufw allow 9093/tcp、sudo ufw enable。5. 审计与监控
记录安全相关操作,便于追踪异常行为:
server.properties中设置audit.log.enable=true、audit.log.dir=/path/to/audit/log(指定审计日志目录),记录用户操作(如创建topic、发送消息)和时间戳。