Gearpump セキュリティガイド
これまでのところ、GearpumpはsecureなYarnクラスタでの配備とsecureなHBaseへの書き込みをサポートしています。"secure"はKerberosが有効なことを意味します。さらにセキュリティに関する機能が進行中です。
secureなYarnクラスタでGearpumpをどうやって起動するか
ユーザgear
がYarn上でgearpumpを起動するとした場合、対応するprincipal gear
がKDCサーバ内で生成されなければなりません。
-
KDCマシーン上で、ユーザ
gear
のKerberos principalを生成しますsudo kadmin.local
kadmin.local あるいは kadmin shellの中で、principalを生成します
kadmin: addprinc gear/fully.qualified.domain.name@YOUR-REALM.COM
ユーザ
gear
がYarnの各ノード上で存在しなければならないことを思い出してください。 gearpump-2.11-0.8.0.zip
をリモートのHDFSフォルダにアップロードし、/usr/lib/gearpump/gearpump-2.11-0.8.0.zip
の下にそれを配置すると仮定します。-
HDFS フォルダ /user/gear/ を生成し、すべてのread-write権限がユーザ
gear
に与えられているようにしますdrwxr-xr-x - gear gear 0 2015-11-27 14:03 /user/gear
- クラスパスの下にYARN設定を配置します。"yarnclient launch"を呼ぶ前に、全てのyarn設定ファイルがクラスパスの下に配置されているようにしてください。一般的に、YARNクラスタマシーンの1つからgearpumpの
conf/yarnconf
へ、全てのファイルを$HADOOP_HOME/etc/hadoop
の下に単にコピーすることができます。$HADOOP_HOME
はHadoopインストレーションディレクトリを指します。 -
ジョブをサブミットするためにKerberosの証明書を取得します:
kinit gearpump/fully.qualified.domain.name@YOUR-REALM.COM
これで、keytabあるいはパスワードでログインすることができます。詳細はKerberosのドキュメントを参照してください。
yarnclient launch -package /usr/lib/gearpump/gearpump-2.11-0.8.0.zip
secureなHBaseにどうやって書き込むか
リモートのHBaseのセキュリティが有効な場合、kerberos keytabと対応するprincipal名は gearpump-hbase コネクタのために提供されている必要があります。具体的には、HBaseSinkに渡された UserConfig
オブジェクトは {("gearpump.keytab.file", "\\$keytab"), ("gearpump.kerberos.principal", "\\$principal")}
を含まなければなりません。secureなHBaseに書き込まれるコードの例:
val principal = "gearpump/fully.qualified.domain.name@YOUR-REALM.COM"
val keytabContent = Files.toByteArray(new File("path_to_keytab_file"))
val appConfig = UserConfig.empty
.withString("gearpump.kerberos.principal", principal)
.withBytes("gearpump.keytab.file", keytabContent)
val sink = new HBaseSink(appConfig, "$tableName")
val sinkProcessor = DataSinkProcessor(sink, "$sinkNum")
val split = Processor[Split]("$splitNum")
val computation = split ~> sinkProcessor
val application = StreamApplication("HBase", Graph(computation), UserConfig.empty)
ここで、設定に設定されたkeytabファイルはバイト配列でなければならないことに注意してください。
将来の計画
外部コンポーネントの更なるサポート
- HDFS
- Kafka
Authentication(Kerberos)
Gearpumpのマスター - ワーカー構造はHDFSの NameNode-DataNode と YarnのResourceManager-NodeManagerに似ているため、それらが使う方法に従っても構いません。
- ユーザは Gearpumpのために kerberos principal と keytab を生成します
- keytabファイルを全てのクラスタノードに配備します。
- Gearpumpのconfファイルを設定し、kerberos principalとローカルkeytabファイルの場所を指定します。
- マスターとワーカーを開始します。
各アプリケーションは submitter/user を持ちます。異なるアプリケーションに対する異なるログフォルのように、アプリケーションを異なるユーザから分離するでしょう。認証されたユーザのみがアプリケーションをGearpumpのマスターにサブミットすることができます。
認証
Hopefully more on this soon