kafka ACL权限控制相关问题

漂泊的美好 发表于: 2016-09-03   最后更新时间: 2016-09-03  
  •   7 订阅,1249 游览

1、目前,我的kafka集群部署kerberos后,可以正常运行,在这里非常感谢半兽人给予我的宝贵指导。


2、我现在要启用kafka acl,这是我的配置文件
listeners=SASL_PLAINTEXT://vmw201:9092,
broker.id.generation.enable=false
sasl.kerberos.service.name=kafka
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=false
super.users=User:kafka
zookeeper.connect=vmw201:2181,vmw202:2181,vmw203:2181/kafka

即使一个普通账户都可以实现授权
[root@vmw201 /]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: victor@HADOOP.COM

Valid starting Expires Service principal
09/03/16 20:55:08 09/04/16 20:55:08 krbtgt/HADOOP.COM@HADOOP.COM
renew until 09/10/16 20:55:08
以上这个账户可以对其他账户进行授权,难道不是只有kafka@HADOOP.COM这个超级账户可以授权吗?


第三个问题,我在对Alice进行读与写授权后,
[root@vmw201 /]# kafka-acls --authorizer-properties zookeeper.connect=172.16.18.201:2181 --list
Current ACLs for resource Topic:test2:
User:Alice has Allow permission for operations: Read from hosts: 172.16.18.202
User:Alice has Allow permission for operations: Write from hosts: 172.16.18.202

发现在172,16.18.202这个机子上运行生产者消费者来对test2这个topic进行读写,还是没有权限
kafka-console-producer --broker-list 172.16.18.202:9092 --topic test2 --producer.config /etc/kafka/conf/producer.properties
fdasfafds
[2016-09-03 21:28:31,734] WARN Error while fetching metadata with correlation id 0 : {test2=TOPIC_AUTHORIZATION_FAILED} (org.apache.kafka.clients.NetworkClient)
[2016-09-03 21:28:31,736] ERROR Error when sending message to topic test2 with key: null, value: 9 bytes with error: Not authorized to access topics: [test2] (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)


[root@vmw202 ~]# kafka-console-consumer --bootstrap-server 172.16.18.202:9092 --topic test2 --new-consumer --from-beginning --consumer.config /etc/kafka/conf/consumer.properites
[2016-09-03 21:28:31,040] WARN Error while fetching metadata with correlation id 1 : {test2=TOPIC_AUTHORIZATION_FAILED} (org.apache.kafka.clients.NetworkClient)
[2016-09-03 21:28:31,046] ERROR Unknown error when running consumer: (kafka.tools.ConsoleConsumer$)
org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [test2]

请前辈给出指导!不胜感激!







发表于: 7月前   最后更新时间: 7月前   游览量:1249
上一条: kafka 生产者调用MessageChannel.send() 消息发送确认问题
下一条: 启用kerberos后,producer,consumer 的java API
评论…

  • 客气。
    确认你的客户机的kerberos域是Alice么。
    • 计算机名是hostname吗?principal要设计成“计算机名”,这句话我还是不太明白是什么意思。我脑子比较愚钝,请前辈不要嫌弃,望再指导。配置kafka客户端是按照这个页面上http://orchome.com/270配的,client的principal是kafka-client-1@HADOOP.COM, 那User是指kafka-client-1这个吗?
        • 不好意思,记错了。配置kafka客户端,对于命令行工具是 KafkaClient {
               com.sun.security.auth.module.Krb5LoginModule required
               useTicketCache=true;
           };
          是这么配的,所以client没有principal
            • 是计算机的hostname,这样,你搭建好kerberos后,在来搞ACL+ kerberos,你就明白了。
              首先,你kerberos搭建好之后,用正常客户端来消费和写入数据到集群,这个时候,正常的话因为会拒绝你,必须要进行kerberos认证,如果client也引入了kerberos后,并且能正常的消费和写入数据了,说明kerberos成功。
              然后你在单独部署acl,把kerberos去掉,单独部署acl,等acl也成功了,这个时候你在来搞ACL+kerberos。
              一步一步来,一步一步验证,观察日志,找到问题。
              • 评论…
                • in this conversation
                  提问