2017-06-27 18 views
1

hereおよびhereの指示に従って、Confluent-3.0.1 KafkaクラスタにSSLセキュリティを追加しています。kafka-console-consumerのSSLとACLの設定

以下のLinuxトランザクションスニペ​​ットでは、私のサーバー名をmyserverA、myserverB、myserverCに置き換えました。私はまた、パスワードを隠しました。これはメッセージボードでの最初の投稿です。私はこの投稿のフォーマットが不適切な部分についてはお詫び申し上げます。

私の質問:

何ACLは、すぐ下に示すオフセットを取得するためのアクセスを制御しますか? 設定キーまたはSSLキーを変更する必要はありますか?

ご協力いただきありがとうございます。

kafka-console-producerをSSLで使用してデータを生成することはできましたが、kafka-console-consumerを使用してデータを読み取ることはできません。私は、次のエラーが表示されます

[[email protected] confluent-3.0.1]$ /kafka/confluent-3.0.1/bin/kafka-console-consumer --bootstrap-server myserverA:9093 --zookeeper myserverA:2181/kafka --topic ssl-test --from-beginning --new-consumer --consumer.config /kafka/data/client/ssl/client.properties 
[2017-06-27 13:11:50,462] WARN Attempt to fetch offsets for partition ssl-test-0 failed due to: Not authorized to access topics: [Topic authorization failed.] (org.apache.kafka.clients.consumer.internals.Fetcher) 
[2017-06-27 13:11:50,473] WARN Error while fetching metadata with correlation id 6 : {ssl-test=TOPIC_AUTHORIZATION_FAILED} (org.apache.kafka.clients.NetworkClient) 
[2017-06-27 13:11:50,476] ERROR Unknown error when running consumer: (kafka.tools.ConsoleConsumer$) 
org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [ssl-test] 

私の問題は、クライアント構成、またはインターブローカ構成であればそれは明らかではありません。

私の3つのブローカのそれぞれにserver.propertiesファイルには次のものが含まれます。

###################### SSL Configuration ################ 
# 
ssl.keystore.location=/kafka/data/ssl/keystore/kafka.keystore.jks 
ssl.keystore.password=<hidden for this posting> 
ssl.key.password=<hidden for this posting> 
ssl.truststore.location=/kafka/data/ssl/truststore/kafka.truststore.jks 
ssl.truststore.password=<hidden for this posting> 

ssl.client.auth=requested 
#ssl.cipher.suites= 
ssl.enabled.protocols = TLSv1.2,TLSv1.1,TLSv1 
ssl.keystore.type = JKS 
ssl.truststore.type = JKS 

security.inter.broker.protocol=ssl 

# #### Enable ACLs #### 
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer 
allow.everyone.if.no.acl.found=true 

super.users=User:CN=myserverA,OU=NBCUniversal,O=NBCUniversal,L=NY,ST=NY,C=US;User:myserverB,OU=NBCUniversal,O=NBCUniversal,L=NY,ST=NY,C=US;User:CN=myserverC,OU=NBCUniversal,O=NBCUniversal,L=NY,ST=NY,C=US 

私はproducer.configとconsumer.configに同じclient.propertiesを使用しています。それは以下を含んでいます:

###################### SSL Configuration ################ 
# 
security.protocol=ssl 

ssl.keystore.location=/kafka/data/client/ssl/keystore/kafka.client.keystore.jks 
ssl.keystore.password=<hidden for this posting> 
ssl.key.password=<hidden for this posting> 
ssl.truststore.location=/kafka/data/client/ssl/truststore/kafka.client.truststore.jks 
ssl.truststore.password=<hidden for this posting> 

#ssl.provider= 
#ssl.cipher.suites= 
ssl.enabled.protocols = TLSv1.2,TLSv1.1,TLSv1 
ssl.keystore.type = JKS 
ssl.truststore.type = JKS 

私は、ssl-testトピックで多数のACL許可を持っています。私が試みた:

:スペース、カンマの後、2)SSLのDnamesと1)のSSL Dnamesをコンマの後にスペースを含まない、3)SSL共通名ブローカ本命

