在Ubuntu上配置Kafka的安全设置主要包括启用SSL/TLS加密、SASL认证、配置防火墙规则、创建用户和角色以及监控和审计等步骤。以下是详细的配置指南:
keytool
工具生成密钥库(keystore)和信任库(truststore)。keytool -genkey -alias kafka -keyalg RSA -keystore kafka.server.keystore.jks -validity 3650
keytool -export -alias kafka -file kafka.server.keystore.jks -keystore kafka.server.truststore.jks
server.properties
,指定密钥库和信任库的位置以及密码。listeners=SSL://your_kafka_broker_ip:9093
security.inter.broker.protocol=SSL
ssl.keystore.location=/path/to/kafka.server.keystore.jks
ssl.keystore.password=your_keystore_password
ssl.key.password=your_key_password
ssl.truststore.location=/path/to/kafka.server.truststore.jks
ssl.truststore.password=your_truststore_password
kafka_server_start.sh
脚本中包含SASL相关的配置。cat <<EOF > /opt/kafka/kafka_2.11-2.1.0/conf/kafka_server_jaas.conf
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret";
};
EOF
sasl.mechanism.inter.broker.protocol=PLAINTEXT
sasl.enabled.mechanisms=SASL_PLAINTEXT
sasl.client.mechanism.inter.broker.protocol=PLAINTEXT
确保Kafka所需的端口(默认为9092)在防火墙中打开。如果需要远程访问Kafka集群,确保外部IP地址也被允许通过防火墙。
sudo ufw allow 9092/tcp
使用Kafka的ACL(访问控制列表)功能来定义用户和角色,为用户分配适当的权限,例如读取、写入或管理主题等。
kafka-topics.sh --zookeeper localhost:2181 --alter --topic test --add-partition 1 --partitions 2
kafka-topics.sh --zookeeper localhost:2181 --alter --topic test --replication-factor 2
启用Kafka的日志记录功能,以便跟踪活动和异常情况。定期审查日志文件,检查潜在的安全问题或异常行为。
log.flush.interval.messages=100000
log.flush.interval.ms=1000
log.retention.hours=10
sudo systemctl daemon-reload
sudo systemctl enable zookeeper
sudo systemctl enable kafka
sudo systemctl start zookeeper
sudo systemctl start kafka