Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
2017/7/6
ヤフー株式会社 梁 浩軒
Kafka・Storm・ZooKeeper
における認証と認可について...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
発表概要
・セキュリティが重要視されている中で、自分たちが持つクラ
スタに対して認証・認可がかけられておらず、情報...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Kafka 概要
分散メッセージングシステム
4
Kafka
Producers Consumers
Produc...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Stormの概要
分散処理基盤
5
Nimbus
Supervisor 1
Worker1(topology)
S...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
ZooKeeper
分散アプリケーション向けの高パフォーマンスな協調サービ
ス
・KafkaのBrokerなどを管...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
利用バージョン
Ambari 2.5 + HDP 2.6
・Kafkaは0.10.2を利用
・Stormは1.1....
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
AmbariとHDPについて
HDP
・HDPはHORTONWORKSがリリースするHadoopディストリ
ビュー...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Kafka/Storm/ZooKeeperの認証と認可(ACL)について
10
認証:あなたはだれか
認可:あなた...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
認証・認可の注意点
• 認証・認可の情報(ユーザ、アクセス可能なTopic情報な
ど)はZooKeeperに書き込...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Kerberos認証・認可
認証
・keytabを元に、KDCサーバがチケットを発行する
・パスワードとIDを認証...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Kerberos認証(チケット発行)
keytabファイルを利用して、KDCサーバにチケットを発行して
もらう
1...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Kerberos認証(Service)
keytabファイルを各サーバに配置して、サービス起動認証を
行う
15
...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
KafkaにおけるKerberos認証(Client)
Produce、Consume、TOPIC操作に対する認証...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
StormのKerberos認証(Client)
Topologyのlogやkillなどに対する認証
17
Sto...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
ZooKeeperのKerberos認証(Client)
各種ACL情報が格納されたフォルダに対する認証
18
Z...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
所感
• 学習コストが高い
• サービス起動に必要なkeytabは、ホスト名をつけるのが慣
例== 全てのホストに...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
クラスタ全体を認証対応させる
Ambari+HDPを利用すると楽
・コンポーネント(Kafka、Zookeeper...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
所感
• HDPのコンポーネントはパッチが当たっているので、I/Fが
違ってはまることがある
• Kafkaのse...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
パスワード認証とは
認証
・ユーザIDとパスワードごとの認証が可能
認可
・TOPICのCONSUMEとPRODU...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Kafkaにおけるパスワード認証
ProduceとConsume時にユーザ名とパスワードを要求
25
Kafka
...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
所感
・認証を行うときパスワードは平文で記述しなければならない
ので、通信を暗号化しておかないと、tcpdumpで...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
IPによるACLとは
・認証
ホストIPごとの認証が可能
・認可
TOPICのCONSUMEとPRODUCE権限な...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
KafkaにおけるIPによるACLについて
TOPIC毎にデータをproduce、consumeできるサーバをIP...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
まとめ
・Kafka+Storm+Zookeeper全体の認証を行いたく、Ambari
でKerberos化がサポ...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
おまけ
セミナー案内
Kerberos化に必要な設定(Kafka,Storm)
SSL/TLS化に必要な設定(Ka...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
セミナー案内
7/26日(水曜日)
Stream Processing Casual Talks #2 at Ya...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Kerberos認証の設定(Ambari Kafka)
34
設定値 変更前 変更後
security.inter...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Kerberos認証の設定(Ambari Storm)
35
設定値 変更前 変更後
Nimbus,ui,supe...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
パスワード認証の設定(Ambari Kafka)
36
設定値 変更前 変更後
listeners PLAINTE...
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
SSL/TLSの設定(Ambari Kafka)
37
設定値 変更前 変更後
listeners PLAINTE...
Upcoming SlideShare
Loading in …5
×

Kafka・Storm・ZooKeeperの認証と認可について #kafkajp

1,326 views

Published on

Apache Kafka Meetup Japan #3 https://kafka-apache-jp.connpass.com/event/58619/ 発表資料

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Kafka・Storm・ZooKeeperの認証と認可について #kafkajp

  1. 1. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 2017/7/6 ヤフー株式会社 梁 浩軒 Kafka・Storm・ZooKeeper における認証と認可について 1
  2. 2. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 発表概要 ・セキュリティが重要視されている中で、自分たちが持つクラ スタに対して認証・認可がかけられておらず、情報漏えいな どのリスクがあった ・Ambari+HDPで構築したKafka+Storm+ZooKeeperクラスタに 対して認証・認可を行ったので紹介する 2
  3. 3. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 3
  4. 4. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Kafka 概要 分散メッセージングシステム 4 Kafka Producers Consumers Producer1 Producer2 Producer3 ・・・ Consumer1 Consumer2 Consumer3 ・・・ Broker1 Topic1 Broker2 Topic2 ・・・
  5. 5. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Stormの概要 分散処理基盤 5 Nimbus Supervisor 1 Worker1(topology) Supervisor 2 Worker2(topology) topology データ 出力
  6. 6. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. ZooKeeper 分散アプリケーション向けの高パフォーマンスな協調サービ ス ・KafkaのBrokerなどを管理 ・StormのSupervisorなどを管理 6
  7. 7. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 利用バージョン Ambari 2.5 + HDP 2.6 ・Kafkaは0.10.2を利用 ・Stormは1.1.0を利用 ・ZooKeeperは3.4.6を利用 7
  8. 8. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. AmbariとHDPについて HDP ・HDPはHORTONWORKSがリリースするHadoopディストリ ビューションの一つ Ambari ・Hadoopクラスタをプロビジョニング、管理、監視するコンポー ネントだが、HDPのdeployに利用されている 8
  9. 9. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 9
  10. 10. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Kafka/Storm/ZooKeeperの認証と認可(ACL)について 10 認証:あなたはだれか 認可:あなたは何をして良いか 認証 Kafka Storm ZooKeeper Kerberos ◯ ◯ ◯ パスワード ◯ ✖️ ◯ SCRAM ◯ ✖️ ✖️ 独自プラグイン ◯ ? ? 認可 Kafka Storm ZooKeeper IP ◯ ✖️ ◯
  11. 11. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 認証・認可の注意点 • 認証・認可の情報(ユーザ、アクセス可能なTopic情報な ど)はZooKeeperに書き込まれる • ZookeeperのACLを有効化しないと、情報の書き換え られる恐れがある 11
  12. 12. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 12
  13. 13. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Kerberos認証・認可 認証 ・keytabを元に、KDCサーバがチケットを発行する ・パスワードとIDを認証で渡す必要がない(チケット) ・一度認証されると、複数のサーバにアクセスすることが可能 13 認可 ・KafkaについてはTOPICのCONSUMEとPRODUCE権限などの設定が可能 ・Stormについては、topologyの操作や、ログの参照権限などが設定可能 ・ZooKeeperについては、ファイルの変更権限などのせっていが可能
  14. 14. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Kerberos認証(チケット発行) keytabファイルを利用して、KDCサーバにチケットを発行して もらう 14 KDC 1 keytab チケット要求 User 1: keytab チケット1(KDC 1) チケット1(KDC 1)
  15. 15. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Kerberos認証(Service) keytabファイルを各サーバに配置して、サービス起動認証を 行う 15 KDC 1 keytab 1 チケット要求 keytab2 チケット要求 keytab3 チケット要求 KafkaBroker 1 チケット1(KDC 1) Broker 2 Broker 3 チケット2(KDC 1) チケット3(KDC 1) チケット1(KDC 1) チケット2(KDC 1) チケット3(KDC 1) 起動OK 起動OK 起動OK Storm ZooKeeper
  16. 16. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. KafkaにおけるKerberos認証(Client) Produce、Consume、TOPIC操作に対する認証 16 User1 Kafkabroker 1 broker 2 broker 3 チケット4 (KDC 1) TOPIC1 Produce OK TOPIC1 Delete OK TOPIC 1 TOPIC 2 TOPIC 3User2 チケット5 (KDC 1) TOPIC3 Consume OK
  17. 17. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. StormのKerberos認証(Client) Topologyのlogやkillなどに対する認証 17 Storm Topology 1 keytab:User1 log User1 チケット1: check log ok kill ok User2 チケット2: check log ng kill ng
  18. 18. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. ZooKeeperのKerberos認証(Client) 各種ACL情報が格納されたフォルダに対する認証 18 ZooKeeper /kafka-acl -Group,Cluster,Topic /storm/credentials -topology names User1 チケット1: read ok User2 チケット2: read ng
  19. 19. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 所感 • 学習コストが高い • サービス起動に必要なkeytabは、ホスト名をつけるのが慣 例== 全てのホストに別々のkeytabファイルを配布する必 要がある!! 19
  20. 20. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 20
  21. 21. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. クラスタ全体を認証対応させる Ambari+HDPを利用すると楽 ・コンポーネント(Kafka、Zookeeper、Storm)全体のKerberos 化をしてくれる ・設定ファイルを規定の場所に配布してくれるので、学習コス トが低い 21
  22. 22. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 所感 • HDPのコンポーネントはパッチが当たっているので、I/Fが 違ってはまることがある • Kafkaのsecurity protocolの定数がHDPの独自定数なので 注意 • 一般(security.inter.broker.protocol=PLAINTEXTSASL) • HDP(security.inter.broker.protocol=SASLPLAINTEXT) • HDP2.5のStormでは、Kerberos認証すると、Topology Deployの方法が変わる • worker_launcherを利用したdeployになるが、resource_directoryを作成し ないと起動しない 22
  23. 23. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 23
  24. 24. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. パスワード認証とは 認証 ・ユーザIDとパスワードごとの認証が可能 認可 ・TOPICのCONSUMEとPRODUCE権限などの設定が可能 24
  25. 25. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Kafkaにおけるパスワード認証 ProduceとConsume時にユーザ名とパスワードを要求 25 Kafka Producer ユーザ1:パスワード TOPIC1 Produce OK Consumer ユーザ2:パスワード TOPIC1 Consume OK Broker 1 Jaas file ユーザ1:パスワード ユーザ2:パスワード Broker 2 Jaas file ユーザ1:パスワード ユーザ2:パスワード TOPIC 1 TOPIC 2
  26. 26. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 所感 ・認証を行うときパスワードは平文で記述しなければならない ので、通信を暗号化しておかないと、tcpdumpで内容が見ら れてしまう ・adminと言われるユーザはACLを設定しなくとも、他人の データを読むことができる 26
  27. 27. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 27
  28. 28. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. IPによるACLとは ・認証 ホストIPごとの認証が可能 ・認可 TOPICのCONSUMEとPRODUCE権限などの設定が可能 28
  29. 29. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. KafkaにおけるIPによるACLについて TOPIC毎にデータをproduce、consumeできるサーバをIPで制 限 29 Kafka TOPIC 1 IP:172.xxx.xxx.xxx IP:162.xxx.xxx.xxx Producer IP:172.xxx.xxx.xxx TOPIC1 Produce OK Consumer IP:162.xxx.xxx.xxx TOPIC1 Consume OK
  30. 30. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 30
  31. 31. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. まとめ ・Kafka+Storm+Zookeeper全体の認証を行いたく、Ambari でKerberos化がサポートされていたので、Kerberosを選択し た ・AmbariでKerberos化を行うと学習コストは低い 31
  32. 32. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. おまけ セミナー案内 Kerberos化に必要な設定(Kafka,Storm) SSL/TLS化に必要な設定(Kafka) パスワード認証に必要な設定(Kafka) 32
  33. 33. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. セミナー案内 7/26日(水曜日) Stream Processing Casual Talks #2 at Yahoo! JAPAN 開催 募集ページ近日公開予定 33
  34. 34. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Kerberos認証の設定(Ambari Kafka) 34 設定値 変更前 変更後 security.inter.broker.protocol なし(新規追加) PLAINTEXTSASL authorizer.class.name なし(新規追加) kafka.security.auth.SimpleAclAuthori zer principal.to.local.class なし(新規追加) kafka.security.auth.KerberosPrincipa lToLocal super.users なし(新規追加) User:kafka zookeeper.set.acl なし(新規追加) true kafka_keytab なし(新規追加) 任意 kafka_principal_name なし(新規追加) 任意 上記に加え、krb5.confの配布が必要(jceファイルも?)
  35. 35. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. Kerberos認証の設定(Ambari Storm) 35 設定値 変更前 変更後 Nimbus,ui,supervisorのkeytabとprincipaleの名前 なし(新規追加) 任意 nimbus.authorizer なし(新規追加) org.apache.storm.security.auth.authorizer.SimpleACLAu thorizer nimbus.impersonation.acl なし(新規追加) { {{storm_bare_jaas_principal}} : {hosts: ['*'], groups: ['*']}} nimbus.impersonation.authorizer なし(新規追加) org.apache.storm.security.auth.authorizer.Impersonatio nAuthorizer drpc.authorizer なし(新規追加) org.apache.storm.security.auth.authorizer.DRPCSimple ACLAuthorizer ava.security.auth.login.config なし(新規追加) 任意の場所 nimbus.admins、nimbus.supervisor.users なし(新規追加) 任意 storm.principal.tolocal なし(新規追加) org.apache.storm.security.auth.KerberosPrincipalToLoc al storm.zookeeper.superACL なし(新規追加) 任意 supervisor.run.worker.as.user なし(新規追加) 任意
  36. 36. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. パスワード認証の設定(Ambari Kafka) 36 設定値 変更前 変更後 listeners PLAINTEXT://localhost:6667 SASL_PLAINTEXT://localhost:6667 security.inter.broker.protocol なし(新規追加) SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol なし(新規追加) PLAIN sasl.enabled.mechanisms なし(新規追加) PLAIN authorizer.class.name undef kafka.security.auth.SimpleAclAuthori zer kafka-env template export KAFKA_KERBEROS_PARAMS=kafka_ kerberos_params export KAFKA_KERBEROS_PARAMS=- Djava.security.auth.login.config=/usr /hdp/current/kafka- broker/config/kafka_jaas.conf
  37. 37. Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. SSL/TLSの設定(Ambari Kafka) 37 設定値 変更前 変更後 listeners PLAINTEXT://localhost:6667 SASL_SSL://localhost:6667 security.inter.broker.protocol なし(新規追加) SASL_SSL ssl.key.password なし(新規追加) 任意 ssl.keystore.location なし(新規追加) 任意 ssl.keystore.password なし(新規追加) 任意 ssl.secure.random.implementation なし(新規追加) 任意 ssl.truststore.location なし(新規追加) 任意 ssl.truststore.password なし(新規追加) 任意

×