在Linux下,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.certificate.jks -keystore kafka.server.keystore.jkskeytool -import -alias kafka -file kafka.server.certificate.jks -keystore kafka.client.truststore.jks
配置Kafka:
server.properties,指定密鑰庫和信任庫的位置以及密碼。ssl.keystore.location=/path/to/kafka.server.keystore.jks
ssl.keystore.password=password
ssl.key.password=password
ssl.truststore.location=/path/to/kafka.client.truststore.jks
ssl.truststore.password=password
配置客戶端:
啟用SASL:
server.properties中設置sasl.enabled.mechanisms,如SCRAM-SHA-256或SCRAM-SHA-512。sasl.enabled.mechanisms=SCRAM-SHA-256
創建JAAS配置文件:
kafka_client_jaas.conf文件,配置Kafka服務器和客戶端的身份驗證信息。KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret";
};
修改Kafka配置文件:
sasl.login.config=/path/to/kafka_client_jaas.conf
配置ACL:
kafka-acls.sh腳本設置訪問控制列表,指定哪些用戶或應用有權訪問特定的資源,如主題、消費者群組等。kafka-acls.sh --add --allow-principal User:admin --operation Read --topic my-topic
防火墻配置:
iptables或firewalld設置防火墻規則,僅開放必要的端口。sudo ufw allow 9092
SELinux配置:
啟用審計日志:
監控和告警:
通過上述配置,可以大大提高Kafka服務在Linux上的安全性,確保數據傳輸和存儲的安全。建議定期審查和更新安全配置,以應對不斷變化的安全威脅。