Hi,
      When you kerberoize Kafka and enable zookeeper.set.acl to true, all the 
zookeeper nodes created under zookeeper root will have ACLs to allow only Kafka 
Broker’s principal. Since all topic creation will go directly to zookeeper, i.e 
Kafka-topic.sh script creates a zookeeper node under /broker/topics and it 
needs to have Kafka Broker’s principal set as ACL.  If you use any other 
principal it will create issues like you are seeing.
      One option is to disable zookeeper.set.acl. This means anyone who has 
access to zookeeper can create a topic. Better option would be to use 
KafkaAdminClient to createTopics which will send a createTopicRequest through 
brokers which can be authorized. Your CI can have its own principal and you can 
create authorization policy which will allow this principal to create topics.

-Harsha

On Jan 21, 2019, 3:00 AM -0800, Kristjan Peil <kristjanp...@gmail.com>, wrote:
> I'm running Kafka 1.1.1 and Zookeeper 3.4.6 in a cluster, both guarded by
> Kerberos. My app stack includes a module containing topic configurations,
> and my continuous integration build autodeploys changes to topics with
> kafka-topics.sh and kafka-configs.sh.
>
> When I try to use a non-superuser principal to authenticate in the scripts,
> the topic metadata is created by kafka-topics.sh in Zookeeper in such a way
> that Kafka cannot process it to create the actual topics in Kafka brokers -
> partitions are not created in the broker. Also, running kafka-configs.sh to
> alter configs of existing topics gets "NoAuth for /configs/<topicname>".
>
> When I authenticate with the superuser principal "kafka" then everything
> works fine. But making the "kafka" superuser credentials available in CI
> context seems unsecure.
>
> Is it possible to use kafka-topics.sh and kafka-configs.sh in a kerberized
> environment with a non-superuser Kerberos principal and how can this be
> made to happen?
> Can you suggest an alternate solution to achieve CI for Kafka topics?
>
> Best regards,
> Kristjan Peil

Reply via email to