在Ubuntu上配置Kafka的认证与授权设置主要包括启用SASL认证、配置SSL/TLS加密、设置访问控制列表(ACL)、以及配置防火墙和操作系统权限限制等步骤。以下是详细的配置指南:
在Kafka的配置文件 server.properties
中添加以下配置来启用SASL认证:
security.protocol = sasl_plaintext
sasl.mechanism = plain
使用Java的 keytool
工具生成密钥库(keystore)和信任库(truststore):
keytool -genkey -alias kafka -keyalg RSA -keystore kafka.server.keystore.jks
keytool -export -alias kafka -file kafka.server.keystore.jks -keystore kafka.server.truststore.jks
修改Kafka配置文件 server.properties
,指定密钥库和信任库的位置以及密码:
ssl.truststore.location = /path/to/kafka.server.truststore.jks
ssl.truststore.password = password
在客户端配置文件中,添加类似的配置。
通过配置ACL,限制用户对特定主题或分区的访问权限,从而保护数据的安全性。例如,使用以下命令创建一个ACL:
kafka-configs.sh --zookeeper localhost:2181 --add-acl --auth-principal User:Admin --allow-principal User:Reader --topic test
确保Kafka所需的端口(默认为9092)在防火墙中打开:
sudo ufw allow 9092
限制Kafka进程的用户权限,避免不必要的访问。例如,可以将Kafka进程运行在特定的用户和用户组下。
如果需要更高级别的安全性,可以使用Kerberos进行身份验证。需要安装并配置Kerberos,创建Kafka服务主体(service principal),并配置Kafka服务器和客户端以使用Kerberos进行身份验证。