Gearpump セキュリティガイド

これまでのところ、GearpumpはsecureなYarnクラスタでの配備とsecureなHBaseへの書き込みをサポートしています。"secure"はKerberosが有効なことを意味します。さらにセキュリティに関する機能が進行中です。

secureなYarnクラスタでGearpumpをどうやって起動するか

ユーザgear がYarn上でgearpumpを起動するとした場合、対応するprincipal gearがKDCサーバ内で生成されなければなりません。

  1. KDCマシーン上で、ユーザgearのKerberos principalを生成します

    sudo kadmin.local
    

    kadmin.local あるいは kadmin shellの中で、principalを生成します

    kadmin:  addprinc gear/fully.qualified.domain.name@YOUR-REALM.COM
    

    ユーザgear がYarnの各ノード上で存在しなければならないことを思い出してください。

  2. gearpump-2.11-0.8.0.zip をリモートのHDFSフォルダにアップロードし、/usr/lib/gearpump/gearpump-2.11-0.8.0.zipの下にそれを配置すると仮定します。
  3. HDFS フォルダ /user/gear/ を生成し、すべてのread-write権限がユーザ gear に与えられているようにします

    drwxr-xr-x   - gear  gear           0 2015-11-27 14:03 /user/gear
    
  4. クラスパスの下にYARN設定を配置します。"yarnclient launch"を呼ぶ前に、全てのyarn設定ファイルがクラスパスの下に配置されているようにしてください。一般的に、YARNクラスタマシーンの1つからgearpumpのconf/yarnconfへ、全てのファイルを$HADOOP_HOME/etc/hadoopの下に単にコピーすることができます。$HADOOP_HOME はHadoopインストレーションディレクトリを指します。
  5. ジョブをサブミットするために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ファイルはバイト配列でなければならないことに注意してください。

将来の計画

外部コンポーネントの更なるサポート

  1. HDFS
  2. Kafka

Authentication(Kerberos)

Gearpumpのマスター - ワーカー構造はHDFSの NameNode-DataNode と YarnのResourceManager-NodeManagerに似ているため、それらが使う方法に従っても構いません。

  1. ユーザは Gearpumpのために kerberos principal と keytab を生成します
  2. keytabファイルを全てのクラスタノードに配備します。
  3. Gearpumpのconfファイルを設定し、kerberos principalとローカルkeytabファイルの場所を指定します。
  4. マスターとワーカーを開始します。

各アプリケーションは submitter/user を持ちます。異なるアプリケーションに対する異なるログフォルのように、アプリケーションを異なるユーザから分離するでしょう。認証されたユーザのみがアプリケーションをGearpumpのマスターにサブミットすることができます。

認証

Hopefully more on this soon

TOP
inserted by FC2 system