我有一个3节点的不安全kafka(v0.10.2.1)群集,主题自动创建和删除被禁用server.properties
auto.create.topics.enable=false
delete.topic.enable=true
然后使用bin/kafka-topics.sh
在群集上创建/更改主题。但是,看起来任何人都可以在知道端点后在集群上创建主题。
有没有办法锁定主题创建/更改到特定主机以防止滥用?
编辑1 :
由于建议使用ACL,我尝试限制主题创建以使用kafka-acls.sh
选择主机。
我将以下内容添加到server.properties
,。
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=true
我尝试了以下限制在localhost上创建主题。
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:* --cluster --operation Create --allow-host 127.0.0.1
但是,我仍然能够使用具有正确端点的kafka-topics.sh
从其他主机创建主题。如果没有身份验证就无法使用ACL吗?
答案 0 :(得分:2)
您需要使用访问控制列表(ACL)来限制此类操作,这意味着要知道调用者是谁,因此您首先需要通过身份验证机制来保护kafka。
ACL:http://kafka.apache.org/documentation.html#security_authz
可以使用SSL或SASL或通过插入自定义提供程序来完成身份验证,请参阅同一文档的前面部分。
禁用自动创建不是一种访问控制机制,它只意味着尝试生成或使用主题不会自动创建它。