Kafka 0.10.2(コマンドライン)でSSLを使用して認証を構成できません-プロデューサーとコンシューマーはトピックへの書き込みまたはトピックからの読み取りができません

シャフィックジャマル

Kafka0.10.2でSSLを使用して認証を構成できません。ブローカー、プロデューサー、コンシューマーにコマンドラインクライアントを使用しています。プロデューサーとコンシューマーはallow.everyone.if.no.acl.found=true、kafkaサーバー構成ファイルでコメントアウトされている場合、テストトピックへの書き込みまたはテストトピックからの読み取りを行うことができません(それ以外の場合は、読み取りと書き込みが可能です)。

公式ドキュメントこのSymantecセットアップConfluentドキュメント、およびさまざまな Stack - Overflow 投稿を精査しましたが、認証を機能させることができません(TLSによる認証は機能していますが)。

私の証明書はIdenTrust / Letsencryptからのものです。コメントを外すallow.everyone.if.no.acl.found=trueと、プロデューサーが接続したときにブローカーログにこれが表示されます。

DEBUG SslTransportLayer:358 - SSL handshake completed successfully with
 peerHost 'devel-2.sjml.com' peerPort 56099 peerPrincipal 'CN=testkafkaconsumer1.eigenroute.com' cipherSuite 
'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384'

そして、プロデューサーは書き込みを行うことができ、コンシューマーはテストトピックから読み取ることができます。ただし、前述の行がコメントアウトされている場合、この出力はログに表示されません。その場合、プロデューサーコマンドラインクライアントは以下を出力します。

WARN Error while fetching metadata with correlation id 10588 :
 {test100=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

以下は、トピックtest100のZookeeperからのACLと、それを一覧表示するコマンドです。

$ bin/kafka-acls.sh --list --authorizer-properties zookeeper.connect=localhost:2181 --topic test100
Current ACLs for resource `Topic:test100`:
    User:CN=testkafkaconsumer1.eigenroute.com has Allow permission for operations: Read from hosts: *
    User:CN=kafka.eigenroute.com has Allow permission for operations: All from hosts: *
    User:CN=testkafkaproducer1.eigenroute.com has Allow permission for operations: Write from hosts: *

以下は、ACLにユーザーを追加するために使用したコマンドです。

./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:CN=kafka.eigenroute.com --operation All --topic test100
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:CN=testkafkaproducer1.eigenroute.com --operation Write --topic test100
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:CN=testkafkaconsumer1.eigenroute.com --operation Read --topic test100

OS:Debian 8 Jessie

ブローカー、コンシューマー、およびプロデューサーの構成ファイルは次のとおりです。

ブローカー構成:

# secure-server-letsencrypt.properties
broker.id=0

delete.topic.enable=true

listeners=SSL://kafka.eigenroute.com:9093
port=9093
advertised.host.name=kafka.eigenroute.com
ssl.keystore.location=/home/kafka/keystore/kafka.keystore.jks
ssl.keystore.password=some-password
ssl.key.password=some-password
ssl.truststore.location=/usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
ssl.truststore.password=some-password
ssl.endpoint.identification.algorithm=HTTPS
ssl.client.auth=required
security.inter.broker.protocol=SSL

authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
super.users=User:CN=testkafkaproducer1.eigenroute.com
# allow.everyone.if.no.acl.found=true

advertised.listeners=SSL://kafka.eigenroute.com:9093

num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600

log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000

コンシューマー構成:

# secure-consumer.properties
zookeeper.connect=127.0.0.1:2181

# timeout in ms for connecting to zookeeper
zookeeper.connection.timeout.ms=6000

#consumer group id
group.id=test-consumer-group

#consumer timeout
#consumer.timeout.ms=5000

security.protocol=SSL
ssl.truststore.location=/usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
ssl.truststore.password=some-password
ssl.keystore.location=/home/kafka/keystore/testkafkaconsumer1.keystore.jks
ssl.keystore.password=some-password
ssl.key.password=some-password

プロデューサー構成:

bootstrap.servers=kafka.eigenroute.com:9093

security.protocol=SSL
ssl.truststore.location=/usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
ssl.truststore.password=some-password
ssl.keystore.location=/home/kafka/keystore/testkafkaproducer1.keystore.jks
ssl.keystore.password=some-password
ssl.key.password=some-password

compression.type=none

ブローカー/サーバー構成で行ったように、プロデューサーユーザーをスーパーユーザーに設定すると、プロデューサーがトピックに書き込むことができるようになるはずです。残念ながら、そうではありません。ブローカーはZookeeperからACLを見つけることができないようです。誰かがこれを修正する方法を提案できますか?ありがとう!

トムベントレー

およびオプションのCLIドキュメント説明されているように、DESCRIBEを許可するだけでなく、コンシューマーのトピックでREADを許可し、コンシューマーグループでもREADを許可する必要が--consumerあり--producerます。

プロデューサーの場合は、DESCRIBEと、プロデューサーのトピックでのWRITE、およびクラスターでのCREATEが必要です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