[[email protected] ~]# /kafka/confluent-3.0.1/bin/kafka-acls --authorizer-properties zookeeper.connect=myserverA:2181/kafka --list --topic ssl-test 
Current ACLs for resource `Topic:ssl-test`: 
User:CN=Test Client,OU=Test Client Unit,O=Test Client Org,L=LA,ST=CA,C=US has Allow permission for operations: Read from hosts: * 
User:CN=Test Client, OU=Test Client Unit, O=Test Client Org, L=LA, ST=CA, C=US has Allow permission for operations: Read from hosts: * 
User:myserverA has Allow permission for operations: Write from hosts: * 
User:myserverC has Allow permission for operations: Read from hosts: * 
User:CN=myserverB,OU=NBCUniversal,O=NBCUniversal,L=NY,ST=NY,C=US has Allow permission for operations: Write from hosts: * 
User:CN=myserverA,OU=NBCUniversal,O=NBCUniversal,L=NY,ST=NY,C=US has Allow permission for operations: Read from hosts: * 
User:Test Client has Allow permission for operations: Read from hosts: * 
User:Test Client has Allow permission for operations: Write from hosts: * 
User:myserverB has Allow permission for operations: Write from hosts: * 
User:CN=Test Client,OU=Test Client Unit,O=Test Client Org,L=LA,ST=CA,C=US has Allow permission for operations: Write from hosts: * 
User:CN=myserverC,OU=NBCUniversal,O=NBCUniversal,L=NY,ST=NY,C=US has Allow permission for operations: Read from hosts: * 
User:CN=myserverA,OU=NBCUniversal,O=NBCUniversal,L=NY,ST=NY,C=US has Allow permission for operations: Write from hosts: * 
User:CN=myserverB,OU=NBCUniversal,O=NBCUniversal,L=NY,ST=NY,C=US has Allow permission for operations: Read from hosts: * 
User:myserverB has Allow permission for operations: Read from hosts: * 
User:myserverA has Allow permission for operations: Read from hosts: * 
User:CN=Test Client, OU=Test Client Unit, O=Test Client Org, L=LA, ST=CA, C=US has Allow permission for operations: Write from hosts: * 
ser:myserverC has Allow permission for operations: Write from hosts: * 
ser:CN=myserverC,OU=NBCUniversal,O=NBCUniversal,L=NY,ST=NY,C=US has Allow permission for operations: Write from hosts: * 

通常、SSLを介してカフカコンソールプロデューサー機能のため

[[email protected] confluent-3.0.1]$ bin/kafka-console-producer --broker-list myserverA:9093 --topic ssl-test --producer.config /kafka/data/client/ssl/client.properties 
j 
k 
<Ctrl-D> 
+0

トピック*およびグループ*のREADアクセス権が必要な場合は[ドキュメント](http://docs.confluent.io/current/kafka/authorization.html#common-cases)に記載されています。ポストのトピックのACLを指定している間は、コンシューマ・グループのACLがあるかどうかについては言及していません。 –

+0

また、デフォルトでは、ユーザー名はスペースなしのSSL名*です。これをカスタマイズすることもできます。http://docs.confluent.io/current/kafka/authorization.html#further-configuration –

+0

こんにちは@tombentley、素晴らしい提案です。 - 新しい消費者の議論が自動的にグループを作成し、アクセスを許可したことは私の理解であった。しかし、私はクライアントにgroup.id = ssl-test-groupを追加しました。クライアントACLをグループACLに含めました: – RSmith

答えて

0

the documentationによると、消費者は、READ 両方が話題にDESCRIBEだけでなく、消費者団体は、READを必要とする必要があります。オプション--consumerは、これらをすべて一度に設定するための便宜のために使用できます。その例を使用して:

bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \ 
    --add \ 
    --allow-principal User:Bob \ 
    --consumer \ 
    --topic Test-topic \ 
    --group Group-1 
0

私のKafka SSL設定には複数の問題がありました。しかし、kafka-console-consumerを実行している間に、明示的なエラー「WARNパーティションssl-test-0のオフセットをフェッチしようとしました...」は、クライアント証明書がカフカノードBのトラストストアに含まれていなかったことと、 C. *

関連する問題