Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
2017/7/6
ヤフー株式会社 梁 浩軒
Kafka・Storm・ZooKeeper
における認証と認可について
1
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
発表概要
・セキュリティが重要視されている中で、自分たちが持つクラ
スタに対して認証・認可がかけられておらず、情報漏えいな
どのリスクがあった
・Ambari+HDPで構築したKafka+Storm+ZooKeeperクラスタに
対して認証・認可を行ったので紹介する
2
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの認証と認可(ACL)について
• Kerberos認証
• クラスタ全体の認証対応
• パスワード認証
• IPによるACL
• まとめ
3
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
・・・
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Stormの概要
分散処理基盤
5
Nimbus
Supervisor 1
Worker1(topology)
Supervisor 2
Worker2(topology)
topology
データ 出力
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
ZooKeeper
分散アプリケーション向けの高パフォーマンスな協調サービ
ス
・KafkaのBrokerなどを管理
・StormのSupervisorなどを管理
6
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
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
AmbariとHDPについて
HDP
・HDPはHORTONWORKSがリリースするHadoopディストリ
ビューションの一つ
Ambari
・Hadoopクラスタをプロビジョニング、管理、監視するコンポー
ネントだが、HDPのdeployに利用されている
8
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの認証と認可(ACL)について
• Kerberos認証
• クラスタ全体の認証対応
• パスワード認証
• IPによるACL
• まとめ
9
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Kafka/Storm/ZooKeeperの認証と認可(ACL)について
10
認証:あなたはだれか
認可:あなたは何をして良いか
認証 Kafka Storm ZooKeeper
Kerberos ◯ ◯ ◯
パスワード ◯ ✖️ ◯
SCRAM ◯ ✖️ ✖️
独自プラグイン ◯ ? ?
認可 Kafka Storm ZooKeeper
IP ◯ ✖️ ◯
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
認証・認可の注意点
• 認証・認可の情報(ユーザ、アクセス可能なTopic情報な
ど)はZooKeeperに書き込まれる
• ZookeeperのACLを有効化しないと、情報の書き換え
られる恐れがある
11
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの認証と認可(ACL)について
• Kerberos認証
• クラスタ全体の認証対応
• パスワード認証
• IPによるACL
• まとめ
12
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Kerberos認証・認可
認証
・keytabを元に、KDCサーバがチケットを発行する
・パスワードとIDを認証で渡す必要がない(チケット)
・一度認証されると、複数のサーバにアクセスすることが可能
13
認可
・KafkaについてはTOPICのCONSUMEとPRODUCE権限などの設定が可能
・Stormについては、topologyの操作や、ログの参照権限などが設定可能
・ZooKeeperについては、ファイルの変更権限などのせっていが可能
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)
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
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
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
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
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
所感
• 学習コストが高い
• サービス起動に必要なkeytabは、ホスト名をつけるのが慣
例== 全てのホストに別々のkeytabファイルを配布する必
要がある!!
19
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの認証と認可(ACL)について
• Kerberos認証
• クラスタ全体の認証対応
• パスワード認証
• IPによるACL
• まとめ
20
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
クラスタ全体を認証対応させる
Ambari+HDPを利用すると楽
・コンポーネント(Kafka、Zookeeper、Storm)全体のKerberos
化をしてくれる
・設定ファイルを規定の場所に配布してくれるので、学習コス
トが低い
21
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
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの認証と認可(ACL)について
• Kerberos認証
• クラスタ全体の認証対応
• パスワード認証
• IPによるACL
• まとめ
23
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
パスワード認証とは
認証
・ユーザIDとパスワードごとの認証が可能
認可
・TOPICのCONSUMEとPRODUCE権限などの設定が可能
24
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
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
所感
・認証を行うときパスワードは平文で記述しなければならない
ので、通信を暗号化しておかないと、tcpdumpで内容が見ら
れてしまう
・adminと言われるユーザはACLを設定しなくとも、他人の
データを読むことができる
26
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの認証と認可(ACL)について
• Kerberos認証
• クラスタ全体の認証対応
• パスワード認証
• IPによるACL
• まとめ
27
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
IPによるACLとは
・認証
ホストIPごとの認証が可能
・認可
TOPICのCONSUMEとPRODUCE権限などの設定が可能
28
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
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
• Kafka/Storm/ZooKeeperの概要
• Kafka/Storm/ZooKeeperの認証と認可(ACL)について
• Kerberos認証
• クラスタ全体の認証対応
• パスワード認証
• IPによるACL
• まとめ
30
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
まとめ
・Kafka+Storm+Zookeeper全体の認証を行いたく、Ambari
でKerberos化がサポートされていたので、Kerberosを選択し
た
・AmbariでKerberos化を行うと学習コストは低い
31
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
おまけ
セミナー案内
Kerberos化に必要な設定(Kafka,Storm)
SSL/TLS化に必要な設定(Kafka)
パスワード認証に必要な設定(Kafka)
32
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
セミナー案内
7/26日(水曜日)
Stream Processing Casual Talks #2 at Yahoo! JAPAN 開催
募集ページ近日公開予定
33
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ファイルも?)
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 なし(新規追加) 任意
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
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 なし(新規追加) 任意

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

  • 1.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. 2017/7/6 ヤフー株式会社 梁 浩軒 Kafka・Storm・ZooKeeper における認証と認可について 1
  • 2.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. 発表概要 ・セキュリティが重要視されている中で、自分たちが持つクラ スタに対して認証・認可がかけられておらず、情報漏えいな どのリスクがあった ・Ambari+HDPで構築したKafka+Storm+ZooKeeperクラスタに 対して認証・認可を行ったので紹介する 2
  • 3.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 3
  • 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.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. Stormの概要 分散処理基盤 5 Nimbus Supervisor 1 Worker1(topology) Supervisor 2 Worker2(topology) topology データ 出力
  • 6.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. ZooKeeper 分散アプリケーション向けの高パフォーマンスな協調サービ ス ・KafkaのBrokerなどを管理 ・StormのSupervisorなどを管理 6
  • 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.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. AmbariとHDPについて HDP ・HDPはHORTONWORKSがリリースするHadoopディストリ ビューションの一つ Ambari ・Hadoopクラスタをプロビジョニング、管理、監視するコンポー ネントだが、HDPのdeployに利用されている 8
  • 9.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 9
  • 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.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. 認証・認可の注意点 • 認証・認可の情報(ユーザ、アクセス可能なTopic情報な ど)はZooKeeperに書き込まれる • ZookeeperのACLを有効化しないと、情報の書き換え られる恐れがある 11
  • 12.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 12
  • 13.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. Kerberos認証・認可 認証 ・keytabを元に、KDCサーバがチケットを発行する ・パスワードとIDを認証で渡す必要がない(チケット) ・一度認証されると、複数のサーバにアクセスすることが可能 13 認可 ・KafkaについてはTOPICのCONSUMEとPRODUCE権限などの設定が可能 ・Stormについては、topologyの操作や、ログの参照権限などが設定可能 ・ZooKeeperについては、ファイルの変更権限などのせっていが可能
  • 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.
    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.
    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.
    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.
    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.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. 所感 • 学習コストが高い • サービス起動に必要なkeytabは、ホスト名をつけるのが慣 例== 全てのホストに別々のkeytabファイルを配布する必 要がある!! 19
  • 20.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 20
  • 21.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. クラスタ全体を認証対応させる Ambari+HDPを利用すると楽 ・コンポーネント(Kafka、Zookeeper、Storm)全体のKerberos 化をしてくれる ・設定ファイルを規定の場所に配布してくれるので、学習コス トが低い 21
  • 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.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 23
  • 24.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. パスワード認証とは 認証 ・ユーザIDとパスワードごとの認証が可能 認可 ・TOPICのCONSUMEとPRODUCE権限などの設定が可能 24
  • 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.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. 所感 ・認証を行うときパスワードは平文で記述しなければならない ので、通信を暗号化しておかないと、tcpdumpで内容が見ら れてしまう ・adminと言われるユーザはACLを設定しなくとも、他人の データを読むことができる 26
  • 27.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 27
  • 28.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. IPによるACLとは ・認証 ホストIPごとの認証が可能 ・認可 TOPICのCONSUMEとPRODUCE権限などの設定が可能 28
  • 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.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ • Kafka/Storm/ZooKeeperの概要 • Kafka/Storm/ZooKeeperの認証と認可(ACL)について • Kerberos認証 • クラスタ全体の認証対応 • パスワード認証 • IPによるACL • まとめ 30
  • 31.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. まとめ ・Kafka+Storm+Zookeeper全体の認証を行いたく、Ambari でKerberos化がサポートされていたので、Kerberosを選択し た ・AmbariでKerberos化を行うと学習コストは低い 31
  • 32.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. おまけ セミナー案内 Kerberos化に必要な設定(Kafka,Storm) SSL/TLS化に必要な設定(Kafka) パスワード認証に必要な設定(Kafka) 32
  • 33.
    Copyrig ht ©2017 Yahoo Japan Corporation. All Rig hts Reserved. セミナー案内 7/26日(水曜日) Stream Processing Casual Talks #2 at Yahoo! JAPAN 開催 募集ページ近日公開予定 33
  • 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.
    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.
    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.
    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 なし(新規追加) 任意